@lijiansheng
2016-11-30T16:24:43.000000Z
字数 4833
阅读 2239
OpenStack
云计算
开源
人才
正好前几日有人分析了 OpenStack 在企业中的实施仍需努力,其中道出了一个真相,那就是眼下的 OpenStack 厂商有点多,而这一点也是很多企业主管困惑的,犹如生活超市货架上的矿泉水、牙膏一样,眼花缭乱,很是令人苦恼。我去年认真的分析过《为什么基于成功的开源项目的商业产品会失败?》 ,其中也谈到了一些关于基于成功的开源项目的商业产品问题,但是针对具体而言的 OpenStack,这篇文章并不能完全覆盖,更何况视角是基于开源项目的厂商,不是选择开源商品的用户。所以有了此文,希望能够从用户的角度来探讨一下关于选择的问题。对大家有所参考。
正本清源,OpenStack 究竟为何物?OpenStack 是一个开源软件项目,利用此项目可以搭建出类似AWS这样的基础设施即服务的云计算平台,OpenStack 项目背后是由非盈利组织 OpenStack 基金会做日常的运营,这个软件项目的设计是分布式框架的设计思路,比如基本设计原则 ,并孵化了很多的子项目,如计算即服务的Nova(项目代号)、存储即服务的Cinder、网络即服务的Neutron,既然是框架,就会试图兼容所有的主流技术,比如Nova,支持的Hypervisor就有KVM、XEN、ESXi、HyperV、PowerVM等,聪明的读者,你想想就会知道、明白网络和存储所兼容的设备驱动有多少了。
源代码面前人人平等! OpenStack 基金会又是非盈利型组织,OpenStack 项目又是基于 Apache 2.0 许可证发布的,所以人人都可以利用 OpenStack 去做一些商业的活动,比如提供服务、进行二次开发、进行特殊的定制、匹配特别的硬件等等。于是,就有一批成立了公司专门做这件事,就是所谓的 OpenStack 发行版,根据目前维基百科所显示的 OpenStack 商业发行版的厂商有:
那么什么又是 OpenStack 厂商了呢? 这个可能就更加的偏向于商业化一些,简单讲就是所有利用 OpenStack项目来赚钱的公司都可以称之为 OpenStack 厂商。比如专门基于 OpenStack 子项目 Swift 做对象存储的公司——SwiftStack、奥斯数据等,专门利用trove做DBaaS的公司——Tesora,以及利用OpenStack做解决方案的大厂如IBM、华为等传统厂商,加上上面提到的 OpenStack 商业发行版,那么OpenStack 厂商可以泛指围绕OpenStack项目本身及其衍生的生态而进行的商业行为。
这里特别提示一点的就是,本土的几乎所有的基于OpenStack的商业产品,可以归到OpenStack厂商,但不能归到OpenStack发行版中。总结几点发行版的几个明显的特征:
我们这里要强调的一个观点是:作为考虑 OpenStack 完成自己目的的公司,所考虑的因素中非技术性相比要更加重要。笔者在此尝试提出几个因素:
这也是互联网巨头如Google等公司所引领的变革,比如“Forever Beta”,没有传统软件开发的瀑布流程,终点就是被更加优秀的产品所替代。那么过去的商业产品,质量稳定可靠,但是周期过长,无法应对日益加快的业务变更需求,基于原型的迭代,敏捷、Scrum 都是人们试图解决这个问题的途径。
在基础设施领域,渐渐的从大、小型机向PC 服务器转变,软件都靠向开源项目如Linux、Apache等,从操作系统到中间件,再到消息队列,再到大数据分析框架,再到编程语言,再到关系型/非关系型数据库,再到基础设施即服务的云计算平台框架,参与到轰轰烈烈的主流开发中,放弃缓慢而封闭的商业时代。这是一股不可逆转的潮流。
对于企业用户来讲,人才策略是该作出变化了,知识经济时代,更加注重个体自主选择。这里我来讲一个比较实际的例子。
我们知道开源项目有很大一部分的贡献是由商业公司雇佣的人才所开发和贡献的,那么作为公司,如果不参与到社区上游的项目,面临的是更大的边际成本,那么一旦参与了,相应的KPI考核、知识产权、限制恶性跳槽等管理方面的问题就非常的突出了。那么企业必须在这方面作出相应的调整和对策。
上述两项谈到了世界在加速变化,而任何一家公司都是有一段历史的,那么相应的架构、人才构成还是按照十几年前的思路进行搭建的,那么改革总是缓慢而痛苦的,即使是明白不变不行,不变就会被淘汰,但是企业庞大而臃肿,不仅需要强大的执行力,还得有相应的重生的文化。在科技商业公司的历史上,曾经强大的公司因为犹豫不决而被历史无情的抛弃的公司不胜枚举:摩托罗拉移动、诺基亚移动、柯达......
这时企业需要那些抓住时代脉搏的人们的帮助,那些在开源孤独的趟过多年的领头羊,选择他们作为合作伙伴是明智的选择,他们会帮助用户参与到社区,在开源的黄金年代站稳自己的脚跟。
没有一成不变的事情,也没有一劳永逸的事情。所谓的科学就是个不断学习的过程。所谓的技能集合,总是会变得过时,DevOps带来了很大的冲击,尤其是现在很多企业部门的划分,举个最常见的例子,一般分为开发部和运维部,运维部又分为:操作系统、数据库、服务器、网络部、存储部。好吧,云计算快速的伸缩、on-demand要求,这样的划分需要变革,个人的技能集合也需要更新。而这一点Rockwood 在2014年的USENIX会议的分享阐述的再清晰不过了,运维人员需要更新的技能有:
开源的商业化运作是一项异常艰巨的任务,红帽从创建到盈利,花去了几乎20年的时间,作为创始人没有一定的高瞻远瞩能力是无法完成这样一项任务的。一定能够牢牢抓住企业需求的本质,方能获得如此深刻的洞察能力。那么怎么说服用户、用实际作为证明自己、赢得用户和投资人的信任,即公司的愿景、战略、相应的资金都是必须考察的项。
相对技术因素就简单多了,基本上就是实际的问题,存在于眼前的实实在在的问题。
这个强调1万遍,永远有人在纠缠。如果你仍然在纠结OpenStack不能实现静态IP设置,为什么不能添加声卡?那么思维仍在停留在虚拟化阶段。我这里列个表单:
虚拟化管理平台 | IaaS 平台 |
---|---|
statefull VMs:应用定义虚拟机 | Stateless VMs:分布式应用 |
应用程序SLA = 虚拟机的SLA | 应用程序的SLA并不依赖于VM |
SLA要求虚拟机保证高可用 | 需要的时候建立和删除 |
虚拟机scale up: add vCPU,vRAM 等 | 应用程序scale out: 添加更多的VMs |
上线时间按年来计算 | 上线时间按小时和天/月计算 |
适用于传统的应用程序 | 更改应用程序适应cloud |
这是非常关键的一个考量因素,在很多时候,厂商的口号是“自主研发”、”深度定制”,说这话的意思就意味着对上游的代码进行的更改或增加,而这就是说和整个开源社区的主干进行了脱离,这个代价是非常高的,不仅给这些厂商带来沉重的维护负担和高额的时间成本,而且对于用户也意味着被捆绑,随着厂商的失败,用户也面临项目无人维护的风险。
那么针对成功的开源项目,要有衍生的思维方式,也就是说核心的东西,我去积极的参与,维持与上游一致,我做一些上游不做,但对用户有重大意义的事情。就OpenStack项目来说,架构设计是分布式的,要衍生没有想象的那么的困难。
一项新的技术或产品在炒作期的时候,往往将事实考虑过于理想化,假装可以忽略掉历史的包袱。企业自身向IaaS云计算平台转型,面临的最大的问题,恐怕就是原有的IT架构,“革命”的代价太高,那么就不得不慢慢的进行融合,以改革的思路来逐步的进行,那么以 OpenStack 目前的情况来说,比如ITIL、计费等都是留了相应的计量接口,实现交给了第三方的产品。
举个例子来说明一下,全球零售巨头沃尔玛是OpenStack的用户,它同时也是公有云的用户,并自己独立开发了OneOps,且将之开源,以吸引同样需要扩展OpenStack的运维、流程、计费等。以及开源项目ManageIQ。
也就说,这些从OpenStack 本身去解决的思路是错误的,也是牵强的。
OpenStack 总是能和 Linux 扯上千丝万缕的关系,比如现在人们会说,OpenStack是继Linux之后的全球第二大开源项目。也有很多人说 OpenStack 今天的发展之路和Linux当年的发展极为的相似。从技术本身来说,OpenStack 是架构在 Linux 之上的,项目之间有着天然的联系。但是,它们之间也有一些微妙的差别。笔者这里尝试分析一下这些差别究竟在哪里。
Linux 的爆发是伴随着".com时代"“互联网泡沫”而让人们所知晓的,Linux 发行版商业上的成功主要是靠替代Unix服务器操作系统,Linux 据它首次发布到现在有25年的历史,而且因为是通用操作系统,所以应用是非常的广泛,从航空航天、到智能穿戴设备几乎无处不在。
而 OpenStack 是借势云计算的升温而迅速成长的项目,在2010年由NASA和RackSpace联合发布的开源项目,距今也不过短短的6年时间,由于是基础设施,所以用户主要是能够承载得起一定规模的数据中心的用户,如科研、电信运营商、大型互联网公司等。
做发行版的代价,就是从社区主干切出分支,然后对各个组件进行精心的挑选,然后进行测试、修复的迭代,最终交付出稳定可靠的版本,然后开始和上下游(应用、中间件、数据库、服务器、存储、网络)进行相互认证和测试,并提供一定年限的升级、维护承诺,比如3~5年,这里面有非常微妙的平衡艺术。比如选择什么样的安装方式?backport该如何拿捏?就Linux来说,商业上成功的发行版只有三家脱颖而出,要知道Linux的发行版有300多家,在最火的时候,有做超融合的卖硬件的,有纳斯达克上市的,但是现在看来只剩下这三家商业发行版。
OpenStack 的情形就更加的复杂,是一项非常大的系统工程,从一开始大规模的部署到上生产线的调试、运维问题,都超越了传统基础设施架构。
不完全的总结如下几项: