《云原生架构白皮书2022新版》——主要云原生技术——DevOps(上) https://developer.aliyun.com/article/1232928
声明式接口是一种和云计算时代相契合的思维范式。前面列出的指令式的缺点都可以由声明式接口来弥补。
幂等性:运维终态被反复提交也不会具有任何副作用。
声明式最明显的优点是变更审核简单明了。配置中心会保存历史上的所有版本的配置文件。通过对比新的
配置和上一个版本,可以非常明确看到配置的具体变更。一般来说,每次变更的范围不是很大,所以审核
比较方便。通过审核可以拦截很多人为的失误。通过把所有的变更形式都统一为对配置文件的变更,无论
是机器的变更、网络的变更还是软件版本和应用配置的变更等。在人工审核之外,还可以通过程序来检测
用户配置是否合乎要求,从而捕捉用户忽略掉的一些系统性的限制,防患于未然。
复杂性抽象:系统的复杂性越来越高,系统间的相互依赖和交互越来越广泛,操作者无法掌握所有的可能
的假设条件、依赖关系等而带来运维复杂性。解决这个问题的唯一思路,就是要把更多的逻辑和知识沉淀
到运维平台中,从而有效降低用户使用的难度和风险。
GitOps
GitOps 作为 IaC 运维理念的一种具体落地方式,就是使用 Git 来存储关于应用系统的最终状态的声明式描述。
GitOps 的核心是一个 GitOps 引擎,它负责监控 Git 中的状态,每当它发现状态有改变,它就负责把目标应用系统
中的状态以安全可靠的方式迁移到目标状态,实现部署、升级、配置修改、回滚等操作。
Git 中存储有对于应用系统的完整描述,以及所有的修改历史,所以方便重建,也方便对于系统的更新历史进行查看,
符合 DevOps 所提倡的透明化原则。GitOps 也具有前面所有关于声明式运维的优点。
和 GitOps 配套的一个基本假设是不可变基础设施,所以 GitOps 和 Kubernetes 运维可以非常好的配合。
GitOps 引擎需要比较当前态和 Git 中的终态间的差别,然后以一种可靠的方式把系统从任何当前状态转移到终态,
所以GitOps系统的设计还是比较复杂的。对于用户的简单,实则是因为围绕GitOps有一套完整的工具和平台的支持。
云原生时代的 DevOps
相对于传统 IT 基础设施,云具有更加灵活的调度策略,接近无限的资源、丰富的服务供用户选择、使用,这些都极
大方便了软件的建设。而云原生开源生态的建设,基本统一了软件部署和运维的基本模式。更重要的是,云原生技术
的快速演进,技术复杂性不断下沉到云,赋能开发者个体能力,不断提升了应用开发效率。
首先是容器技术和 Kubernetes 服务编排技术的结合,解决了应用部署自动化、标准化、配置化的问题。CNCF 打
破了云上平台的壁垒,使建设跨平台的应用成为可能,成为事实上的云上应用开发平台的标准,极大简化了多云部署。
一个完整的开发流程涉及到很多步骤,而环节越多,一次循环花费的时间越长,效率就越低。微服务通过把巨石应用
拆解为若干单功能的服务,减少了服务间的耦合性,让开发和部署更加便捷,可以有效降低开发周期,提高部署灵活性。
Service Mesh 让中间件的升级和应用系统的升级完全解耦,在运维和管控方面的灵活性获得提升。Serverless 让
运维对开发透明,对于应用所需资源进行自动伸缩。FaaS 是 Serverless 的一种实现,则更加简化了开发运维的过
程,从开发到最后测试上线都可以在一个集成开发环境中完成。无论哪一种场景,实际上后台的运维平台的工作都是
不可以缺少的,只是通过技术让扩容、容错等技术对于开发人员透明,让效率更高。