DevOps学习 | 如何应对IT服务交付中的问题?

news2024/11/18 7:40:40

目录

前言

DevOps是什么?

DevOps发展历程

DevOps与微服务、容器的关系

书本推荐


前言

作为一个热门的概念,DevOps这个名词在程序员社区里频频出现,备受技术大佬们的追捧。甚至网络上有了“南无DevOps”的戏言(南无在梵语的意思是“皈依”),也侧面反映了DevOps的风靡。

然而,一旦有人问起什么是DevOps,大部分人就会扯起类似“之乎者也”等玄之又玄的东西,一部分人说它是工具,一部分人说它是平台,一部分人说它是方法,一部分人甚至说它是哲学。所以今天,我就想和小伙伴们好好聊聊这个DevOps。

本文会分为:DevOps是什么?;DevOps发展历程;DevOps与微服务、与容器的关系;华为云CodeArts。

DevOps是什么?

从字面来理解,DevOps一词由单词Development(开发)和Operation(运维)组合而成。因此,很多人认为,DevOps不就是把开发和运维两个团队合并了嘛。

但是,DevOps的实际意义其实远超字面的理解。它相当于是一组过程、方法与系统的统称;通过一系列手段来促进开发(应用程序/软件工程)部门 与 技术运营和质量保障(QA)部门之间的密切沟通、高效协作与整合;通过自动化地软件交付架构变更流程,让规划、开发、构建、测试、发布、部署、维护都能更快、更频繁、更可靠,保障开发结果的稳定可靠。

DevOps可以给团队带来什么呢?技术层面上,DevOps可以促进研发与运维团队的协作;业务层面上,DevOps提供的一致容器镜像,持续集成,持续交付,持续部署,持续测试可以更快地交付客户价值。

DevOps发展历程

最开始,程序还很简单的时候,工作量不大,程序员1个人就可以完成所有开发阶段的工作,也就不需要什么额精细化分工了。

接着,随着软件规模越来越庞大、复杂,程序员也开始了细分:研发、测试、运维。研发人员开发完代码交付给QA团队进行测试,测试完毕之后交给运维团队去部署。这一套“等上一个阶段所有工作完成之后再交付给下一个阶段”的流程也被称之为“瀑布模型(waterfall)”。下图是比较详细的流程分类【需求-设计-开发-测试-部署-维护】:

然后,团队发现瀑布模型并不适用于真实的开发环境。为什么呢?因为客户的需求很可能一开始并不明确后面要改动,或则要加上一些新的需求,或则产品中途出现了新的问题,这些都是需要改进的。再加上用户期望团队交付的时间变得越来越少,这时候,笨重工序化流程的瀑布式模型就不适用了。于是,敏捷开发(Agile Development)这个概念就在2000左右开始被关注(而华为则是在2000年左右引入了IPD开发模式,下一段进行讲解),它是一种可以应对需求快速变化的软件开发能力。其实简单来说,就是把大项目变成小项目,把大时间点变成小时间点。简单点来说就是从原先的“设计-开发-测试-部署”模式变为了“设计-开发-测试-开发-测试-开发…-开发-测试-部署”的模式:

敏捷开发这种模式可以大幅提高开发的工作效率,让版本的更新变得更快更频繁(可以更快交付给用户,更快得到用户的反馈从而更快的进行响应),风险也变得更小(可以更快发现问题,修复更容易,版本变化小风险也小)。 

敏捷开发模式既然好处这么多,为何我们还需要推DevOps呢?那是因为敏捷开发模式仅作用于开发阶段。而运维那边依然没有什么改动。但是在我们说DevOps之前,我们先把坑填了。上一段提到的“华为则是在2000年左右引入了IPD开发模式”又是什么呢?Integrated Product Development 集成产品开发,一个基于市场和客户需求驱动的集成产品开发流程管理体系。简单来说就是,将企业的思维从“做出来什么再去卖什么”变成“我们把能卖出去的东西做出来”。这个模式运用成功的企业有IBM、华为。

最后,就是到了我们的DevOps。前面讲到敏捷模式将开发环节的问题解决了,但是开发和运维之间的矛盾则变深了。因为开发和运维天然就有着完全不同的逻辑,开发接了客户的需求肯定要加新功能/新特性,就要做出改变,更不要说在敏捷模式下这改变更多更频繁了;而运维的核心需求则是稳定,不要出问题。DevOps的目标就是让开发人员和运维人员可以好好沟通好好工作,不要掐起来。

在DevOps的模式里,运维和开发是紧密关联的。在项目开发期间,运维人员就会介入到开发过程中来了解技术路线和架构系统,提前制定相对应的运维方案。而在运维的初期,开发人员也会接入到系统部署中来,提供相关的优化建议。理想的情况下,双方的沟通可以增进彼此的理(gan)解(qing)。此时的流程图变为了:

DevOps与微服务、容器的关系

DevOps在微服务/云原生时代,为何会这么炙手可热呢?什么是微服务:把整体的服务拆分成一个个小的服务;每个小型的服务可以独立运行在自己的进程中,服务之间互相协调。

容器化则是在硬件资源、操作系统上,将各个应用程序和类划分为不同的“运行环境”(也就是容器),占用资源变得更少,部署速度变得更快。

微服务和容器化,可以说为DevOps提供了很好的前提条件:业务整体变小变多了,开发环境和部署环境互相之间的影响也变小了。这简直就是为DevOps的理念“加快一个需求从规划到上线部署的过程”量身打造嘛。

 

书本推荐

按需交付服务从来都不容易。成功的交付是以一种符合客户预期的一致性、可靠性、安全性、隐私性和成本效益的方式交付客户所需的服务。无论服务提供商提供的是 IT 服务,还是更传统的快递或电力公用事业服务,这都同样适用。

与传统服务相比,IT 服务提供商因具有快速可部署的工具和云能力,在组织规模或物理位置方面受到的限制要少得多。现在小型 IT 服务提供商也能立即扩展规模,应对全球几乎任何已识别的市场需求。然而,由于在交付服务和管理服务方面存在认知差距,IT服务提供商很难做到可预测和可靠地交付符合客户期望的服务。

随着 IT 服务体系变得越来越复杂,确定服务组件和交付生态系统之间的动态关系是否符合客户预期便越发困难,更别提确保这些动态关系完全符合预期了。交付团队没有采取措施提高对这些动态关系的认识和理解,而是将重点放在了其他因素上,如提高交付速度、使用最新的云技术和架构方法,或采用当前最流行的流程或方法。这样做反而造成了上述动态关系和客户预期的进一步脱节。

随着脱节日益严重,交付团队声称所能提供的服务与实际交付的服务之间的差距越来越大,团队也不再能做出有效决策。为了弥合差距,交付团队又会进一步增加流程,使用更多的工具,然而这对于有效弥合差距并没有太大帮助,反而会形成一个恶性循环,使得交付团队提供的服务离满足客户期望的目标越来越远。这时交付团队就需要学会洞察。

学会洞察是为了提高交付团队的态势感知能力,这能让团队中的每个人仿佛获得了一种从未知晓的新感官或超能力。 《精益DevOps》 的首要目标就是帮助交付团队弥合认知差距,交付能让客户实现预期目标的服务。

本书在内容逻辑上分为三部分。

  • 第1、2章为第一部分,介绍了 如何应对IT服务交付中的问题。 该部分描述了IT服务从业者过于关注消除交付摩擦和降低交付风险的问题,这反而使得他们的态势感知能力,以及学习和改进的能力下滑。了解这个问题对于任何IT服务交付组织都很重要,尤其对于那些希望实现DevOps承诺的组织。

  • 第3~7章为第二部分, 详细讲解了服务交付中每个关键要素及其所起的作用 ,该部分探讨了这些要素的重要性、要素被误用的场景,以及误用对服务交付和团队的后果。我个人认为这是本书中最重要的部分。

  • 第8~14章为第三部分,该部分是 提高服务交付效果的实用指南 。这部分内容包括如何判断团队的成熟度,确保关键要素到位以实现连贯有效的交付;还提供了一些建议,关于如何组织和管理工作流程、构建与部署仪表化和自动化解决方案,以及采用法律法规要求的治理方式。

▲ 扫码抢购

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1488459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(学习日记)2024.03.04:UCOSIII第六节:main函数+前六节总结

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

连锁线上线下门店管理为什么需要使用分账系统

连锁线上线下门店管理的复杂性要求采用有效的分账系统,以实现降低税务风险、保障资金安全和合规运营。首先,通过分账系统,可以清晰记录不同门店的收入和支出情况,有利于确保税务合规性。其次,分账系统有助于将不同门店…

Scratch 第十六课-弹珠台游戏

第十六课-弹珠台游戏 大家好,今天我们一起做一款弹珠台scratch游戏,我们也可以叫它弹球游戏!这款游戏在刚出来的时候非常火爆。小朋友们要认真学习下! 这节课的学习目标 物体碰撞如何处理转向问题。复习键盘对角色的控制方式。…

23.基于springboot + vue实现的前后端分离-在线旅游网站系统(项目 + 论文PPT)

项目介绍 本旅游网站系统采用的数据库是MYSQL ,使用 JSP 技术开发,在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 技术选型 后端: SpringBoot Mybatis 数据库 : MyS…

Django官网项目 二

官网地址:Writing your first Django app, part 2 | Django documentation | Django 创建模组: 注册model (bug:没有加后面的逗号) 在manage.py 的目录下: python manage.py makemigrations polls pyth…

打印机状态错误的解决方法

在电脑操作中,用户遇到打印机状态错误的问题,但不知道怎么操作才可以解决问题?接下来小编介绍打印机状态错误的解决方法,帮助大家轻松解决打印机出现错误状态的问题,快速恢复打印机的正常工作状态,从而满足…

固定资产管理系统建设方案

固定资产管理系统需求要点: 1. 实现公司内部固定资产管理全生命周期管理,包括资产采购、资产入库、资产领用、资产借用、资产归还、资产报废、资产维修、资产调拨等全过程管理。 2. 可实现集团内部固定资产盘点管理,包括盘点计划、盘点查询等…

多平台拼音输入法软件的开发

拼音输入法从上个世纪发展到现在, 已经发展了几十年了, 技术上已经非常成熟了. 换句话说, 就是实际上没多少技术含量, 随便来个人就能手搓一个. 本文介绍一个简单的多平台拼音输入法软件的设计和实现, 支持 GNU/Linux (ibus) 平台 (PC) 和 Android 平台 (手机). 目录 1 中文输…

【C++庖丁解牛】默认成员函数

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 前言1. 构造函数1.1 …

低空经济20人|卓翼智能任雪峰:以技术驱动市场,引领无人机细分领域创新

作为国内系留无人机领域的领头羊企业,卓翼智能致力于提供智能无人系统解决方案。本期“低空经济20人”请到卓翼智能CEO任雪峰分享他对系留无人机研发应用的经验以及未来无人机行业生态发展的观点。 如今,无人机的应用场景逐渐广泛,在社会发展…

pycharm社区版+miniconda 环境配置学习

使用电脑为win10 64bit 一、下载: 1.pycharm社区版地址: 其他版本 - PyCharm 2.miniconda下载地址: Index of /anaconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 3.python下载地址: https://www.python.or…

百度AI,能否“投”出未来?

图片|freeflo.ai ©自象限原创 作者丨程心、罗辑 2月28日,百度发布了2023年四季度财报及全年未经审计的财务报告,AI大模型带来的收入和利润成为最大的亮点。 财报显示,2023年百度集团总营收达1345.98亿元,同比增…

一文读懂Penpad 以 Fair Launch 方式推出的首个资产 PEN

随着 2 月 28 日比特币重新站上 6 万美元的高峰后,标志着加密市场正在进入新一轮牛市周期。在 ETF 的促进作用下,加密市场不断有新的资金流入,加密货币总市值不断攀升。Layer2 市场率先做出了反应,有数据显示,当前以太…

混合注意力机制全新工作!性能表现SOTA!准确率达98.53%

在神经网络中,为增强模型对数据中重要特征的识别和处理能力,研究者们通常会同时使用不同类型的注意力机制,包括空间注意力、通道注意力、自注意力等。这种结合了多种不同类型注意力机制的技术就是混合注意力机制。 混合注意力机制的研究和应…

Thingsboard本地源码部署教程

本章将介绍ThingsBoard的本地环境搭建,以及源码的编译安装。本机环境:jdk11、maven 3.6.2、node v12.18.2、idea 2023.1、redis 6.2 环境安装 开发环境要求: Jdk 11 版本 ;Postgresql 9 以上;Maven 3.6 以上&#xf…

电脑无法开启虚拟化

vm开启虚拟化失败 如果出现以下错误,需要进入bios界面,不同电脑进入界面的方式不一样。这里以hp为例: 1、关机后,按住开机键和f10,进入如下界面(语言在主菜单里面) 2、选择先进和下面的系统选…

检修弧形导轨需遵守的原则

弧形导轨被广泛应用在各行各业中,特别是工业自动化领域中,是自动化机械设备中重要的传动零部件。在使用弧形导轨时,为防止意外发生或对机械设备造成损坏,在检修过程中必须遵守以下一些原则: ●安全第一:出现…

windows安装pytorch(anaconda安装)

文章目录 前言一、安装anaconda1、进入官网下载(1)点击view all Installers(2)下载需要的版本 2、一顿默认安装就行(到这一步这样填)3、进入开始找到Anaconda Prompt,点击进入到base环境 二、新…

docker部署aria2-pro

前言 我平时有一些下载视频和一些资源文件的需求,有时候需要离线下载,也要速度比较快的方式 之前我是用家里的玩客云绝育之后不再写盘当下载机用的,但是限制很多 我发现了aria2 这个下载器非常适合我,而有个大佬又在原来的基础…

Linux笔记-3

软件安装 概述 在Linux中,软件安装分为3种方式:绿色安装(压缩包解压之后就能直接使用),rpm安装(类似于Windows中的exe或者msi文件),yum安装 RPM(Red Hat Package Manager):红帽提供的软件包的管理工具。可以通过rpm命…