在列出DevOps 工具链之前,介绍一下什么是DevOps,虽然DevOps这个概念现在还没有标准的定义,但我们可以追溯一下其过去九年的历史发展过程(从2009年~2017年),列出几个相对明确又有所不同不同的定义,从而能够比较全面了解DevOps的内涵。
【2009】DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和QA部门之间的沟通、协作与整合;
【2011】快速响应业务和客户的需求,通过行为科学改善IT各部门之间的沟通, 以加快IT组织交付满足快速生产软件产品和服务的目
【2015】DevOps强调沟通、协作、集成、自动化和度量,以帮助组织快速开发软件产品,并提高操作性能和质量保证;强调自动化软件交付和基础设施变更的过程,以建立一种文化和环境,通过构建、测试和发布软件等方法,可以快速、频繁地、更可靠地发布软件。
【2016】DevOps的目标是建立流水线式的准时制(JIT)的业务流程,以获得最大化业务成果,例如增加销售和利润率,提高业务速度、减少运营成本。
【2017】一个软件工程实践,旨在统一软件开发(Dev)和软件操作(Ops),与业务目标紧密结合,在软件构建、集成、测试、发布到部署和基础设施管理中大力提倡自动化和监控。DevOps的目标是缩短开发周期,增加部署频率,更可靠的发布。
图1 体现DevOps 流水线的速度(如测试20s左右)
简单地说,DevOps是敏捷研发中持续构建(Continuous Build,CB)、持续集成(Continuous Integration,CI)、持续交付(Continuous Delivery,CD)的自然延伸,从研发周期向右扩展到部署、运维,不仅打通研发的“需求、开发与测试”各个环节,还打通“研发”与“运维”。DevOps 适合“软件即服务(SaaS)”或“平台即服务(PaaS)”这样的应用领域,其显著的特征就是:
打通用户、PMO、需求、设计、开发(Dev)、测试、运维(Ops)等各上下游部门或不同角色
打通业务、架构、代码、测试、部署、监控、安全、性能等各领域工具链。
下面我们就展开DevOps的工具链。
图2 持续集成的基本工具链 [1]
图3持续部署基本工具链[1]
图4 自助式DevOps[1]
上面相对比较简单地展示了DevOps基本工具链的主要工具,相对全的工具,需要覆盖大概十四类工具:
编码版本控制:维护和控制源代码库中的变更
协作开发
构建:版本控制、代码合并、构建状态
持续集成
测试:自动化测试及测试报告
打包:二进制仓库、Docker镜像仓库
部署工具
容器:容器是轻量级的虚拟化组件,它以隔离的方式运行应用负载。它们运行自己的进程、文件系统和网络栈,这些资源都是由运行在硬件上的操作系统所虚拟化出来的
发布:变更管理、自动发布
编排:当考虑微服务、面向服务的架构、融合式基础设施、虚拟化和资源准备时,计算系统之间的协作和集成就称为编排。通过利用已定义的自动化工作流,编排保证了业务需求是和你的基础设施资源相匹配的
配置管理:基础设施配置和管理,维护硬件和软件最新的、细节的记录-包括版本、需求、网络地址、设计和运维信息
监视:性能监视、用户行为反馈
警告&分析工具
维护工具
更完整的结构,如图5所示。
图5 全开源DevOps平台 [1]
经过一个月的不断收集和完善,形成下列目前最全的DevOps工具链:
参考文献:
[1] 马致杰:一站式软件交付-世界五百强企业中的DevOps转型之道
[2] http://dbaplus.cn/news-134-1744-1.html
[3] http://devopsone.cn/products
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/292706.html