持续集成(自动测试)、持续交付、持续部署,是云计算的快速扩展和持续升级的基石。配置管理和自动化工具在云计算的时代,再次焕发出光彩。
Docker的容器部署又带来了新的挑战和机遇,今后的持续集成将更强大和可定制化。在这个巨变的时代,技术的演进更为猛烈。
DevOps是2008年出现的概念,将以往的持续集成进一步提炼和改进成一个完整的DevOps toolchain:
- 编程 - 代码开发和审查,源代码管理工具,代码合并等
- 编译 - 持续集成工具
- 测试 - 持续测试工具,能够提供商业风险的反馈
- 打包 - 软件仓库,应用程序预部署平台
- 发布 - 变更管理,发布确认,自动化发布
- 配置 - 基础架构的配置和管理,将基础架构视为代码工具
- 监控 - 应用程序性能监控,终端用户体验监控
当前主要使用的DevOps配置管理工具有:
- Chef - 基于Ruby/Erlang开发,效率和速度较好,但文档和应用范围弱于Puppet
- Ansible - 基于Python,无Agent(通过ssh管理),灵活且功能强大,已经被Red Hat收购,未来发展可观
- Puppet - 基于Ruby开发,是目前使用最广泛,文档最丰富且具有海量企业级部署的开源平台工具
- CFEngine - 历史悠久的配置管理工具,有些复杂
- SaltStack - 基于Python,可使用Agent也可以无Agent
Top 6 IT Automation Framework for DevOps (2017-2018)提供了两个2017年分别统计StackOverflow和Google的趋势,大致可以看出:
- Puppet可能依然是企业级应用最广泛的DevOps平台(Gootle trends)
- Ansible最近两年在开发者使用活跃度上升较快,超过了chef和puppet
从GitHub Collection - DevOps tools可以看到活跃开发的DevOps工具。