2.6 DevOps

开发运营一体化(DevOps)全称为Development & Operations,其代表的并非一种具体的实现技术,而是一种方法论,在2009年被提出[1]。DevOps的出现主要是为了打破开发人员与运维人员之间的壁垒和鸿沟,高效地组织团队通过自动化工具相互协作以完成软件生命周期管理,从而更快且频繁地交付高质量、稳定的软件。

云原生倡导敏捷、容错、自动化的特点,使得DevOps成为云原生基础不可或缺的一环,究其根本原因,我们认为可分为以下几点。

1.云原生提供DevOps基础设施

容器与容器编排技术提供了云原生的标准运行环境及基础架构。DevOps的核心点在于软件的持续集成、持续交付,而容器作为云原生应用的标准发布,促进了DevOps在云原生环境下的流行,与此同时,基于容器的PaaS平台,如Kubernetes,可进一步为DevOps的落地提供土壤。

2.微服务架构加速DevOps的应用

微服务架构实现了云原生应用固有的特点,即无状态性、弹性扩展、高内聚、低耦合。在此架构下,试想在生产环境中,由于一个庞大的应用将被拆分为几十上百个服务,每个服务的开发、构建、部署过程必然遵循快速发布的原则,因而在敏捷性、自动化工具链上对流程提出了较高要求。在此基础上,DevOps的自动化、协作、敏捷的文化将会在很大程度上加速微服务的开发效率、降低沟通成本、提升部署速率。

3.DevOps赋能服务网格

服务网格是一套微服务治理框架,主要实现各个微服务间的网络通信,虽然服务网格技术本身与DevOps关系不大,但由于其建立在微服务架构下,因而也须与DevOps相融合,这样才能实现微服务的持续集成和交付。

4.DevOps加速Serverless应用迁移

Serverless为云原生应用的最终形态,即服务端托管云厂商,开发者只需维护好一段函数代码即可,这一新型云计算模式背后秉承的理念实际与DevOps是相互契合的。DevOps遵循消除开发者与运维人员之间的壁垒,而Serverless架构的责任划分原则使得开发人员和运维人员不再有界限。

此外,Serverless应用有更快的交付频率,随着开发团队生产力的不断提升,针对开发者开发的大量函数,如何成功地将其迁移至云厂商取决于DevOps,尤其在早期采用阶段。

[1] https://en.wikipedia.org/wiki/DevOps。