探索环境部署

已完成

假设你曾在半夜接到过因服务器崩溃而打来的紧急支持电话。

在这种情况下,你体会到了在多个电子表格中搜索,甚至冥思苦想来获取设置新计算机的手动步骤的痛苦。

此外,将开发环境和生产环境保持一致也存在困难。

要在初始化计算机时消除人为错误,还有一种更简单的方法是使用基础结构即代码。

手动部署与基础结构即代码

要理解手动部署和基础结构即代码之间的区别,一个常见类比是拥有宠物和拥有牛之间的区别。

如果你有宠物,你会给每只宠物取名并将其视为个体;如果其中一只宠物生了重病,你就会非常关心它。

如果你有一群牛,你可能仍会为它们取名,但你会考虑整个牛群。

在基础结构方面,如果一台计算机发生故障并且需要替换该计算机(即宠物),则使用手动部署方法可能会产生严重影响。

如果采用基础结构即代码方法,则可以更轻松地预配另一台计算机,而不会在一台计算机出现故障时对整个基础结构(牛)产生不利影响。

实现基础结构即代码

通过基础结构即代码,可以在文本文件(脚本或定义)中捕获你的环境(或多个环境)。

文件中可能包括任何网络、服务器和其他计算资源。

可以将脚本或定义文件签入到版本控制,然后将其用作更新现有环境或创建新环境的源。

例如,可以通过编辑文本文件并运行发布管道来添加新服务器,而不是将其远程部署到环境中并手动预配新服务器。

下表列出了手动部署和基础结构即代码之间的显着差异。

手动部署 基础结构即代码
Snowflake 服务器。 环境之间的一致服务器。
部署步骤因环境而异。 可以轻松地创建或缩放环境。
更多验证步骤和更复杂的手动流程。 完全自动创建环境更新。
增加了用来说明差异的文档。 转换为不可变的基础结构。
在周末进行部署,以便有时间从错误中恢复。 使用蓝/绿部署。
较慢的发布节奏,以最大程度地减少难点和长周末。 将服务器视为一头牛,而不是宠物。

基础结构即代码的好处

以下列表是基础结构即代码的好处:

  • 通过更轻松地跟踪部署内容、时间和方式来促进审核。 (换句话说,它提高了可跟踪性)。
  • 提供从发布到发布的一致环境。
  • 开发、测试和生产环境之间的一致性更高。
  • 实现纵向扩展和横向扩展过程自动化。
  • 允许配置受版本控制。
  • 提供代码评审和单元测试功能,以帮助管理基础结构更改。
  • 使用不可变的服务进程,这意味着如果需要对环境进行更改,部署新服务并取消旧服务,将不会对它进行更新。
  • 允许进行蓝/绿部署。 此发布方法最大程度地减少了故障时间,因为其中存在两个相同的环境 - 一个是实时的,另一个则不是。 更新应用于非活动服务器。 当测试通过验证并完成时,它将与不同的实时服务器交换。 它成为了新的实时环境,而之前的实时环境不再是实时的。
  • 将基础结构视为一种灵活的资源,可按需进行预配、取消预配和重新预配。