第19章 交付基础设施守则
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
软件交付生命周期是我们行业的一个重要概念。在铁器时代,基础设施的交付通常遵循不同类型的流程,可以说不那么严格。对生产基础设施进行更改而不首先进行测试是很常见的,例如硬件更改。
但是,使用代码来定义基础架构可以创造机会,通过更全面的流程来管理变更。在开发环境中复制对手动构建系统的更改可能看起来很愚蠢,例如更改服务器的内存大小。但当变更在代码中实施后,您就可以使用管道(参见"基础架构交付管道")轻松地将其推广到生产中。这样做不仅能发现变更本身的问题(这可能看起来微不足道(增加 RAM 只会带来很小的破坏风险)),还能发现应用变更过程中的任何问题。它还能确保所有环境在生产过程中的配置保持一致。
交付基础设施守则
流水线隐喻描述了基础架构代码的变更如何从变更者进展到生产实例。这一交付流程所需的活动会影响您组织代码库的方式。
交付代码版本的管道有多种类型的活动,包括构建、推广、应用和验证。管道中的任何给定阶段都可能涉及多个活动,如图 19-1 所示。
图 19-1. 基础设施代码项目交付阶段
- 建筑
-
准备一个版本的代码,供其他阶段使用。每次源代码发生变化时,构建工作通常会在流水线中进行一次。
- 促进
-
在交付阶段之间移动代码版本,如"渐进测试 "中所述。例如,一旦堆栈项目版本通过了堆栈测试阶段,就可以将其提升到系统集成测试阶段。
- 应用
-
运行相关工具,将代码应用到相关基础架构实例中。实例可以是用于测试活动的交付环境,也可以是生产实例。
"基础设施交付管道"有更多关于管道设计的细节。在此,我们将重点关注代码的构建和推广。
建设基础设施项目
建设基础设施项目为代码的使用做好准备。活动可包括
-
检索构建时的依赖关系,如库,包括来自代码库中其他项目和外部库的依赖关系
-
解决构建时配置问题,例如调入多个项目共享的配置值
-
编译或转换代码,例如从模板生成配置文件
-
运行测试,包括离线测试和在线测试("堆栈的离线测试阶段 "和"堆栈的在线测试阶段")。
-
为使用代码做好准备,将代码转换成相关基础架构工具使用的格式,以便应用代码
-
提供代码供使用
有几种不同的方法来准备基础架构代码并使其可用。有些工具直接支持特定的方法,如标准工件包格式或资源库。其他工具则让使用工具的团队自行实现交付代码的方式。
将基础架构代码打包为人工制品
对于某些工具,"准备代码以供使用 "包括将文件汇编成具有特定格式的软件包文件,即工件。这个过程在 Ruby (gems)、JavaScript (NPM) 和 Python(与 pip 安装程序一起使用的 Python 包)等通用编程语言中很典型。其他用于为特定操作系统安装文件和应用程序的软件包格式包括.rpm、.deb、.msi 和 NuGet(Windows)。
为代码项目提供打包格式的基础架构工具并不多。不过,有些团队会为此构建自己的工件,将堆栈代码或服务器代码捆绑到 ZIP 文件或 "tarball"(用 gzip 压缩的 tar 文件)中。有些团队使用操作系统打包格式,例如创建 RPM 文件,将 Chef Cookbook 文件解压到服务器上。其他团队则创建 Docker ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access