随着云架构的不断普及,“未来的软件一定生长于云上”的理念被越来越多的人所接受。云提供了一种面向企业应用实现按需进行资源分配的模型,以一种全新的、高效的方式来部署应用。企业纷纷开始云化转型,希望将传统应用迁移到云端。
虚拟化为云计算奠定了基础,但如果运行模式不做任何改动,仅仅是把虚拟机当做物理机来使用,是不能真正将云平台的优势利用起来的。只有对应用程序架构进行升级改造,才能构成“云应用程序”。
基于云化架构的特点,定义一条能够让应用最大程度利用云的能力、发挥云的价值的最佳路径成为行业迫切的需求,“云原生”应运而生。
云原生应运而生,技术范畴渐成体系
不同的组织对于云原生有不同的理解和定义。从技术角度来看,我们可以认为云原生是一类技术的统称,基于它可以构建出更易于弹性扩展的应用程序;从业务角度来看,云原生可以带来更快的业务响应速度和需求高效实现,云原生可以有效地缩短应用交付的周期,让需求更快地变成代码,代码更快地变成线上的应用,最终为用户服务,通过缩短“time to market”带来切实的业务价值。
从更为抽象的指导思想角度来看,云原生表达了一种未来软件开发生长的管理和实践思路:即软件产生并部署在云上,且遵循一种新的软件开发、发布和运维模式,从而使软件能够最大化发挥云的能力。
2013年,Pivotal(美国云软件开发工具与服务公司)的Matt Stine根据其多年的架构和咨询经验总结出来了一个思想集合,并得到了不断发展和完善。这其中包含了DevOps、持续交付、微服务、敏捷基础设施和12要素等几大主题,不但包括根据业务能力对公司进行文化、组织架构的重组与建设,也包括方法论与原则,还有具体的操作工具。采用基于云原生的技术和管理方法,可以更好地把业务生于云或迁移到云平台,从而享受云的高效和持续的服务能力,这标志着“云原生”比较完整的范畴的形成。
从商业应用角度看,云原生有几个重要的发展节点:2013年,Docker项目正式发布;2014年,Google和Redhat联合发布Kubernetes,用于更加方便、快速对容器进行管理;2015年,由Google、Redhat以及微软等大型云计算厂商以及一些开源公司共同牵头成立了云原生基金会(CNCF)。CNCF这个非盈利组织的初衷为推广孵化和标准化云原生相关的技术,其中包括推动云原生计算可持续发展和帮助云原生技术开发人员快速地构建出色的产品。在此之后,CNCF得到了快速的发展,并逐渐构建出一整套技术。
当前,云原生技术范畴包含以下6个方面。
第一,云应用定义与开发流程,包括应用定义与镜像制作、配置CI/CD、消息和Streaming以及数据库等。
第二,云应用的编排与管理流程,包括了应用编排与调度、服务发现治理、远程调用、API网关以及Service Mesh。
第三,监控与可观测性,这部分所强调的是云上应用如何进行监控、日志收集、Tracing以及在云上如何进行破坏性测试。
第四,云原生的底层技术,比如容器运行时,云原生存储技术和云原生网络技术等。
第五,云原生工具集,在前面这些核心技术点之上,还有很多配套的生态或者周边的工具需要使用,比如流程自动化与配置管理、容器镜像仓库、云原生安全技术和云端密码管理等。
第六,Serverless,这是一种PaaS的特殊形态,它定义了一种更为“极端抽象”的应用编写方式。
容器云加速业务交付效率
云原生有两个重要的思路:第一个是敏捷的不可变基础设施,这一点目前是通过容器镜像来实现,其含义就是应用的基础设施应该是不可变的,是一个自包含、自描述可完全在不同环境中迁移的东西;第二个是云应用编排理论,当前的实现方式就是Kubernetes的“容器设计模式”。
落实到云架构的三层模型中,敏捷的不可变基础设施类似于IaaS层,用来提供计算网络存储等基础资源,这些资源是可编程且不可变的,直接通过API可以对外提供服务。云应用的编排则通过PaaS服务组合成不同的业务能力,实现服务能力的复用;而SaaS能力意味着直接在云资源上部署和应用,客户可以直接面对云原生应用。
在实践中,容器云PaaS平台在应用中得到了落地,逐渐进入商业成熟期的阶段。PaaS本质上是云计算模型中的能力层,它帮助企业提高业务交付的效率、降低企业成本,以云原生技术为基础的容器云PaaS已经成为企业IT基础设施的重要组成部分。
容器云PaaS基础设施层可以部署在虚拟机、物理机以及公有云环境上;平台架构层包含了容器编排调度、容器网络以及容器存储等。容器云PaaS支持的能力包括容器应用管理、微服务、DevOps以及中间件PaaS组件,例如消息队列、大数据、机器学习训练平台等。
在容器云之前,PaaS侧重提供支撑应用运行的应用引擎;而容器云PaaS则是融入DevOps、微服务,解决了应用的完整生命周期管理问题,从而达到我们之前所说的加速企业业务的交付效率,实现更高的弹性和可扩展性等目标。
云原生逐渐成熟,生态拓展至边缘
从云原生的发展状况看,这一领域的发展呈现出值得关注的几个特点。
首先,云原生逐渐在商业环境中得到应用和完善。在网络安全公司Stackrox的一次民意调查当中,2019年是Kubernetes在容器编排中占据主导地位的一年:86%的受访者用它来进行编排工作,远高于2018年的57%。企业Kubernetes平台Diamanti的说法是:“与2018年相比,我们清晰地看到容器管理正在进入企业IT主流。”
其次,Kubernetes在安全性方面承受着巨大压力。面向安全级别要求更高的客户,在初期安全程度较低的项目中表现良好的网络安全面临挑战。与此同时,敏捷开发和DevOps带来的高频代码发布、部署也带来了更高的安全性要求。
最后,伴随着应用从云端向边缘的拓展,云原生也在边缘计算领域得到了发展和落地,进一步拓展了云原生的应用领域:2018年,KubeCon正式公布了新的基于Kubernetes的生态系统KubeEdge,将Kubernetes生态系统从云端扩展到边缘。KubeEdge基于Kubernetes的架构体系并针对边缘场景提供了诸如离线运行能力、边云协同能力等多种特殊能力的支持,将云原生的生态和开发体验延伸到边缘,面向开发者提供统一的开发、部署、管理视图,屏蔽边缘和云端的差异。
云原生这一整套技术体系和方法论,在云化过程中可以起到从统一思想方法到云化战略落地的作用,可以预见将在未来的数字化转型中扮演重要的角色。在这一路径上,云的能力和企业管理能力、业务拓展能力能够在系列最佳实践和配套工具的支持下融汇结合,为实现组织的云战略发挥更为重要的作用。