容器时代的数字转型方法论

2019-07-31 02:12青云
软件和集成电路 2019年5期
关键词:虚拟化容器架构

青云

企业需要厘清应用开发与运维全面向云原生和微服务架构转型的根本原因,以及转型过程中涉及的各种关键问题、相关概念之间的关系。

谈到容器与微服务,人们习惯围绕着Docker、Kubernetes、Service Mesh、FaaS、DevOps、Serverless等这些技术和概念在微观层面打转,结果导致企业在落地过程中出现很大的组织问题,进展举步维艰。

本文试图从企业业务核心诉求出发,在数字化转型的核心逻辑下,帮助企业厘清企业应用开发与运维全面向云原生和微服务架构转型的根本原因,以及转型过程中涉及的各种关键问题、相关概念之间的关系。

2013年诞生的Docker,让尘封已久的容器技术再一次兴起,围绕编排调度框架的百舸争流,更是将容器推上了风口浪尖。直到 Kubernetes脱颖而出,成为业界公认的容器编排标准,容器似乎代表了未来的一切,业界对容器技术的追捧更是达到了顶点。然而,如同Gartner经典的技术成熟曲线所描述的,陡然而起的顶峰也意味着即将迎来的一轮幻灭低谷。当技术和生态日益蓬勃与成熟,越来越多的从业人员开始从单纯对技术和理念的追捧,转向对容器落地实践与真实价值的思考。无独有偶,Gartner调研预测,到2020年将有50%的企业会将容器应用于生产环境中。这从侧面反映出业界,特别是最终用户群体,对通过容器技术达成真正业务价值的期许。对于完成了高调亮相的容器和Kubernetes,接下来面临的是走向成熟前的最后一次大考:突破“幻灭低谷”,走入真正的生产实践,创造商业价值。

以“微观塑形”的新业务、新应用

任何技术走入生产实践的终极目标都是塑造企业创新性竞争力,为业务目标服务。

互联网的出现为企业经营带来了巨大的改变:全新的业务形态,更为广阔的营销空间,愈发高效的运转效率。面向未来,企业业务将呈现更为彻底的互联网化与数字化:从面向营销、面向人的消费互联网,通过物联智能延伸到面向生产与供应链(物与流程)的产业互联网,同时将更加依赖通过数据挖掘而形成的数据智能进行决策。企业IT将面临超大规模、无数触点、极高并发、极快速迭代更新等新的挑战,需要更高的弹性和敏捷性。

数字化转型1.0阶段,企业更加关注基础设施的敏捷性改造,并通过系统基础架构(计算、存储、网络)全面云化实现获取敏捷和弹性的第一波升级。而在云计算基础上,完成对更为贴近实际业务的上层应用的架构转型,将大幅提升业务敏捷性,云原生理念应运而生。

云原生的最基本属性是分布式的,但以何种粒度和维度实现模块化的切分,业界一直在不断探索。Gartner提出了一种应用(服务)粒度理论,将应用分成:Macroservice、Miniservice、和Microservice,从粗到细依次对应不同的应用切分粒度。越细的粒度,将带来越大的自由度和敏捷性。微服务架构就是基于这一理念,将应用进行更细粒度的模块化拆分,并通过服务网格、服务治理技术建立起微服务间的通信网络,从而构建起由独立微小服务组织而成的应用(服务)网络集群。由于每个个体相对而言是轻量化的,可以单独开发与部署,使得整个微服务应用具备了高度的动态化能力,可以不断快速迭代演化,也因此具有更强的业务敏捷性和弹性。Gartner基于微服务理念进一步提出了MASA(Mash App and Service Architecture)应用架构,并预测这种理念将成为未来应用架构的主流趋势。应用开发开始从“宏观造像”逐步走入“微观塑形”。

如同爱因斯坦的相对论为我们打开了量子世界之门,微服务理念开启了应用的“微观世界”。但理论的真正落地,仍然需要一整套庞大的系统工程,包括完整的微服务工具集,与之匹配全新的应用开发与管理流程以及符合微服务特性的基础设施平台。

新流程

DevOps不仅仅是技术或者实现技术的工具,更是应用开发的一种组织架构和工作流程。DevOps通过流程的重构希望实现从开发、测试到最终应用部署发布全流程的贯通与高度自动化,从而实现敏捷开发。而正是这种对高度的动态特性的关注,让DevOps方法论与微服务理念找到了共识。

新平台

“轻量化”和“标准化”是容器最显著的特性,而这两个特性也恰恰完美匹配微服务应用开发的需求。轻量化匹配对“微观”资源的需求,而标准化的封装则为组网和标准化通信提供了基础。进入“微观”世界最不可避免的是数量剧增带来的管理复杂性,也因此容器的使用从来不从单体出发,而强调调度编排,这也正是Kubernetes有如压舱石一般的价值所在。同时,业界也普遍认可容器是运行DevOps的最佳平台。

总结下来,企业真正需要的是利用更敏捷灵活的应用交付能力持续锁定创新竞争力,而通过落地微服务完成应用架构升级,则是取得这一目标的关键。完善的容器平台,提供基础设施资源、完整的工具集、流程链及企业级工作平台,为微服务及DevOps的全面落地提供一站式支持,应该成为所有企业容器建设的共同目标。

广义架构黏合剂

以上是从纵向的视角探讨容器对单体应用的重构,而以横向的视角,从宏观拓展的角度,亦可观察到容器在多种新兴应用场景中起到的黏合作用。

容器和云&虚拟化

一方面,容器和虚拟化是互补关系,这一点越来越为大家所认可。在容器最火热的時候,将容器视为虚拟化替代品的论调也不乏受众。但逐渐,大家在实践中认知到容器与虚拟化各自的专长,也逐步区分开各自的应用场景。两者都是基于分布式的架构理念,但是如之上提及的粒度理论,容器更敏捷更轻量,需要全方位的架构重组,适合短平快的新业务;而虚拟化粒度更粗,灵活不及容器,但单体更强壮,更适合需要长期稳定运行的重载应用。另一方面,容器是可以部署在虚拟化之上运行的。特别是在虚拟化大规模普及的背景下,这样的部署方式更贴近用户的使用习惯和真实环境,使用和运维都十分方便灵活,同时虚拟化在隔离性上的优势也将补强容器的安全性。但代价是一定程度的性能损耗,特别是网络性能。与之相应的是选择将容器直接部署在物理机上,架构上减少一层,会大幅降低运维复杂度和性能损耗,同时资源利用率也将显著提升,最终获得更优的TCO(总体拥有成本)。

容器和 Serverless & FaaS

通过Serverless服务,用户可以直接执行代码来处理负载,从而完全避免了应用运行环境或部署所带来的各类消耗,提供极高的需求响应速度,面对突发性或事件驱动型的负载,Serverless更具优势。在目前这个阶段,可以说容器为Serverless概念的落地奠定了技术基础,不少服务商基于容器技术构建Serverless 服务。但未来很有可能,Serverless只是作为从容器到FaaS的过渡阶段的一个代名词,或者以Serverless统称类容器的轻量计算平台。

容器和边缘计算 & IoT

边缘计算并不是把云简单复制到边缘,而是一种体系化的计算框架设计。位居中心的云计算平台和边缘会有分工,处理不同场景下的负载。并且这种分工是动态和敏捷的,从而适应整个架构的状态和实际场景的需求。比如在一个摄像头智能识别图像的IoT场景中,实现图像识别的人工智能算法应该运行在边缘,以便更快速响应来自摄像头的实时需求,但算法不应该是固定不变的,应该在不断学习中迭代升级。完成学习的巨大算力可以由中央的云负担,而边缘节点不断快速迭代的需求则可以通过运行容器环境作为承载,同时还可兼顾边缘节点对轻量化的要求。容器之于边缘之于IoT,是一种更好黏合中心到边缘的架构工具,同时也赋予整个物联网更多的弹性与敏捷。

整体而言,容器作为一种轻量化的计算载体,为更多的场景赋予高度的弹性与敏捷性,也将更多场景有机的黏合在一起。从宏观的视角看,这也是一种广义架构层面的弹性与敏捷,同样在横向上重构了场景连接的方式。

实践中的系统性挑战

真正走入生产实践时,环境现状是复杂多样的,杂糅了多重视角,既需要关注单体应用的开发流程的设计,也需要在宏观全局层面上考量不同平台间的有序衔接,同时兼顾来自管理、组织、人才等层面的挑战。

人才技能

作为最前沿的技术领域,业界对这种新事物充满了好奇。大家最初接触Docker,都在感慨其便利性。但当Kubernetes出现后,很多人都在抱怨其复杂、难用。

一方面,Kubernetes实际上定义了一套新的标准,里面充斥着大量新概念和方法论,需要时间理解掌握。同时Kubernetes作为一个开源项目,关注核心的发展,而将关于易用性和教育培训的问题交给了广大社区自行解决。至今,原生Kubernetes大量的操作还需要通过命令行指令完成,这与企业IT从业者对UI化操作的预期还有相当的距离。而种类繁多且但参差不齐的周边套件对初学者而言同样无所适从。而且,Kuberentes对部署后期的运维也提出了不少新课题,比如容器网络环境、持久化的数据存储方案、运维监控等等。

另一方面,Kubernetes技术横跨企业的系统和研发,打破了固有工作边界。典型企业场景中,应用开发和系统运维是两个团队,大家拥有不同的工作重心、知识结构和和习惯认知。运行好一个集群平台需要有强壮的网络和存储支持,而Kubernetes在这两个方面还处于不断发展阶段,成熟的方案和先例不多,应用开发人员觉得不可掌控;同时运行容器集群是为了运行应用,不是作为一个OS来使用,系统人员又觉得没有头绪,两方都需要理解对方的视角,也需要有全新的理念、方法论、组织架构、工作流程和新的工具,实现两种角色的认知统一和协调推进。

毫无疑问,面对新技能的挑战,企业都会想方设法帮助员工学习提升,但如何确保结果能够得偿所愿呢?现实的情况大多是,很多从业人员抱持着极大的热忱而来,但面对陡峭的学习曲线又望而却步,很快就丧失了坚持的动力,从而很快从好奇转向了抗拒。也许,降低入门门槛,在没有很专业的知识时就能先使用起来,在之后的使用中再不断深入学习提升,创造一种学习实践的正向循环,是更值得考虑的学习路径。

企业 Legacy

容器带来的创新是颠覆性的,而企业既有的应用架构、基础设施、组织架构、业务流程、协同和管理方法等,这些行之有年的稳定体系,不会轻易改变,也不可能轻易改变。

从技术层面,作为整体IT的一部分,容器平台应该恰如其分的融入整体,而绝不应该是一个独立的技术体系。

而一个全新平台想要融入现有企业IT框架,需要提供良好的集成接口,在资源的调度和运维管理上实现统一。同时,专业且舒适的用户体验也不可或缺,从使用操作角度最大程度的兼容现有流程和习惯。

综合来看,容器项目在立项初期,就需要合理安排推进路径,合理选型,尽量减少对现有体系带来大面积冲击,逐步融入,长效演进,避免爆发式急进式的改造。也可以参考云计算在企业内部落地的过程,很多企业先将云平台应用于部分创新业务场景,通过局部业务熟悉掌握云平台的构建和运维能力之后再推进到全部生产环境。

工具的选择

工具是落地的抓手,一方面要足够丰富以满足最直接的需求,而另一方面也需要足够统一以发挥系统性的价值。

业务人员的需求往往是非常直接的:版本发布频率越来越密集该怎么办、如何做测试和生产的隔离、如何做灰度发布、发布到生产环境之前要有审批等,这都是企业每天要面对的具体的事。

容器技术是底层支撑平台,和业务需求之间有一层鸿沟,Kubernetes也不能完全弥补,更需要一个贯穿应用开发、测试、部署、运行管理全流程的解决方案级平台产品,弥合开发和运维之间的认知、习惯与流程鸿沟。这为围绕Kubernetes而延展出的应用生态提供了巨大的空间:向下,基于CNI,CSI等标准定义,大大小小的存储、网络基础架构厂商不断把服务接驳进Kubernetes生态;向上,面向各类业务应用场景不断涌现出各类项目,有开源的也有商业,比如微服务治理的istio、镜像仓库Harbor等,甚至一些远早于k8s的老牌软件也在调整自身去适应容器技术,比如Jenkins孵化的Jenkins x项目。横向,传统IT领域的巨头如IBM、VMware,Rad Hat等,纷纷宣布支持Kubernetes,而大部分云服务商则已经将云端Kubernetes服务列为标配。

但生态快速生长的同时,碎片化的问题也涌现出来。各功能模块虽然选择丰富,但缺乏整合。

好的企业级容器平台不应该只是把各种功能碎片化的拼接起来,提供一个大而杂的技术产品,而应该通过体系化的设计,将企业在业务“微观塑形”过程中涉及的思维、方法、工具与能力有机地整合起来,提供贯通应用开发、测试、部署、运行管理全流程的平台级解决方案,并尽量降低容器技术的使用门槛,简化操作,最大程度兼容企业既有的业务流程和管理习惯。

综上所述,除了满足功能和业务的设计目标,诸多延展而来的问题也需要统筹考虑,完整而系统化的容器平台,应该包括:

·简单易用,快速上手:帮助用户快速入门,激发学习实践的正向循环;

·流程重塑能力:貫通从工具到方法论的完整流程;

·抹平多角色技能与方法gap的能力:让多种角色各得其所,同心协力;

·兼容传统的能力:尊重既有资产,无缝融入现有 IT 管理流程;

·强大的性能支持:健壮的网络存储支撑,确保高效稳定运行;

·安全性:企业级安全体系,包括多租户环境下的安全隔离机制。

展望

容器进阶之路,清晰地描绘出企业数字化转型的历程,从关注IT自身的效率提升起步,逐步将重心转移至对应用和业务的赋能,最终汇聚单点能量打造平台能力,并推动新一轮的技术转型升级。

单一的容器个体是渺小的,但围绕它展开的对动态架构的探索、对微观方法论的思考、对技术价值的反思和对未来应用的设计,则为我们打开了具有无限可能的未来世界大门。容器技术的本质,是面向应用和业务价值再思考与再塑造,而方法则是通过“微观”解构并重塑“宏观”。技术飞速发展,容器时代的数字转型方法论到底该如何掌握?或许每一个企业都有着不同的理解。

猜你喜欢
虚拟化容器架构
基于云控平台雾计算架构的网联汽车路径控制
难以置信的事情
液体对容器底及容器对桌面的压力和压强
取米
VIE:从何而来,去向何方
企业架构的最佳实践
三层架构在企业信息化中的应用
浅谈虚拟化工作原理
用户怎样选择虚拟化解决方案
虚拟化整合之势凸显