近几年关于 云原生 的讨论不断,CNCF 作为中立的组织,不断完善云原生定义和托管相关的开源项目。越来越多的公司参考 CNCF 的推荐开始评估和进行云原生实践,在这个过程中,清晰的进阶路线会起到重要的帮助。
CNCF 正在形成云原生成熟度的模型,为希望采用云原生技术的个人或组织提供路线指导。下述对该模型做一个简单的分析,并结合过去的工作经历,尝试提出简化的模型。
云原生定义
CNCF 对云原生的定义如下 [1]:
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。
这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
同时,CNCF 提供了云原生技术图景,如下 [2]:

上述技术图景中把每个模块涉及到的项目均列了出来,为了便于理解,可简化为下图,自下而上进行观察:

基于上述定义及技术,可进一步理解云原生的关注:
分层管理 资源 和 应用,通过 容器编排 等服务衔接
使用云的概念管理 IaaS,弱化服务器概念,强化细粒度资源概念,如 CPU / Memory / Service / Ingress / Volume
脱离 IaaS 维度考虑应用管理,包括 开发/构建/测试/部署/运行/管理 等
基于工具自动化,如
IaaS 层可使用 IaC 工具
PaaS 层可使用围绕 开发 / 构建 / 测试 / 部署 / 运行 / 管理 等的工具
应用管理强调 弹性 / 声明式 API / 可观测性 等,并将通用能力抽出为业务无关的工具
技术和业务是相辅相成,上述技术栈围绕 应用 提供服务,在新的资源形态下为业务 降本增效。
云原生成熟度模型
成熟度模型 通常会从这几个方面带来帮助:
将问题转变为 可衡量
提供 路线指引
提供 投资决策,如 时间预估 等
CNCF 下的 Cartografos 小组致力于帮助个人和组织采用云原生技术,繁荣云原生生态。为此,小组推进制定了云原生成熟度模型,详情见 [3]。
考虑到 业务迭代 涉及 人 + 组织 + 技术,且伴随数字化程度的加深, 安全 成为很重要的话题,故 CNCF 制定的云原生成熟度模型从 4 个领域细化展开,即:

该模型提供了一个概览路径,用于理解实践云原生的阶段,提升长期落地的可能性,参见 [4]:

基于该概览模型,可以直观粗略评估所处的阶段,为进入下一个阶段提供评估和落地方向。
下述将分别针对 4 个领域进行展开,具化概览模型。
需要注意的是,目前这些模型抽象度还有待提升,阶段和阶段之间的辨识度可能并不是很明确。可仅了解阶段划分的思路,根据所处环境来定制适合的成熟度模型。
People
该领域关注个人能力和组织的生产关系 [5]:

可以从 5 个方面落地:

Process
该领域关注流程的建设,通过流程固化最佳实践,减少不可控的因素 [6]:

可以从 4 个方面落地:

Policy
该领域关注安全,在理解应用和监管需求的前提下,在应用生命周期的全链路
中,通过工具自动化实施安全策略 [7]:

可以从 2 个方面落地:

Technology
该领域关注技术栈,提供云原生落地的技术工具 [8]:

可以从 6 个方面落地:

小结
除了上述维度丰富的成熟度模型,CNCF 还提供了简化版的路径供参考 [9]:

该路径以直观的方式展现了实践云原生的方法,作为大致的方向指引。
工作中实践时,要求有相对明确的 产出规划 和 成本收益评估,故需要考虑采用成熟度模型的方式,以可衡量、可预期的方式推进。
简化的模型
CNCF 提出的云原生成熟度模型相对完整,但也带来理解和使用的复杂度。
模型需要简单易理解,使得更多的人和组织可以采用,在实践过程中再逐步丰富模型的种类和细节。接下来将尝试简化上述模型,以期作为提升云原生成熟度的开始。
成熟度模型:

落地方法:

总结
伴随云原生对业务价值提升的效果越来越显著,个人和组织实践云原生时可通过成熟度模型有逻辑开展,分阶段解决问题和收获技术红利。
但也需要意识到,云原生成熟度模型与其他所有模型一样,均是对现实问题的抽象和简化,需要以持续发展的态度看待模型的意义和应用模型,并根据实际情况调整模型。
参考
[1]https://github.com/cncf/toc/blob/main/DEFINITION.md
[2]https://landscape.cncf.io/
[3]https://www.cncf.io/blog/2021/10/04/cartografos-working-group-launches-cloud-native-maturity-model/
[4]https://github.com/cncf/cartografos/blob/main/reference/prologue.md
[5]https://github.com/cncf/cartografos/blob/main/reference/people.md
[6]https://github.com/cncf/cartografos/blob/main/reference/process.md
[7]https://github.com/cncf/cartografos/blob/main/reference/policy.md
[8]https://github.com/cncf/cartografos/blob/main/reference/technology.md
[9]https://github.com/cncf/trailmap




