云原生十二要素应用​

时间:2022-10-28 21:58:00

      云原生改变了应用研发的模式,也带来了技术上的变革,促使我们需要考虑更多的运营治理的原则和方法。这里我们简要总结一下云原生架构经典的设计原则12要素原则。

1基准代码∶一份基准代码、多份部署。

企业一般会采用代码版本控制系统来跟踪管理所有修订版本的代码库,这样就只需要一份代码,却可以同时存在多份部署,如图1所示。每份部署相当于运行了一个应用的实例。

云原生十二要素应用​

图1一份基准代码多份部署


2依赖显式声明依赖关系。

应用程序不会隐式依赖系统级类库。它一定通过依赖清单确切地声明所有依赖项。

3配置在环境中存储配置。

十二要素应用推荐将应用的配置存储于环境变量中,如图2所示。这允许应用程序非常方便地在不同的部署间修改,而不需要改动一行代码。

云原生十二要素应用​

2在环境中存储配置

4后端服务把后端服务当作附加资源。

后端服务是指程序运行所需要的通过网络调用的各种服务,符合规则的应用程序应该可以在不进行任何代码改动的情况下,将本地数据库切换至异地或者云上的数据库服务。

5构建、发布、运行∶严格分离构建、发布和运行。

基准代码通过构建、发布和运行三个阶段转化成一份部署。

6进程以一个或多个无状态进程运行应用。

符合十二要素的应用程序的进程必须是无状态且无共享的。任何需要持久化的数据都需要存储在后端服务内。

7端口绑定∶通过端口绑定提供服务。

符合十二要素的应用程序可以自我加载而不依赖于任何网络服务器。

8并发通过进程模型进行扩展。

在十二要素应用中的进程主要借鉴了UNIX守护进程模型,不同的工作分配给不同类型的进程处理。

9易处理∶快速启动和优雅终止,最大化健壮性。

十二要素应用的进程是可分解的它可以瞬间开启或者停止。这有利于快速、弹性伸缩应用,迅速部署变化的代码或配置。

10)开发环境与线上环境等价∶尽可能保持开发、预发布、线上环境相同。

必须缩小本地和生产环境的差异,要求不同环境下的后端服务也要一致

11)日志把日志当作事件流。

日志使得应用程序运行的动作变得透明。在十二要素应用中则不应该考虑存储到自己的输出流,不应该试图去写或者管理日志文件。

(12)管理进程把后台管理当作一次性进程运行。

进程构成是指用来处理应用的常规业务的一组进程。这也是十二要素的要求∶一次性管理进程应该和正常的常驻进程使用同样的环境。这些管理进程和任何其他进程一样使用相同的代码和配置,基于某个发布版本运行。后台管理代码应该随其他应用程序代码一起发布,从而避免同步问题。

在这些原则中,一个核心的运营治理思想是应用服务治理能力与业务逻辑解耦,解除之间的绑定,通过标准化的平台、服务、应用协议,将业务和技术的耦合进行有效的分离,并通过云原生容器、微服务、Service Mesh、Serverless 等得以实现,如服务通信、服务发现、流量转移、流量熔断和限流等,还可以通过日志监控等手段进行全链路追踪。这些代码库被构建在应用程序之外,通过云原生应用平台来加以管理。