REL08-BP04 使用不可变基础设施进行部署
不可变基础设施模式要求在生产系统上不会出现就地更新、安全补丁或配置更改。需要更改时,会在新的基础设施上构建架构,并将其部署到生产环境中。
最常被实施的不可变基础设施范式为 不可变服务器.这意味着,若服务器需要更新或修复,将部署新的服务器,而不是对使用中的服务器进行更新。因此,相对于通过 SSH 登录到服务器并更新软件版本,应用程序的每次更改都会在开始时将软件推送到代码库,如 git 推送。由于在不可变基础设施中不允许更改,您可以确定已部署系统的状态。不可变基础设施在本质上具有更稳定、可靠和可预测的特性,它们对软件开发和运行的多个方面进行了简化。
当您在不可变基础设施中部署应用程序时,使用 Canary 或蓝绿部署。
金丝雀部署
蓝绿部署

图 8:使用 AWS Elastic Beanstalk 和 Amazon Route 53 进行蓝绿部署
不可变基础设施的优点:
-
减小配置偏差: 通过从基本、已知,而且版本受控的配置频繁替换服务器,基础设施会被 重置 为已知状态,以避免配置偏差。
-
简化部署:由于无需支持升级,部署得到简化。升级即意味着新的部署。
-
可靠的原子部署: 成功完成部署,或没有任何更改。它让您更信任部署流程。
-
采用快速回滚和恢复流程的更安全部署: 由于之前运行的版本未发生更改,因此部署变得更安全。您可以在检测到错误时进行回滚。
-
一致的测试和调试环境: 由于所有服务器都使用相同的映像,因此环境之间没有任何差异。同一个版本被部署到多个环境。它还防止出现不一致的环境,并且简化测试与调试。
-
增强可扩展性: 服务器都使用一个基础映像,它们是一致、可重复的,自动扩展并不重要。
-
简化工具链:您无需采用配置管理工具对生产软件升级进行管理,因此工具链也得到简化。也不需要在服务器上安装其他工具或代理。对基础映像进行更改,然后在经过测试后实施。
-
提高安全性: 通过拒绝对服务器的所有更改,您可以在实例上禁用 SSH 并移除密钥。这样做可以减少攻击载体,改善您的组织的安全状况。
未建立此最佳实践暴露的风险等级: 中
实施指导
使用不可变基础设施进行部署。不可变基础设施是一个不会在生产系统上 就地 发生更新、安全修补或配置更改的模型。如果需要任何更改,则会构建架构的新版本,并将其部署到生产环境中。
资源
相关文档: