谈谈持续集成、持续交付、持续部署之间的区别
经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢?
[attach]1811[/attach]
假如把开发工作流程分为以下几个阶段:
正如你在上图中看到,「持续集成(Continuous Integration)」、「持续交付(Continuous Delivery)」和「持续部署(Continuous Deployment)」有着不同的软件自动化交付周期。 持续集成 持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。“持续集成”源自于极限编程(XP),是 XP 最初的 12 种实践之一。 [attach]1812[/attach] CI 需要具备这些:编码 ---> 构建 ---> 集成 ---> 测试 ---> 交付 ---> 部署
- 全面的自动化测试: 这是实践持续集成&持续部署的基础,同时,选择合适的自动化测试工具也极其重要;
- 灵活的基础设施: 容器,虚拟机的存在让开发人员和 QA 人员不必再大费周折;
- 版本控制工具: 如 Git,CVS,SVN 等;
- 自动化的构建和软件发布流程的工具,如 Jenkins,flow.ci;
- 反馈机制: 如构建/测试的失败,可以快速地反馈到相关负责人,以尽快解决达到一个更稳定的版本。
- “快速失败”,在对产品没有风险的情况下进行测试,并快速响应;
- 最大限度地减少风险,降低修复错误代码的成本;
- 将重复性的手工流程自动化,让工程师更加专注于代码;
- 保持频繁部署,快速生成可部署的软件;
- 提高项目的能见度,方便团队成员了解项目的进度和成熟度;
- 增强开发人员对软件产品的信心,帮助建立更好的工程师文化。
- 快速发布。能够应对业务需求,并更快地实现软件价值。
- 编码->测试->上线->交付的频繁迭代周期缩短,同时获得迅速反馈;
- 高质量的软件发布标准。整个交付过程标准化、可重复、可靠,
- 整个交付过程进度可视化,方便团队人员了解项目成熟度;
- 更先进的团队协作方式。从需求分析、产品的用户体验到交互 设计、开发、测试、运维等角色密切协作,相比于传统的瀑布式软件团队,更少浪费。
实际上,产品在从需求到部署的过程中,会经历若干种不同的环境,例如 QA 环境、各种自动化测试运行环境、生产环境等。这些环境的搭建、配置、管理,产品在不同环 境中的具体部署,状况是比较非常复杂的,从头到尾地全自动持续部署的确困难。那么,如果能做到持续交付,保证代码在模拟环境没问题,也许团队成员做到真正的心理有数。 持续部署的优点: 持续部署主要好处是,可以相对独立地部署新的功能,并能快速地收集真实用户的反馈。为什么说持续部署是理想的工作流程? “开发人员提交代码,持续集成服务器获取代码,执行单元测试,根据测试结果决定是否部署到预演环境,如果成功部署到预演环境,进行整体验收测试,如果测试通过,自动部署到产品环境,全程自动化高效运转。”
最后 「持续集成(Continuous Integration)」、「持续交付(Continuous Delivery)」和「持续部署(Continuous Deployment)」提供了一个优秀的 DevOps 环境,对于整个团队来说,好处与挑战并行。无论如何,频繁部署、快速交付以及开发测试流程自动化都将成为未来软件工程的重要组成部分。“You build it, you run it”,这是 Amazon 一年可以完成 5000 万次部署,平均每个工程师每天部署超过 50 次的核心秘籍。
分享阅读链接:http://www.jianshu.com/p/2c6ebe34744a 來源:简书