DevOps 字面理解
DevOps(Development 和 Operations 组合)是一组过程, 方法与系统的统称, 用于促进开发 (应用程序 / 软件工程), 技术运营和质量保障(QA) 部门之间的沟通, 协作与整合. 一些国际组织对其定义如下:
DevOps 强调对应用进行快速, 小规模, 可迭代的开发和部署, 以更好地应对和满足客户的需求. 它要求进行文化的转变, 即将开发和运维只能作为一个合作的整体来看待, 注重提高业务价值, 旨在精简整个 IT 价值链.
从定义来看, 其实 devops 就是为了让开发, 运维和 QA 可以高效协作的流程.(可以把 DevOps 看作开发, 技术运营和质量保障 (QA) 三者的交集)
DevOps 是一套实践框架, 包含了精益, 敏捷的理念, 各种持续集成和持续交付的职能, 以及构建流水线的工具. 它着眼于项目的实践, 在实践中强调以业务价值来统一所有工作目标, 这个目标是不同的团队打破原有的组织考核壁垒, 进行合作和沟通的基础. 它的核心思想是把所有的 IT 交付和运维服务团队统一起来, 围绕一个统一的业务价值目标及业务交付范围加强沟通, 通过频繁, 快速地迭代交付和反馈, 达到加快交付速度和提高交付质量的目的.
如果将 IT 系统提供的业务服务作为一个交付的产品来看, 就存在一条在 IT 软件开发和交付领域等形成的流水线. 为了建设这样一条流水线, 需要弄清楚以下问题:
- 流水线的内容是什么? 它的起点在哪? 终点在哪?
- 如何搭建这条流水线?
- 如何管理这条流水线?
DevOps 核心理念
DevOps 的生命周期如下图所示:
在其生命周期中, 包含以下几个核心理念:
实现组织目标
技术人员所做的软件系统是为业务部门的业务发展服务的, 此是将所有 IT 交付团队统一起来的共同目标和原始驱动力. 只要对比一下自己团队的 KPI 和业务目标的关系, 就能发现传统的分隔式项目交付管理是多么官僚和浪费. 所以, DevOps 流水线包含开发, 测试, 部署和运维等整个项目过程, 这些直接关系到最终的业务价值的实现, 因此必须作为一个整体进行管理.
流程标准化
俗话说, 无规矩不成方圆. 在践行 DevOps 的时候也需要标准化的交付流程, 且这个流程不是简单的管理规范, 而是要用持续交付的流水线来取代冗长的开发运维流程, 实现高效, 高质.
除了开发测试交付部分, 从运维的角度来看, 在 DevOps 里强调的是轻量化的 ITSM 流程和架构, 即根据保证业务运行连续性的需要来裁减流程, 并形成标准化的流程. 所谓标准化指的是在需求, 开发, 测试, 维护的过程中将流程最小化. 流程过于复杂是造成 IT 资源浪费的最重要原因, 所以应该将流程最小化, 同时将更多的精力, 劳动, 资源投入真正创造业务价值的生产中.
工作自动化
开发运维流程标准化是自动化的前提, 如果流程不是标准化, 那么自动化也是没有根基的. 只有将流程标准化, 自动化才能有定义的标准.
自动化能提升效率, 还能使效率和质量透明化, 让整个交付过程更加可控.
DevOps 文化
DevOps 是一种文化, 它提倡团队成员围绕共同的业务目标, 进行互相理解, 信任, 沟通和协作, 在交付过程出现问题后, 从中分析原因和吸取教训, 而不是互相指责和推卸责任.
总的来说, DevOps 涵盖 CALMS(自动化, 精益, 可衡量和分享)文化, 如下图:
从项目实践来看, DevOps 是指导软件系统交付的一系列实践方法, 贯穿于项目的计划, 需求, 设计, 开发, 部署, 运维及终止的整套过程中.
从传统的 IT 项目交付的角度来看, DevOps 实践框架包括: 敏捷管理, 持续集成, 持续交付和自动化测试.
# 敏捷管理
指将需求以用户故事的方式进行拆解, 然后以最小化, 快速迭代的方式进行开发管理.
# 持续集成
指针对开发人员的代码提交过程, 以单件流的方式进行流水线式的自动化管理.
# 持续交付
预先定义, 规划从代码生成到产品产出的流水线, 并以自动化, 模板化方式进行交付.
# 自动化测试
根据测试流程, 以模板化, 自动化的方式实现测试的手段.
DevOps 相关工具
来源: https://www.cnblogs.com/kazihuo/p/12605970.html