vlambda博客
学习文章列表

中间件牛年展望--云原生5大支柱带来的启示

今年中间件领域的有两大现象:

其一是2015年开始我期待的国内中间件市场开始爆发,伴随着信创进程深入推进,国内对于中间件软件产品的需求不断攀升,产品出货量有很大的增长,而且后续还会有很大的潜力。(可参见我司今年的总结性文章)


其二是云计算厂商开始力推云原生相关技术和概念,试图从研发层面去影响软件系统的设计和基础平台的选型。云原生是一个综合性概念,从指导软件系统设计的角度,还是可以归纳到中间件范畴之中的。


一年之中我被问卷调研过不下10次,国内中间件领域技术和国外差距有多远?这个问题仁者见仁,智者见智。如果单纯从主流使用的技术,可能差别并不是很大,但是从软件产品整体先进性和工程性,又差距甚远。单看像云原生,甚至“中台”这些词汇的提出和使用,又似乎算得上可以引领世界先进技术。让我们剥开技术的迷雾,看看未来几年内真正可能在中间件领域会发生的技术演进。


云原生Cloud Native,是个直译单词,略显生硬。我们可以认为原生就是自家人的意思。云原生,就是开发的软件生于云,长于云。

目前互联网和移动网络普及,我们的生产和生活已经离不开云计算。过去大多数人还会下载蓝光影片到自家的硬盘上,现在基本都是购买视频网站会员了。云计算也逐步进入到之前被认为很难采用开放资源的商业领域,比如政府有了政务云,各个大国企有自建的私有云。

当然目前主要的方式还是在云上创建虚拟机使用计算资源。就像不买彩电,而是从苏宁租个彩电回家,不用时可以退还。


云计算厂商力推的云原生,就是希望客户能够更小粒度的去使用云资源,来激活更多对基础设施的应用和沉淀更多的有价值的数据。

当业务量足够大时,又有定价权,基本就是掌控了业务的话语权。所以,云原生开发,“你的软件应用需要跑在我的云上”。


云原生好不好?答案是:非常好!的确满足了很多软件开发的硬性指标,也真正是技术的正确演进路线。

国外的三大云计算巨头Aws亚马逊云, Azure微软云, GCP谷歌云提出5大支柱(Five Pillars),分别阐述了云原生软件设计的关键点和好处。(FivePillars是伊斯兰教的说法,宗教教义的支柱,可以看出云厂商对这些的重视)


三家先后顺序有所不同,而且GCP还合并成为4条,但内容是一致的。

AWS:Operational excellence, Security, Reliability, Performance efficiency, Cost optimization

Azure:Cost Optimization,Operational Excellence,Performance Efficiency,Reliability,Security

GCP:Operational Excellence, Security, Privavy and Compliance,Reliability, Performance & Cost Optimization


按照加权求和排序优先级为:

  • Operational Excellence 卓越运营,能够有效地支持发展和运行工作负载,获取对运营的洞察,以及不断改进支持流程和程序以实现业务价值。其设计原则为用代码执行运营,频繁进行可逆的小规模更改,经常优化运营流程,预测故障,从所有运营故障中吸取经验教训。

  • Security 安全性,包括保护数据、系统和资产以利用云技术来改善安全性的能力。其设计原则是健壮的身份验证体系,实现可追溯性,在所有层面应用安全措施,自动实施安全最佳实践,保护动态数据和静态数据,限制对数据的访问,做好应对安全性事件的准备。

  • Reliability 可靠性,涵盖相关工作负载按照计划正确而稳定执行其预期功能的能力。它包括在其全部生命周期内运行和测试工作负载的能力。设计原则为,自动从故障中恢复,测试恢复过程,横向扩展以提高聚合工作负载的可用性,无需再预估容量,管理自动化变更。

  • Cost optimization 成本优化,包括以最低价格运行系统来交付业务价值的能力。设计原则包括,践行云财务管理,采用消费模型,衡量整体效率,不再将资金投入到无差别的繁重任务上,对支出进行分析和归因。

  • Performance efficiency 性能效率,包括有效地使用计算资源以满足系统要求的能力以及在需求变化和技术改进时保持此效率的能力。设计原则包括普及先进技术,数分钟内实现全球化部署,使用无服务器架构,提升试验频率,考虑软硬件协同编程。


好吧,我敢肯定你没有看懂上面的内容。因为我是拷贝AWS的文档,讲方法论的文字是比较晦涩的。在软件开发时,需要考虑很多非业务的因素。中间件产品应用服务器用集群来实现可靠性,用户认证授权传输加密等相关功能实现安全性,这些都是用户采用中间件产品时得到的好处。


用户在开发时只需要考虑业务逻辑,把非业务的部分交给基础设施来完成。在云计算中通过各种云服务来实现,用户需要了解、使用、配置这些云设施。用户可以在开发时不混入相应的代码,但一定要了解云有什么样的能力,在设计和开发时就考虑并在运行在云上时使用。这就是云原生的本质。


自己搭建这些“轮子”是非常艰巨的任务,而且也不是所有的云都有相同的能力,即使是三大朵云也是参差不齐的。

参考之前技术的演进发展,我想公有云未来也会有委员会提出统一规范之类的东西,各家遵循来实现可迁移。目前在云原生社区CNCF,已经有一些标准接口被制定。


目前AWS和Azure云各有所长。在Serverless领域AWS的Lamdba遥遥领先,大家有兴趣可以看其中的线程模型的丰富程度就知道了。而Azure则继承了微软在企业软件开发领域的优势,对于企业上云,给出了完整而详尽架构建议。开源项目Dapr更是利器,我认为是今年中的最佳云原生成熟项目。其他云,GCP包括国内的云等相比还是略有不足。


今年国内云厂商阿里云,腾讯云等都在力推云原生,应该说阿里云技术栈还是非常完备的,方法论也比较完整。而腾讯云最近的白皮书主要是“案例”,说实话我看不出很多号称“云原生”的项目或者产品哪里符合。技术界最失败令人沮丧的事情,就是当非技术人员对着给有经验的技术人员侃侃而谈,普及一项技术,比如之前的“中台”,我真心希望“云原生”不要重蹈覆辙。


最后说说中间件在云原生时代能发挥的作用吧。正如上述所分析的,真正的云原生是个好东西,但目前具备能力的云计算能力各不相同,服务也有差别互不兼容。这里有中间件的机会,目前已经有一些领先者可以做到一次开发,多处部署,但还没有非常成熟。我会重点关注这方面技术的发展,并写文章分析介绍关键部分。


最后祝大家新年快乐!期待着明年国内中间件产品不断提升自身能力,继续高奏凯歌。