DevOps是敏捷研发中持续构建(Continuous Build,CB)、持续集成(Continuous Integration,CI)、持续交付(Continuous Delivery,CD)的自然延伸,从研发周期向右扩展到部署、运维,不仅打通研发的“需求、开发与测试”各个环节,还打通“研发”与“运维”。DevOps 适合“软件即服务(SaaS)”或“平台即服务(PaaS)”这样的应用领域,其显著的特征就是:
打通用户、PMO、需求、设计、开发(Dev)、测试、运维(Ops)等各上下游部门或不同角色
打通业务、架构、代码、测试、部署、监控、安全、性能等各领域工具链。
图1 持续集成的基本工具链
图2持续部署基本工具链
上面相对比较简单地展示了DevOps基本工具链的主要工具,相对全的工具,需要覆盖大概十四类工具:
编码版本控制:维护和控制源代码库中的变更
协作开发
构建:版本控制、代码合并、构建状态
持续集成
测试:自动化测试及测试报告
打包:二进制仓库、Docker镜像仓库
部署工具
容器:容器是轻量级的虚拟化组件,它以隔离的方式运行应用负载。它们运行自己的进程、文件系统和网络栈,这些资源都是由运行在硬件上的操作系统所虚拟化出来的
发布:变更管理、自动发布
编排:当考虑微服务、面向服务的架构、融合式基础设施、虚拟化和资源准备时,计算系统之间的协作和集成就称为编排。通过利用已定义的自动化工作流,编排保证了业务需求是和你的基础设施资源相匹配的
配置管理:基础设施配置和管理,维护硬件和软件最新的、细节的记录-包括版本、需求、网络地址、设计和运维信息
监视:性能监视、用户行为反馈
警告&分析工具
维护工具
全开源DevOps平台
DevOps2009年~2017年历史发展过程
【2009】DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和QA部门之间的沟通、协作与整合;
【2011】快速响应业务和客户的需求,通过行为科学改善IT各部门之间的沟通, 以加快IT组织交付满足快速生产软件产品和服务的目
【2015】DevOps强调沟通、协作、集成、自动化和度量,以帮助组织快速开发软件产品,并提高操作性能和质量保证;强调自动化软件交付和基础设施变更的过程,以建立一种文化和环境,通过构建、测试和发布软件等方法,可以快速、频繁地、更可靠地发布软件。
【2016】DevOps的目标是建立流水线式的准时制(JIT)的业务流程,以获得最大化业务成果,例如增加销售和利润率,提高业务速度、减少运营成本。
【2017】一个软件工程实践,旨在统一软件开发(Dev)和软件操作(Ops),与业务目标紧密结合,在软件构建、集成、测试、发布到部署和基础设施管理中大力提倡自动化和监控。DevOps的目标是缩短开发周期,增加部署频率,更可靠的发布。