,DevOps是Dev(开发)和Ops(运维/运营)的结合,它将人、流程、工具、工程实践等等结合起来应用到IT价值流的实现过程中,是一系列原则、方法、流程、实践、工具的综合体。DevOps面向应用的全生命周期管理,包括:规划、开发、交付和运维/运营阶段包括:规划、开发、交付和运维/运营阶段。
DevOps是什么
什么是敏捷
“敏捷是一种开发方法,它遵循敏捷软件开发宣言的原则,以增量的方式交付软件。”—— Gartner
敏捷是一种能在在不确定和混乱的环境中通过接受变化、响应变化、创造变化而取得成功的能力。
敏捷软件开发是基于敏捷宣言定义的价值观和原则的一系列方法和实践的总称。这些方法和实践以相对松散/非固化的形式组成,根据团队实际所处的环境来决定采用何种组合形式并演进。
什么是DevOps
通过在面向系统方法的环境中采用敏捷、精益实践,专注于快速的IT服务交付。DevOps强调人(和文化),它寻求改善运营和开发团队之间的协作。DevOps的实现利用了技术,特别是自动化工具,这些工具可以从生命周期的角度利用日益可编程和动态的基础设施。—— Gartner
DevOps是Dev(开发)和Ops(运维/运营)的结合,它将人、流程、工具、工程实践等等结合起来应用到IT价值流的实现过程中,是一系列原则、方法、流程、实践、工具的综合体。DevOps面向应用的全生命周期管理,包括:规划、开发、交付和运维/运营阶段。整个DevOps化的价值流交付过程,并非完全强调角色与阶段行为的一一对应,而是强调构建整体的跨职能团队。在经典的 DevOps 文化中,每个角色在某种程度上都涉及到每个阶段,而在部分传统组织/行业(如有监管要求金融业等)中,则需要做一定的变通。
敏捷与DevOps的区别与联系
一个常见的误解是,“DevOps将取代敏捷”。DevOps的原则与实践很多时候与敏捷一脉相承,更多的是敏捷在工程实践层面的延续和扩展。在DevOps的体系下,敏捷的身影通常更多出现在工作协同和持续集成的领域,帮助团队快速形成可交付的输出物。
DevOps能力成熟度模型
随着应用技术的发展,对于原则、流程、方法、工具的讨论也越来越多。而作为应用研发运维的组织和团队,自然而然期望能有统一化、标准化、可量化的方法论体系,这背后是对软件全生命周期管理最佳实践孜孜不倦的追求。这样可以帮助决策者能够快速定位自身当前所处水平,以及组织未来的目标应该定义、路径应该如何达到。
传统的CMM/CMMI就是这样诞生的,DevOps也不例外。而DevOps的能力成熟度模型即是以DevOps的理念和视角,评估整个软件全生命周期相关的能力成熟度模型。目前国内业界比较认可的是信通院发布的《研发运营一体化(DevOps)能力成熟度模型》。
企业研发过程管理的痛点
1、需求开发过程协作难。解决需求开发过程中的协同反模式:重文档轻交流、围绕文档的低频重型交流/大型需求澄清会、需求澄清不清晰难以理解、需求跟踪困难。
2、研发测试过程缓慢。团队花费大量时间在编译构建和测试上,缺乏自动化编译构建、自动化测试的方法和有效工程实践、没有工具去支撑重复的、可自动化的、占用大量人工时间的必要工作。
3、代码管理混乱。代码管理混乱、缺乏有效的分支管理策略、代码分支策略没有固化、缺乏从需求到代码的跟踪等。
4、手工应用发布。仍然采用手工发布易出错无法跟踪发布过程、每个应用有自己单独的发布工具和发布规范、组织级发布管理规范和执行流程难以执行和跟踪等。
5、研发过程改进缺乏抓手。研发过程改进无从下手、缺乏有效的研发过程基础数据、研发过程数据散落在各处没有统一归集无法整体综合分析;
6、组织级研发管理规范难以落地。缺乏组织级研发管理规范、组织级规范停留在线下无法贯穿到工程实践中、规范执行情况难以跟踪。
DevOps平台与工具
DevOps平台概念
以DevOps及敏捷工程实践为理论基础构建的面向应用管理、研发、运维/运营场景的研发运营一体化管理平台。与搭建开源工具链相比,开源工具链可以解决CI、CD过程中一些最基础的场景,但要想达成企业级应用的全生命周期管理,就需要DevOps平台与解决方案去完成。
DevOps平台内容与用途
1、需求管理与项目协同。为开发团队提供简单高效灵活的敏捷协作服务,包括需求和缺陷的管理与跟踪,以及工作项看板、版本视图、迭代视图、甘特图等服务。
2、代码管理。支持主流的开源、商业代码托管工具工具对接与管理。提供包括仓库信息、文件管理、提交记录、分支管理等。
3、制品管理。支持主流的开源、商业制品库工具对接。提供制品库管理能力,包括资源管理器、制品上传、制品库与项目的绑定与解绑等。
4、测试管理。提供轻量级的测试管理工具,包含测试用例、测试计划、测试执行、测试报告、缺陷跟踪。
5、持续集成。提供提供图形化可编排的CICD流水线。支持暂停、重试、审批、多流水线编排、并行任务等特性。降低研发团队在工具链管理上投入的时间和成本,专注于软件研发本身。
持续部署。支持多环境的定义、管理与部署发布。并且可以结合客户的资源管理平台,形成资源管理平台对接与集成解决方案。打通资源申请与回收的流程,实现资源的自动创建与回收。
6、指标度量。提供完善的度量指标体系,通过对软件的生命周期管理过程中的进度、质量、效率等维度进行实时度量分析和反馈,驱动团队对生产过程不断改进优化,提升IT生产率。
7、文档管理。提供轻量级的文档中心,作为在线知识库。具备文档资源管理器、版本管理、权限控制功能。
DevOps工具链
CI/CD
什么是CI
持续集成(CI)是持续在源代码变更后自动检测、拉取、构建和单元测试的过程。持续集成。持续集成的目标是快速确保开发人员新提交的代码变更是正确的、可以被集成的,并且适合在代码库中进一步使用。持续集成伴生的行为是持续测试。
什么是CD
持续部署(CD)是指持续通过自动化Pipeline的方式发布制品到使用环境中的行为。持续部署的过程依赖于持续集成与持续测试。
CI/CD流程
CICD流程又称为CI/CD流水线,持续交付流水线。持续交付涵盖了从需求、设计、开发、构建、测试、上线整个过程的流程、工具、方法、平台化的输入以输出。