几天前Citrix手上的CloudStack加入了Apache开源阵营,云计算的市场变得更加热闹。由于CloudStack比OpenStack更成熟,之后OpenStack与CloudStack可能此消彼涨,竞争态势可能慢慢发生变化。不过现在来预测OpenStack与CloudStack谁会最终胜出为时尚早,并且单独讨论这两者没什么意义,需要放到云计算整个市场的大环境去看。这时大家关心的主要问题是以OpenStack和CloudStack为代表的开源云计算解决方案是否会对AWS造成很大的冲击,这也是近期我考虑比较多的问题。
首先,我认为OpenStack等类系统的定位将始终是只做基础IaaS平台,而AWS早已包含了大量更高层次的服务,如RDS、DynamoDB、DevPay/FPS、Beanstalk,之后还会拓展更多更多,因此两者有别。OpenStack等类系统的主要产出可分为以下三类:
1、各类资源的虚拟化,包括:虚拟主机(包括镜像管理)、虚拟存储、虚拟网络(包括网络安全、负载均衡等)
2、公共服务与框架,包括:统一认证登录、Dashboard框架、计费框架、权限模型、监控框架、通知服务、日志与审核框架、组合服务(如AWS的CloudFormation和CloudStack的Template)等
3、硬件方面,包括:硬件参考架构、硬件支撑技术(如Intel Node Manager等)
这些公共基础平台功能都是OpenStack类系统目标所及,但超出这一范围,则基本不会涉及。这是因为各类上层服务如关系数据库、NoSQL、并行计算等等,都不能说具有同等的广泛性与通用性,委员会举手表决时很难获得大多数认可。综观任何开源系统,都有明确的目标和范围,大而杂的系统从未见过。
但是,虽然OpenStack类系统本身并不会变得像AWS那样包罗万象,开源系统之间相互协作,有望形成一个围绕OpenStack类系统为中心的Ecosystem。这一Ecosystem,从功能而言,很可能可以与AWS相匹敌。我们已经见识了Hadoop Ecosystem,同样的场景有可能在云计算领域发生。这一过程,应为中速。一方面,开源Ecosystem的形成历来不会很快,LAMP用了很多年,Hadoop是一个更小的Ecosystem,在得到Facebook这样的大佬扶持下,形成Ecosystem也用了3-4年,而围绕OpenStack是一个更大的Ecosystem。但另一方面,围绕OpenStack类系统的Ecosystem不需要像Hadoop Ecosystem那样有大量的新系统构建,主要是集成。比如RDS可以仅仅是对MySQL的简单包装,NoSQL可以包装包装HBase。具体要多久我想谁也说不准,以目前的态势,我估计过2年OpenStack类系统本身可以成熟,再过2年Ecosystem基本形成。
但是,是不是有了OpenStack这些软件,AWS就会没有生意?这个问题,一步一步来看。首先要明确公有云的定位。有了OpenStack Ecosystem,大型组织来部署自己的私有云会比较容易。虽然这些开源的玩意都不是很鲁棒,但开源的东西玩一段时间也可以production,近期Zynga的例子就能说明问题。大型组织本来就不应该是公有云的目标客户。但对中小型组织,情况则完全不同。并不是说一个系统,大企业都能用,小企业用起来更没问题。对大多数其它开源系统,都是这样,但云计算系统的特点决定了中小型组织单独部署私有云毫无经济效益。还有,这一套Ecosystem别人部署好了给你用很简单,自己去部署并不容易,最近玩OpenStack的同学应该都知道。但这是小case,云计算的规模经济才是命门。
因此,无论OpenStack Ecosystem多么成熟,中小组织自始自终将是AWS等公有云的客户。
那么,会不会将来无论谁拿个OpenStack Ecosystem,提供个公有云服务,就可以跟AWS匹敌呢?这里有两个关键,一是再次强调成本经济性,二是公有云与私有云的区别。成本经济性来自于软件与硬件两个方面。硬件方面,系统规模越大,系统整体表现越平稳,资源配比与调度越可优化,初始投入越被摊薄,人力成本越被摊薄。君不见AWS可以一再降价,而像Reserved Instance这样的特有成本优化技术总是降得最猛。而Reserved Instance很可能在规模不到一定程度都属于玩火自焚的东东。很难知道这个规模效应要多大规模才会终止,但基本上预计总是成千上万服务器。
硬件上的成本经济性决定了通用的公有云将是大玩家的市场。但大玩家也很多,是不是有钱的都可以玩?这就要看软件。硬件只是规模效益的一方面,很多时候软件对降成本的更有效,其中最主要的是多租户共享。之前说了,公有云是服务大量中小客户,他们对各类系统的需求都有,但量都只有一点点。分配个虚拟机,装上软件提供服务,当然可行,但对小客户而言成本实在太高。面向极大量小客户服务时,要进一步降低成本,就要实现优秀的多租户、资源共享与隔离等技术。而完善的多租户类技术,我认为不会在开源的OpenStack Ecosystem中出现,理由有:
1、多租户类技术不是一锤子买卖,而是需要对每个服务都要去实现。MySQL需要做MySQL的多租户,Memcached需要做Memcached的多租户,工作很杂;
2、乐于将代码贡献给开源界的各方对多租户等没什么需求。像Dell、HP、华为这样主要给大企业作私有云的企业乐于将代码贡献在开源界,但大企业的私有云对多租户等的需求弱得多,因为私有云不会有极大量的小客户。
3、基于OpenStack Ecosystem做公有云,面向大量小客户服务的企业自然会研究多租户类技术,但这是他们的命根子,绝对不会把代码开源。
因此,每个想做公有云的玩家,即便将来可以借力于完善的OpenStack Ecosystem,仍然需要在软件研发方面投入比较大的人力。综合以上两点,公有云将是少量有经济实力也有技术实力的大玩家的市场,两者缺一不可。那些认为有了OpenStack就可以做公有云的完全是幻想,当然,由于某些特殊的客户关系,或针对某些特定行业,小规模的做是可以的,也可以挣到钱。
总结一下:
1、OpenStack或CloudStack本身将始终是只做基础IaaS平台;
2、围绕OpenStack类系统有可能形成一个开源的Ecosystem,功能上与AWS类似,但需要比较长的时间;
3、公有云的目标市场是大量的中小组织;
4、开源的Ecosystem中不会诞生公有云非常关键的多租户和资源共享等技术;
5、公有云主要是少量有经济实力也有技术实力的大玩家的市场。