一、什么是持续集成、交付和部署
全面的自动化测试。这是实践持续集成&持续部署的基础,同时,选择合适的 自动化测试工具也极其重要; 灵活的基础设施。容器,虚拟机的存在让开发人员和 QA 人员不必再大费周折; 版本控制工具。如 Git,CVS,SVN 等; 自动化的构建和软件发布流程的工具,如 Jenkins,flow.ci; 反馈机制。如构建/测试的失败,可以快速地反馈到相关负责人,以尽快解决达到一个更稳定的版本。
快速发布。能够应对业务需求,并更快地实现软件价值。 编码->测试->上线->交付的频繁迭代周期缩短,同时获得迅速反馈; 高质量的软件发布标准。整个交付过程标准化、可重复、可靠, 整个交付过程进度可视化,方便团队人员了解项目成熟度;更先进的团队协作方式。从需求分析、产品的用户体验到交互 设计、开发、测试、运维等角色密切协作,相比于传统的瀑布式软件团队,更少浪费。
单体应用的常规流水线
微服务的 CI/CD
每个团队可以独立构建、集成和部署自己的微服务,而不会影响或破坏其他团队; 在将新版本的微服务部署到生产之前,它将首先部署到开发、测试和 QA 环境,在集成的每个环境都有质量管控; 可以非常容易并排部署新版本和之前的多个版本,以此来评估新版本的微服务; 易于建立分段且易于管理的访问控制。
为什么强大的CI/CD管道很重要
微服务开发中 CI/CD 的挑战
安全、快速并持续发布新功能:
管理频繁发布的功能需要保持警惕,尤其是当这些功能涉及到多个微服务的更改管理复杂技术栈之间的部署:
用户可能会遇到微服务应用在包含不同技术栈的环境中,这将面临许多繁琐的挑战维护复杂分布式系统的完整性:
如果项目涉及到将单体应用分解为较小的微服务,则系统整体复杂性将增加,可将将面临分布式系统的问题
微服务 CI/CD 的最佳实践
1. 制定可靠的测试策略
根据不同领域拆分 服务之间通过网络协议通信 拥有独立的数据库 拥有特定对外开放的接口
第一步是将底子打好:你需要对你的的微服务进行单元化测试,编写单元化的测试用例,然后再强化集成测试。没有好底子的微服务是不可靠的,任何时候都可能会出问题,而且出问题后的排查会非常费时。 第二步是自动化的持续集成环境:将能够自动化的部分全部进行自动化,减少人工的介入