问题描述
正在构建AWS中的一些新基础设施,并计划为开发、阶段和生产环境设置单独的账户。他希望至少在生产环境中实施蓝绿部署策略,并且他已经看到了一些不同的实现方式,其中一个明显的方式是使用CodeDeploy的内置蓝绿部署功能。
有人建议我将阶段/生产环境视为蓝色和绿色环境。毕竟,它们应该是相同的环境,但我没有想到阶段可以作为一个可以充当生产平台的东西。我认为阶段应该仅用于内部目的,用于端到端测试,QA的最终验证,演示等。
所以,我认为阶段应该继续只用于内部目的。但是我们可能需要两个生产账户。在任何给定时间,每个账户都应该包含一组非活动和活动服务(蓝色和绿色)。DNS(Route 53)将在一个共享账户中,当发布发生时,它将从一个账户中的资源切换到另一个账户中的资源。
然后,当你有蓝绿部署时,似乎阶段的作用就不那么有用了。当新版本处于非活动状态并通过最全面的测试时,它本质上就是阶段所做的事情。而且我们甚至没有真正的QA – 开发人员和我们的客户就是QA。所以我们可以摆脱它吗?当自动化测试被认真对待时,我听说过直接进入生产的策略的赞美之词。
这样做是否合理?
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
根据用户的需求和情况,可以考虑以下解决方案:
1. 将阶段环境视为蓝绿环境:根据用户的建议,将阶段环境视为蓝色和绿色环境是可行的。阶段环境可以用于进行端到端测试、最终验证和演示,以确保新版本在生产环境中的稳定性和可靠性。
2. 保留阶段环境的内部用途:尽管阶段环境可以充当蓝绿环境的一部分,但仍建议将其保留为内部用途。阶段环境可以用于开发人员和QA进行最终验证和测试,以确保新版本的质量和功能符合预期。
3. 使用两个生产账户:根据用户的需求,可以考虑使用两个生产账户。每个账户都可以包含一组非活动和活动服务(蓝色和绿色)。这样可以实现蓝绿部署的目标,确保在发布时能够无缝切换资源。
4. 使用共享账户管理DNS:为了简化管理和维护,可以将DNS(如Route 53)放在一个共享账户中。这样可以确保在切换资源时,DNS的路由能够正确地指向相应的资源。
需要注意的是,直接进入生产的策略可能会带来一些风险。在没有充分的测试和验证之前,直接将新版本部署到生产环境可能会导致潜在的问题和故障。因此,建议在自动化测试得到充分重视的情况下,仍然保留阶段环境,并进行必要的测试和验证,以确保新版本的质量和稳定性。
方案2
请注意以下操作注意版本差异及修改前做好备份。
另一种方法是使用蓝绿部署工具或平台来管理部署流水线的不同阶段和环境。这些工具可以帮助自动化部署和切换资源,以实现蓝绿部署的目标。
以下是一个简单的蓝绿部署流程示例:
1. 创建不同的环境账户:根据用户的需求,创建不同的账户来分别代表开发、阶段和生产环境。
2. 配置蓝绿部署工具:选择适合的蓝绿部署工具或平台,并按照其文档和指南进行配置。这些工具通常提供了一些功能和特性,如自动化部署、资源切换和回滚等。
3. 定义部署流水线:根据用户的需求和流程,定义不同阶段的部署流水线。这些阶段可以包括开发、阶段和生产等,每个阶段都有不同的目标和要求。
4. 自动化部署和切换:使用蓝绿部署工具自动化部署和切换资源。这些工具通常提供了一些命令和API,可以帮助自动化执行部署和切换操作。
5. 监控和回滚:在部署过程中,及时监控和检查资源的状态和性能。如果发现问题或故障,及时回滚到之前的版本或状态。
需要注意的是,使用蓝绿部署工具或平台可能需要一些学习和配置的成本。在选择和配置工具时,建议参考其文档和指南,并根据实际需求进行调整和优化。
以上是两种可能的解决方案,根据用户的具体需求和情况,可以选择适合的方案或进行定制化的调整。