DevOps - DevOps基础概念梳理
目录
DevOps
DevOps(Development+Operations)强调共同对业务目标负责,以实现用户价值作为唯一的评判标准:保证产品功能及时实现、成功部署和稳定使用;
- 是一种重视软件开发人员(Dev)和IT运维技术人员(Ops)之间沟通合作的文化、运动或惯例,改善团队之间的协作关系;
- 是一组过程、方法与系统的统称,包含开发、测试和运维;
- 用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合;
- 透过自动化“软件交付”和“架构变更”的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠,按时交付软件产品和服务;

总的说来:
- DevOps 是把人员、流程、产品进行结合,给用户提供持续价值的一个过程,既涉及到人员、流程、工具,也涉及到产品。
- DevOps 最终目的是给客户提供持续交付的价值,流程包括:产品的规划跟踪、软件开发、构建测试、产品部署、运维、监控和优化。
- 通常把 DevOps 这些流程通过一个流水线的方式串联起来称为一个 DevOps 的流水线,其核心目标就是持续给用户交付有价值的产品。
简而言之,DevOps不仅涉及技术背景,还包括非技术的文化方面。
在软件开发和应用周期中,提供了一个机制或模式来培育“协作”意识,帮助不同角色的成员紧密协作,充分利用现有资源,遵循交付的商业价值,共同对“输出”负责,对质量负责。
DevOps的好处与价值
对于业务与产品而言,DevOps的好处更多基于持续部署与交付。
从组织结构而言,DevOps是部门间沟通协作的一组流程和方法,有助于改善公司组织文化、提高员工的参与感。
- 代码的提交直接触发:消除等待时间,快速反馈
- 每个变化对应一个交付管道:使问题定位和调试变得简单
- 全开发流程高效自动化:稳定,快速,交付结果可预测
- 持续进行自动化回归测试:提升交付质量
- 设施共享并按需提供:资源利用最大化
可能的几个关注点
DevOps绝不是推荐一定要在某一方面达到极致,而是从“整体”入手,充分激发“体系”的最佳效率。
- 虽然真正实现DevOps的成本高昂,但任何时候都是实现DevOps的最佳时机,因为随着业务发展,成本一定是越来越高的;
- 组织文化上的变革,鼓励不同的个体与部门共同协作,减少“内耗”;
- 合适的DevOps人员(最起码保证在“向DevOps转换阶段”中,研发人员知晓运维,运维人员了解业务);
- 统一的标准、环境、工具、流程,例如:开发/测试环境尽可能地和生产环境保持一致;
- 自动化和持续交付,简化重复性工作和减少不必要的等待
- 涉及多个技术支撑:敏捷开发、持续集成&部署、微服务、容器、云环境等;
- 个体和团队的成效都放在整个产品开发&运维生命周期内来进行评价;
DevOps能力环

DevOps与持续集成、持续交付
DevOps的应用场景往往是一个庞大复杂的背景和流程的场景,大都包含一个持续交付流水线。
- 开发人员:IDE、Git等开发和编译工具
- 版本控制系统:分支策略、语义化版本
- 构建服务器:持续集成、代码质量检查
- 工件库:存放二进制包
- 系统的包管理器:编译或测试环境系统上管理二进制包
- 环境一致性
- 预发布或生产:预发布环境与生产环境互换(蓝绿发布)
- 发布管理:在高程度自动化测试的基础上实践自动化或半自动化(人工介入)部署
- 问题管理系统
- 。。。。。。
因此,DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。
DevOps的技术要点由“持续集成/部署“”一线贯穿,主干开发是进行持续集成的前提,自动化以及代码周边集中管理是实施持续集成的必要条件。
换而言之,DevOps 是持续集成思想的延伸,持续集成/部署是 DevOps 的技术核心,在没有自动化测试、持续集成/部署之下,DevOps就是空中楼阁。
一个完整的过程
- 开发团队接到任务,需要完成一个变更
- 为了更加顺利地开发,将这个变更分拆为几个小变更
- 开发人员在本地开发并且测试,如果使用了测试驱动开发,在编写功能代码之前会先编写测试,然后编写能够让测试通过的实际代码
- 开发人员将代码提交到企业内部的Git版本控制系统上
- 构建服务器获取这个变更并初始化构建流程,单元测试之后,变更可以被发布到二进制库里
- 配置管理系统根据“策略”,在测试环境中安装应用了新的变更
- 新安装触发自动化回归测试,测试成功后,质量保证团队开始做人工测试
- 人工测试通过后,质量保证团队将“已通过”标识给予这个变革
- 变更在预发布环境中进行验收测试
- 验收测试完成后,预发布环境被切换成生产环境,而生产环境变为新的预发布环境
典型的CICD流水线过程
- 项目开发编写代码,然后把代码推送到 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!
欢迎转载和引用,但请在明显处保留原文链接和原作者信息!
本博客内容多为个人工作与学习的记录,少部分内容来自于网络并略有修改,已尽力标明原文链接和转载说明。如有冒犯,即刻删除!
以所舍,求所获,有所依,方所成。
DevOps - DevOps基础概念梳理的更多相关文章
- java SE 基础概念梳理(一)
(一)First 摘要:Java概述.Java开发环境搭建.程序开发流程 Java概述 Java的应用 开发QQ.迅雷程序(桌面应用软件)开发淘宝.京东(互联网应用软件) Java的擅长 互联网: ...
- 一篇文全面了解DevOps:从概念、关键问题、兴起到实现需求
一篇文全面了解DevOps:从概念.关键问题.兴起到实现需求 转自:一篇文全面了解DevOps:从概念.关键问题.兴起到实现需求 2018-06-06 目前在国外,互联网巨头如Google.Faceb ...
- 【转帖】使用容器化和 Docker 实现 DevOps 的基础知识
使用容器化和 Docker 实现 DevOps 的基础知识 https://www.kubernetes.org.cn/6730.html 2020-02-24 15:20 灵雀云 分类:容器 阅读( ...
- Anliven - 基础知识梳理汇总 - 软件测试
基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...
- TCP/IP基础概念及通信过程举例
TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...
- MySQL 基础知识梳理
MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...
- CCNA-Part1:网络基础概念
由于身处一家网络公司,日常项目中设计到的网络概念较多,恰逢之后公司组织相关培训.借此机会,打算写下一系列文章用于之后梳理并回顾.文章主要涉及 NA,NP 中所覆盖的知识.由于网络分为较多方向,如路由交 ...
- Spring Cloud Security OAuth2.0 认证授权系列(一) 基础概念
世界上最快的捷径,就是脚踏实地,本文已收录[架构技术专栏]关注这个喜欢分享的地方. 前序 最近想搞下基于Spring Cloud的认证授权平台,总体想法是可以对服务间授权,想做一个基于Agent 的无 ...
- Golang 基础之基础语法梳理 (三)
大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第三章节 Golang 基础之基础语法梳理 (一) Gol ...
- Golang 基础之基础语法梳理 (一)
大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第一章节 Golang 基础之基础语法梳理 (一) Gol ...
随机推荐
- 即时通讯技术文集(第13期):Web端即时通讯技术精华合集 [共15篇]
为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第13 期. [- 1 -] 新手入门贴:史上最全Web端即时通讯技术原理详解 [链接] http ...
- 在 Vercel 部署随机图 API
在本文中,将详细介绍如何在 Vercel 平台上部署一个具有分类功能的随机图片 API.通过这个 API,用户可以根据不同的分类获取随机图片链接,并且还可以从所有分类中随机获取一张图片. 项目结构 首 ...
- [LC1302] 层数最深叶子节点的和
题目概述 给你一棵二叉树的根节点 root ,请你返回 层数最深的叶子节点的和 . 基本思路 这是一个简单的树的遍历的问题,可以用bfs或者dfs来解题.这里采用dfs来解,在遍历的过程中,只需要用全 ...
- Appium_WebDriverAgent安装
一.WebDriverAgent安装到ios测试设备 a) 切换到appium 的appium-webdriveragent目录(/Applications/Appium.app/Contents ...
- 分布式多级缓存(本地缓存,redis缓存)
结构包: 使用案例: 实现效果: 1.基本并发的本地缓存,基于分布式轻量级锁的redis缓存 2.热缓存(高频访问持续缓存)+快速过期(本地缓存2秒,redis缓存10秒) 3.方法级别缓存清理 (@ ...
- SpringBoot启动报错:HikariPool-1 - Exception during pool initialization.
不说废话,直接上错误信息: 2020-06-23 10:48:19.899 INFO 10608 --- [ main] cn.wps.ep.account.sync.Application : St ...
- 修改Maven仓库到国内
修改Maven仓库到国内 Maven home directory:选择已安装的Maven目录. User settings file:根据安装Maven自动显示的配置文件settings.xml路径 ...
- 第11章 其他 XML 技术
第11章 其他 XML 技术 概述 System.Xml 命名空间由以下命名空间和核心类型构成: System.Xml.* XmlReader 和 XmlWriter:高性能.前向读写的 X ...
- CentOS7安装nvm和node
一.安装nvm 官方文档:https://github.com/nvm-sh/nvmwindows版文档:https://github.com/coreybutler/nvm-windowswindo ...
- .Net 6 配置日志
前言 .Net 6 与之前的配置有点不一样了记录下日志配置方式. 当前日志以Serilog为例,.Net 6 的日志由内置的Logger获取,然后可以交给Serilog|NLog等框架处理, 框架 ...