云原生Devops 的实现方法

DevOps 是一个持续改善软件产品的过程,它通过极短的发布周期、全面自动化的集成和交付流水线,以及团队间的紧密协作来不断改善产品。DevOps 的目标是缩短将创意变成用户可以使用的产品的时间,并降低这个过程的成本。DevOps 充分利用自动化流程来加速开发和部署。如下图对比传统软件构建方法和 DevOps 方法,传统方法在上,DevOps 在下面:

●半部分的传统方法,从概念构思到用户可用的时间周期是八天。基础设施部署占用的时间最多,因为工程师需要在互联网上创建托管软件所需的组件。另一个大的时间耗费来自部署之间的测试和评审步骤。

●半部分是DevOps ,从概念构思到用户可用的时间周期缩短到了两天。这是通过使用处理部署和软件测试/评审的自动化流程来实现的。

 

如果一个组织构建软件的速度能比对手快四倍,那么这将会给它带来巨大的竞争优势。实践表明,客户中意的创新产品一开始可以不完整,但要能够快速稳定地改进。组织可采纳 DevOps 来降低开发生命周期的成本和延迟,并响应用户的要求。

通过 Dev0ps,开发人员仅用数小时就可以发布新版本软件,对它们进行测试,并部署给客户。这并非意味着版本总是可以这么快地发布,适当的质量保障(QA,Quality Assurance)需要投入时间,而 DevOps 提供了在必要时能快速行动的能力,展示了持续集成、持续交付及基础设施即服务这些技术如何被整合在一起以实现快速的发布周期。

 

上图的流水线的关键部分是,从开发人员提交补丁到生产环境中的服务部署这些自动化步骤,最终以完全自动化的方式串联成的一个链条。如果这个链条上的任何一个自动化步骤出现失败,那么流水线就会停止,代码就不会部署。这种机制将确保在所有类型的测试都通过之后,新版本的软件才能被发布到生产环境中。

1. 持续集成

将新特性快速集成进软件的过程叫作持续集成Cl,CI 定义了一个在软件产品中实现、测试及合并新特性的工作流。产品经理和开发人员定义一组小特性集合,这些特性能在较短的周期内实现。每个特性添加在主要源代码的一个分支上,并提交评审,由另一位得到授权的开发人员来评审。在评审阶段,自动化测试会被执行以验证代码更改是否需要返工,这能维持代码的质量水平。在评审通过之后,修改会被合并到中央代码仓库中,这样就做好了部署的准备。小特性的快速迭代能让这个流程得以顺畅运行,避免了因大规模代码修改而对功能造成的破坏。

2.持续交付

将软件部署到客户可用的服务中的自动化过程叫作持续交付CD,DevOps推崇工程师用程序代码来管理基础设施以快速应对变化,而不是手动管理基础设施组件。当开发人员将代码修改合并进软件之后,运维人员在CD流水线上触发更新后的软件的部署,流水线会自动获取最新版本的源代码,对其进行打包并为它创建新的基础设施。如果部进行顺利,可能在QA团队人工或自动评审之后,该环境就会被提升为新的演练或生产环境。用户将被定向到这个环境,而老环境将被销毁。通过代码来管理服务器和网络的这一过程大大缩短了处理部署通常所需的漫长的等待时间。

3.基础设施即服务

基础设施即服务laaS就是云。它是这样一种概念,一个组织所依靠的数据中心、网络和服务器,有时甚至还有系统,统统都由第三方运营。这些基础设施可以作为服务暴露给运维人员,并且可以通过 API 和代码进行控制。laaS 是 DevOps 弹药库中的核心工具,因为它在降低基础设施运营成本方面发挥着举足轻重的作用。可编程的特质将 laaS 和传统基础设施区分开来,并且鼓励运维人员编写代码来创建和修改基础设施,而不是手动执行这些运维任务。

内部运维

许多组织倾向于在内部运营它们的基础设施,这样做有各种各样的原因(监管、安全、成本,等等)。需要注意的是,采用laaS并非意味着将基础设施的管理外包给第三方。组织可以在内部使用Kubernetes 或 OpenStack 这样的平台来部署和运维laaS,而不是直接在硬件上运行应用,从而享受到这些中间管理层带来的灵活性优势。

本书中我使用了由第三方运营的 laaS 系统——AWS(Amazon Web Services),它受到许多组织的青睐,因为AWS帮助它们降低了基础设施管理的复杂性,让它们可以聚焦于核心产品。但是,我提及的大多数基础设施安全概念可以应用于任何类型的laaS,无论你是自己控制硬件还是让第三方替你控制。

管理更低层的基础设施将带来一系列全新的问题,例如网络安全和数据中心的访问控制,你必须妥善处理这些问题。本书没有介绍这些内容,因为它们不是 DevOps 独有的问题,但是你应该可以轻易地从一些现有文献中获得帮助。

AWS 是最具代表性的 laaS,它将作为我们的示例环境贯穿于全书。图的下半部分展示了由供应方管理的 AWS 组件,上半部分则是由运营方管理的组件。

 

CI、CD及 laaS 是成功的 DevOps 策略的基本组成部分。深谙CI/CD/laaS 工作流的组织能以全自动化的方式快速地将软件交付给终端用户,并能够做到一天交付数次。测试和部署步骤的全部自动化保证了将流水线操作所需的人工干预降到了最低,这样在灾难发生时基础设施也是完全可以恢复的。

除了技术上的优势,DevOps 还影响了组织文化,从很多方面提升了员工的幸福感。

posted @ 2022-08-04 10:43  梯度科技  阅读(240)  评论(0编辑  收藏  举报