DevOps
1、概述
DevOps 就是为了提高软件研发效率,快速应对变化,持续交付价值的的一系列理念和实践,其基本思想就是持续
部署(CD),让软件的构建、测试、发布能够更加快捷可靠,以尽量缩短系统变更从提交到最后安全部署到生产系统
的时间。
要实现持续部署(CD),就必须对业务进行端到端分析,把所有相关部门的操作统一考虑进行优化,利用所可用的技
术和方法,用一种理念来整合资源。DevOps 理念从提出到现在,已经深刻影响了软件开发过程。DevOps 提倡打
破开发、测试和运维之间的壁垒,利用技术手段实现各个软件开发环节的自动化甚至智能化,被证实对提高软件生产
质量、安全,缩短软件发布周期等都有非常明显的促进作用,也推动了 IT 技术的发展。
2、DevOps 原则
要实施 DevOps,需要遵循一些基本原则,这些原则被简写为 CAMS,是如下四个英文单词的缩写:
文化(Culture)
自动化(Automation)
度量(Measurement)
共享(Sharing)
下面我们分别来谈一谈这几个方面。
文化
自动化
度量
共享
谈到 DevOps,一般大家关注的都是技术和工具,但实际上要解决的核心问题是和业务、和人相关的问题。提高效率,
加强协作,就需要不同的团队之间更好的沟通。如果每个人能够更好的相互理解对方的目标和关切的对象,那么协作
的质量就可以明显的提高。
DevOps 实施中面对的首要矛盾在于不同团队的关注点完全不一样。运维人员希望系统运行可靠,所以系统稳定性
和安全性是第一位。而开发人员则想着如何尽快让新功能上线,实现创新和突破,为客户提供更大价值。不同的业务
视角,必然导致误会和摩擦,导致双方都觉得对方在阻挠自己完成工作。要实施 DevOps,就首先要让开发和运维
人员认识到他们的目标是一致的,只是工作岗位不同,需要共担责任。这就是 DevOps 需要首先在文化层面解决的
问题。只有解决了认知问题,才能打破不同团队之间的鸿沟,实现流程自动化,把大家的工作融合成一体。
DevOps 的持续集成的目标就是小步快跑,快速迭代,频繁发布。系统如果小,跑起来是很容易的。但一个大型系统,
往往牵涉几十人到几百人的合作,要让这个协作过程流畅运行,当然不是一件容易的事情。要把这个理念落实,就需
要规范化和流程化,让可以自动化的环节实现自动化。
实施 DevOps,首先就要分析已有的软件开发流程,尽量利用各种工具和平台,实现开发和发布过程的自动化。经
过多年的发展,业界已经有一套比较成熟的工具链可以参考和使用,不过具体落地还是需要因地制宜。
在自动化过程中,需要各种技术改造才能达到预期效果。例如如果容器镜像是为特定环境构建的,那么就无法实现镜
像的复用,不同环境的部署需要重新构建,浪费时间。这时就需要把环境特定的配置从镜像中剥离出来,用一个配置
管理系统来管理配置。
通过数据可以对每个活动和流程进行度量和分析,找到工作中存在的瓶颈和漏洞,以及对于危急的情况及时报警等。
通过分析,可以对团队工作和系统进行调整,让效率改进形成闭环。
度量首先要解决数据的准确性、完整性和及时性问题,其次要建立正确的分析指标。DevOps 过程考核的标准应该
鼓励团队更加注重工具的建设,自动化的加速和各个环节优化,这样才能最大可能发挥度量的作用。
要实现真正的协作,还需要团队在知识层面达成一致。通过共享知识,让团队共同进步:
可见度 visibility:让每个人可以了解团队其它人的工作。这样可以知道是否某一项工作会影响另一部分。
通过相互反馈,让问题尽早暴露。
《云原生架构白皮书2022新版》——主要云原生技术——DevOps(下) https://developer.aliyun.com/article/1232927