DevOps - DevOps基础概念梳理
目录
DevOps
DevOps(Development+Operations)强调共同对业务目标负责,以实现用户价值作为唯一的评判标准:保证产品功能及时实现、成功部署和稳定使用;
- 是一种重视软件开发人员(Dev)和IT运维技术人员(Ops)之间沟通合作的文化、运动或惯例,改善团队之间的协作关系;
- 是一组过程、方法与系统的统称,但其实包含了三个部分:开发、测试和运维;
- 用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合;
- 透过自动化“软件交付”和“架构变更”的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠,按时交付软件产品和服务;
总的说来:
- DevOps 是把人员流程、产品进行结合,给用户提供持续价格的一个过程,这个过程既涉及到人员、过程,也涉及到产品。
- DevOps 最终目的是给客户提供持续交付的价值,流程包括:产品的规划跟踪、软件开发、构建测试、产品部署、运维、监控和优化,并通过一个流水线的方式串联起来。
- 通常把 DevOps 这些流程合并起来称为一个 DevOps 的流水线,其核心目标就是持续给用户交付有价值的产品。
DevOps的好处与价值
对于业务与产品而言,DevOps的好处更多基于持续部署与交付。
从组织结构而言,DevOps是部门间沟通协作的一组流程和方法,有助于改善公司组织文化、提高员工的参与感。
- 代码的提交直接触发:消除等待时间,快速反馈
- 每个变化对应一个交付管道:使问题定位和调试变得简单
- 全开发流程高效自动化:稳定,快速,交付结果可预测
- 持续进行自动化回归测试:提升交付质量
- 设施共享并按需提供:资源利用最大化
可能的几个关注点
- 组织文化上的变革;
- 合适的DevOps人员(最起码保证在“向DevOps转换阶段”中,研发人员知晓运维,运维人员了解业务);
- 开发/测试环境尽可能地和生产环境保持一致;
- 涉及多个技术支撑:敏捷开发、持续集成&部署、微服务、容器、云环境等;
- 个体和团队的成效都放在整个产品开发&运维生命周期内来进行评价;
DevOps能力环
DevOps与持续集成、持续交付
DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。
DevOps的技术要点由“持续集成/部署“”一线贯穿,主干开发是进行持续集成的前提,自动化以及代码周边集中管理是实施持续集成的必要条件。
换而言之,DevOps 是持续集成思想的延伸,持续集成/部署是 DevOps 的技术核心,在没有自动化测试、持续集成/部署之下,DevOps就是空中楼阁。
典型的DevOps流水线过程
- 项目开发编写代码,然后把代码推送到 GitLab 里存储,通过 GitLab 的 hook 使 Jenkins 执行一些 CI 的过程,比如做一些单元测试,构建 Docker image
- 再把这个 Docker image 调用 helm 部署到开发环境或测试环境
- 在测试环境里通过 Jenkins 触发一个集成测试的功能
- 完成后就可以把它部署到生产环境
- 通过 Kubernetes addon 的方式,把 Prometheus、Grafana 等监控组件部署到集群里,实现一整套从 CI 到 CD 的监控过程
DevOps黄金思维圈
Why---》How---》What
Why(目的、理念)
持续且快速、可靠的自动交付软件给用户:
- 实现价值的持续交付,赢得市场竞争
- 提升研发(增值活动)的时间,极大化增值活动产出
How(方法、措施)
- 建设自动化、可重复、可靠的持续交付流水线(IT服务供应链)
- 主要包括代码管理、持续集成、自动化测试、自动化部署、基础设施自动化管理等方面的工程能力
What(现象、成果)
- 每次代码提交都需要经过流水线验证
- 每次部署的版本都经过多环境验证
- 部署频率可以得到提升
- 周期时间(从代码提交到部署上线)的时间可以到分钟级
- 部署失败率低
- 部署失败的修复时间短,影响小
初见
一些图示
关系与演进
涉及的工具
DevOps的目标不是单靠一款工具就能实现的。
在各个阶段,每个都有其单独对应的目标。
依赖于组织的选择,有着各种各样的工具可以实现目标。
Action is the antidote to despair!
欢迎转载和引用,但请在明显处保留原文链接和原作者信息!
本博客内容多为个人工作与学习的记录,少部分内容来自于网络并略有修改,已尽力标明原文链接和转载说明。如有冒犯,即刻删除!