构建可扩展且容错的 CI/CD 管道
1. CI/CD 管道的好处
根据 2016 年的 DevOps 状态报告,高性能组织的部署频率高出 200 倍,前置时间快 2555 倍,恢复速度快 24 倍,变更失败率低 3 倍。无论应用是全新项目、已有项目改造还是遗留系统,通过精益管理、持续集成(CI)和持续交付(CD)实践都能实现高性能,从而更快、更可持续地交付价值。
2. 实现这些好处的方法
- AWS Auto Scaling:可以根据定义的条件自动调整 Amazon EC2 容量,保持应用可用性。能在多个可用区运行所需数量的健康 EC2 实例。在需求高峰时自动增加实例数量,在低负载时减少实例以优化成本。
- AWS Elastic Load Balancer (ELB):用于将传入的应用流量分配到指定的 Amazon EC2 实例。对于 HTTP 和 HTTPS 监听器,使用最少未完成请求路由算法;对于 TCP 监听器,使用轮询路由算法。
3. 场景介绍
有一个 NodeJS 应用(www.awsstar.com),Web 服务器搭建在 AWS 上,使用了 AWS Auto Scaling 服务。每次开发新功能时,需要手动运行测试用例后再集成和部署代码,存在大量手动任务和挑战。
4. 手动操作的挑战
- 从集中式存储库拉取和推送代码进行部署。
- 手动在所有服务器上运行测试用例和拉取最新代码。
- 在 AWS Aut