DevOps简述
出现的背景
在上世纪八九十年代,将软件开发和运维的结合起来的提议开始萌芽。大概在
可以把
Author Devops.png: Rajiv.Pant
Derivative work: Wylve - This file is from: Devops.png: ,CC BY 3.0,Link
The Three Ways ——
The First Way: Flow/Systems Thinking
以整个系统的宏观视角充分理解工作流(开发-运维-客户)、实现流量最大化,并不断为了整体目标的实现而优化工作流。
部分的关键实践和方法:
- 持续构建、集成以及交付
- 按需创建环境
- 限制半成品(
) - 构建支持顺利变更的监视系统和安全系统(如看板可帮助任务可视化)
The Second Way: Amplify Feedback Loops
价值流的快速持续反馈,并在反馈中快速发现并修复问题,避免问题再次发生。从源头上保证质量。
部分的关键实践和方法:
- 适时停止生产线
- 持续改进
- 构建自动化测试套件,确保代码高可部署
The Third Way: Culture of Continual Experimentation and Learning
在不断尝试、重复和练习之中,创建并培育出良好的企业文化。”企业文化“
部分关键实践和方法:
- 营造勇于创新、敢于冒险以及高度信任的企业文化
- 确保至少
的资源投入在非功能需求上 - 不断鼓励和强化改进
精益生产、 和敏捷方法
传统行业的精益生产理论和
例如,如何用敏捷的方式来做运维?利用代码来做实际的运维,即 "Infrastructure is code."。这就借鉴了敏捷中的原则。
敏捷方法更注重开发阶段的效率,而
其实,有些敏捷宣言的内容甚至与
的原则
- 我们最重要的目标是通过持续不断地及早交付有价值的功能使客户满意。
- 软件功能只有在完善的系统交付给客户后才能实现,对于用户来说,非功能性需求与功能性需求一样重要。
- 基础设施是代码,应该同样进行开发和管理。
- 积极面对需求交化,即使在开发后期也一样。
- 经常地交付可工作的功能,相隔几星期或一两个月,倾向于采取较短的周期。
- 业务人员、开发人员和运维人员必须相互合作,项目中的每一天都不例外。
- 激发个体的斗志,以他们为核心措建项目。提供所需的环境和支援,辅以信任,从而达成目标
- 不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。
- 可工作的软件并进行完整交付是进度的首要度量标准。
- 敏捷过程倡导可持续开发。责任人,开发人员、运维人员和用户要能共同维持其步调稳定延续。
- 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
- 以简洁为本,它是极力减少不必要工作量的艺术。
一些关键术语
- 持续集成(
):是一种开发实践,要求开发者一天多次将代码集成到共享仓库中。持续集成的核心是自动化构建和测试。 - 持续交付(
):一系列过程和实践,可以显著移除项目进程中的浪费,在客户与公司之间构建一种高速高效的交付和高反馈的循环。 - 持续部署(
):可以迅速地部署到实际环境和应用变更。 - 软件即服务(
):软件按照订阅的方式直接分发,由中心提供支持。如今大部分软件的形式 - 基础设施即服务(
):如云虚拟化主机等。其中系统与应用由自己管理。 - 平台即服务(
):制造商提供一个开发环境供应用开发者开发,应用及数据由自己管理。如微信小程序平台等。 - 部署频率:组织部署新代码的频率。部署频率越高,价值流动越快,
能力越强。 - Lead time for changes:从代码提交到代码成功运行在产品中的时间。
- 平均恢复时间
:当服务出现紧急事件时,恢复的平均时间。 - 变更失效率:变更导致已有服务宕机占所有变更的比率。
- 流水线编排:流水线指从概念成型到生产完成,工程师将整体的生成工作分割成连续的几个小步,最后逐渐形成一种常规动作。流水线编排则需要众多自动化任务来搭建起连续的交付流水线。除此之外,还需要记录各个任务的状态和输出,并将整个流水线可视化。
- 微服务:一种将软件应用设计成一套独立的可部署的服务的方法。这种设计方法有共同的特征,例如自动化部署、endpoint intelligence 以及代码和数据的去中心化控制。
- 金丝雀测试
:当新的特性或多个变化待发布时,先将它们投放至不同用户集中,然后量化其指标来做出决定。灰度测试
生态
《图》
利用
服务标准
在
: ( )模型是为组织改进流程最佳实践的集合。这些模型由来自行业、政府和软件工程研究所的成员组成的产品团队开发。该模型被称为 服务( ),为优质服务提供了一套全面的指南。 :即信息技术基础架构库。其最佳实践围绕五个部分:服务战略、服务设计、服务转换、服务运营和服务改进。 :定义了“策划-实施-检查-处置”的方法论用于服务管理体系和服务的所有部分。 :信息技术服务标准是一套国产的成体系和综合配套的信息技术服务标准库。
传统运维的转型
- 互联网化的转型:快速迭代、快速发布、灰度发布;
- 云计算下的运维:快速部署、快速更新、实时监控、自动化、动态扩容等;
- 大规模下的运维:标准化、自动化、智能化;
- “提前”运维:基于系统可监控性、可运维性方面的设计,将系统的监控和运维接口设计提前到软件开发设计的阶段。