大部分的软件工作者都对Redis、RabbitMQ、Greenplum、Spring等开源项目有所了解,其实这些技术都源自一家公司Pivotal。Pivotal于2013年正式成立,技术积累可以追溯到两家联合创立公司EMC和VMware的部分项目,目前专注于第三方PaaS平台和大数据技术。InfoQ就Pivotal的本地化经验、开源策略、云原生对Pivotal大中华区总经理刘伟光进行了采访。
刘伟光:“本地化”在我看来有三个层级:首先就是产品的汉化,这个是最简单的;其次就是代码公开,国内要求软件的自主可控,因此代码公开也是本地化策略之一。最后一种最为严格,就是要求软件归属于国产品牌。不同行业对本地化程度要求不一样。国内电信和金融两大行业对技术的开放度比较高,并且者两大行业的业务压力也很大,对技术要求也很高。
还有一个现象:中国本土软件公司大部分集中在应用软件开发领域,而国外的软件公司主要做通用化工具类软件。前者为定制化,需要根据客户的业务模型、数据模型进行开发;后者相反,致力于普适性的工具化平台。工具化平台很贴近底层,涉及操作系统、数据库、虚拟化等众多技术,因此相对而言开发难度大。应用类软件直接面对使用者,需要很强的本地化。
我个人认为,外国软件虽然在国外积累了很多最佳实践,但是照搬这些经验往往很难在中国发挥作用。在中国是市场推动IT发展,一个想法往往是在市场中诞生,然后才有对应的软件。外国企业首先不容易紧密贴合中国的市场需求,其次很很难适应市场的快速变化。
我们公司做的是平台软件,直接与底层打交道,对于第一类的产品层面本地化,需要做的部分不像应用软件那样多。其次,我们采用的是开源策略,产品代码是可以开放共享给客户的;我们与客户共同在现场开发的部分知识产权可以一交给客户。因此,第二类的代码公开本地化也实现了。此外,我们已经和中国最大的软件公司之一——浪潮达成OEM协议,可以解释为通过使用国产化品牌并享受Pivotal的技术。这是第三个层级的品牌本地化。
刘伟光:技术开源是全球软件行业的一个大趋势,也与国内的自主可控的要求不谋而合。我们想想传统上,两大不开源的公司是谁呢?微软和甲骨文,他们是纯商业化的公司。但是,今天我们可以看到两家公司的开源策略,他们都投资或者收购了一些开源性的公司,并且与开源公司合作。最不开源的两大公司都在走向这种趋势,我们可以推断出来开源是一种不可逆转的潮流和趋势。
十几年前,我在甲骨文工作的时候,很多公司和个人包括我自己都认为开源不会成事。但是现在开源已经发展得火热。为什么开源发展得怎么块?因为如果一个数据库软件,只有一个公司来开发,公司投入一百人、一千人、一万人,即使再多难免会形成一个思维定式,导致之考虑你自己设想的情况。但是如果放在社区的话,很多人本身就是用户,将用户意见反馈到社区,就会有不同的思想和不同的应用需求。 社区相当于数不胜数的开发者和公司,他们在帮助你实践无数个可能遇到的坑,这个力量是无穷的。 以前,互联网技术还没有发展迅猛的时候,带宽有限,网上交流不频繁,也缺少通信和协同工作的工具,所以一定程度上限制了开源社区的互联。原来一个开源技术可能需要花费十年时间才能变得成熟、才能被人熟知;但是现在有可能两年就被推动起来,比YARN、Spark、Docker这些项目,前两年还没有听说过,今年就特别火。
但是光有项目的开源还不足够,我们可以好好想想历史上最成功的两个开源项目是什么?这里我所说的成功,不是说拥有最多的人去开发,而是说真正被企业接受并且应用到商业环境进行大规模地部署。我认为到目前为止,最成功的两个开源软件,一个是MySQL,一个是RedHat Linux。而这两个软件有个共同的特点,它们背后都有个非常强有力的公司支撑。一个开源软件想要成功,社区火是毫无疑问的必要条件,但是大公司专门的投入、商业的支持才是真正的王道。
刘伟光:在过去,我们常常会认为某种技术是不可替代的,比如关系数据库、某些中间件。但是这种情况在今天已经不存在了,举例说明,随着数据库的发展,没有哪一种数据可以满足一个大型企业所有的数据要求。打个比方基础的数据库就好比物质文明,过去人们满足于物质文明;但是现在精神文明也是必要条件,仅仅依靠原有的数据库技术已经胜任各种要求了。
一个客户的财务软件数据、一个制造厂商的生产线数据或者某些日志数据,每天都会产生很多数据。在过去,这些数据体量很大,不具备存储和处理能力;因此数据是每天删掉的。现在,系统具备了这样的能力,企业就可以思考怎么利用数据产生价值,怎么样形成一个数据打通内部所有的数据;但是在十年前的那种情况下,我们会认为,删除数据就唯一一种做法。
也就是说 拥有变化的思维是很重要的。第一要对开源技术不断认识,第二要对市场不断认识,第三要对企业经营发展不断认识。 现在的技术有了长足的发展,系统可以承受的并发量与以前不可同日耳语,这是大数据技术兴起的重要前提。 大数据追根究底,是要对企业的决策链产生据的的影响。 大数据不是简简单单地做报表,不是仅仅是事后诸葛亮;大数据要产生反馈,形成生产闭环:这是大数据和数据仓库的主要区别。我认为任何企业任何行业最后一定会发展到大数据的阶段。
刘伟光:Cloud Foundary从第一天起就是基于容器去做的,但是我们没有将对应能力作为一个单独的产品在市场上宣传。我认为CaaS不能取替PaaS,因为PaaS做得更完整。
容器技术本身并不是新的技术,它可以追溯到Linux出现的时期。容器的最大价值在于,各类应用可以从一个环境漂移到另外一个环境。开发者不需要关心使用者在什么环境,开发对应的环境可以自动漂移到对方。那么为什么容器技术需要编排呢?因为在企业应用层面来看,如果容器特别多,虽然简化了开发工作,但是加大了管理的复杂度。
这两年Docker快速发展,领跑容器界也是不争的事实。但是还有一个事实需要强调, Docker也是Cloud
Foundary基金会公司的之一,也就是说Docker也是Cloud Foundary的贡献者。
首先,我们融合了很多Docker的先进技术。其次,最重要的改变是Open Container成立。Docker技术还没有成熟,时常有一些版本变化,于是我们一些公司站出来说,需要统一容器的标准。规范标准的书写由家企业在积极地推动着:Pivotal和Docker。
刘伟光:这个问题我想先从DevOps和PaaS谈起。DevOps提出者现在已经加入Pivotal工作。DevOps和云原生是现在比较火的两个概念,这两个概念提出来有一段时间了,为什么这两年变得特别火呢?因为谈云原生必须谈PaaS平台。
IaaS平台专注于底层的硬件资源,与外层的应用还是有一定距离的。PaaS就是连接IaaS与各个应用,PaaS需要关注所有应用的相关部署环境、中间件、runtime、ETL、Web Server、工作流等等。如果不采用PaaS平台,那就需要自行考虑选择中间件、ETL等工具顺接工作流,最后对接IaaS。而PaaS平台代替大家把这些繁琐复杂的工作做了,PaaS对下帮助管理虚拟化,对上可以提供软件平台的存储、监控管理等。我们研发的PaaS平台,用户可以通过看版了解当前所有应用的运行状态、应用之间的关联度、哪些中间件和哪些数据库为服务于哪些应用、数据库的使用资源。这是真正的DevOps核心,DevOps就是打破管理开发测试和生产环境的壁垒,使得维护人员可以通过看版了解系统所有应用的状态。
在没有PaaS实现DevOps之前,如果一个大系统出现问题,很可能都不知道问题出在哪里,不知道去fix哪些东西。这是过去经历中出现的最大的问题,我们经常在半夜被用户叫过去,用户出现问题,所有的软件供应商都过去,几十号人就坐在那里排队,按顺序挨个检查自家供应软件的问题。这是管理上的噩梦,PaaS解决的就是这个问题,人力成本的问题。
回到问题上来,这世界上没有什么先知,只能说 所有的东西都是经过不断积累,不断地总结教训才发展出来。 PaaS作为承载应用的平台,应用的类型是可以完全不一样的,有大的、小的、新的、老的。我们在给客户往我们的PaaS平台上迁移应用时,发现老的应用部署上去后,虽然可以自由伸缩,但是平台提供的很多监控东西,如日志管理、APM管理,是不能使用的,因为老应用的软件包得太死。这样导致客户抱怨说,虽然上云了,但是云平台的好处却不能全部享受。于是接下来就需要帮助客户一点点地解耦整合。
于是我们就反向地想,能不能设计出一个Cloud Native的原型,让客户新开发的应用就可以自然而然地全面享受云平台的服务。Pivotal总结了一些设计原则、编码原则,如果遵循这些原则,就可以完全发挥PaaS云的价值。Pivotal将这些理论化的东西,我们称之为云原生,顾名思义,你的应用是为云而生长的,特别适合在云上进行部署。我们也形成我们的整个云原生的成熟度的这个模型,评估你的成熟度,这个东西也包括:开发的流程是否是采用敏捷开发的方式,是否能够达到在上PaaS之后最佳的这种效果,以及应该使用什么样的敏捷部署工具,敏捷开发的管理工具等等。
刘伟光:客户改变的好处是运维得到很大的效率提升。如果站在CIO的角度来看,整体效率是会得到巨大的提升的;而如果公司选择云作为既定战略,那么团队组织、开发流程和方法都对应地做出改变。
关于敏捷开发受阻的情况,我认为这很正常,任何一种技术都需要一个发展过程,不能说让所有人都统一地接受。目前国内的IT发展10年前,金融和电信两大行业是领先技术的先行者;现在是互联网行业成为技术开拓者。在国外新技术都是产生于制造行业,比如德国奔驰宝马。所以不同行业会有一个技术采用的时间顺序问题。中国的互联网乐于试错去改变自己,他们在软件开发中碰到很多坑;他们在不断地进行技术迭代,抛去冗余的东西:而这是敏捷开发的基本思想。如果你不能实现软件版本的快速迭代,你在市场上就会失去竞争力;需要跟进客户体验进行功能迭代,防止软件同质化,这是软件公司的生命力。
敏捷开发的词十年前就有了,但是一样的道理,没有和云结合在一起。过去是个独立的技术体系,而今天,敏捷开发,与跟持续开发、持续集成、云的理念是相通的;可以通过工具,将敏捷开发理论和云结合在一起,一脉相承。所以逐渐的很多企业在重新审视敏捷开发理念。
感谢徐川对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。