中国速度之二神山建设(4):全能运维,召之即来,来之即战 | IDCF DevOps案例研究...

内容来源:DevOps案例深度研究第4期 – 火神山雷神山 DevOps实践研究战队(本文只展示部分PPT及研究成果,全程视频请移步文末)

本案例内容贡献者:赖泽薇、张扬、邓茜芸、韦一、刘德权、候利涛、冯利娟、常相宇、张力、韩丰、陈浩 

IDCF指导老师:王立杰、许舟平、姚冬、徐磊

(图片来源于网络)

一、中国速度,为瀑布站台

我们看一下火神山雷神山建设的整体过程,它是典型的瀑布模式。主要体现在阶段定义清晰、顺序串行开展,前期规划驱动,交接棒式进行,上一个阶段的输出是下一个阶段的输入。由于前期在时间、范围和成本方面做了强力的约束,那么在进行中不接受变化,因为变更代价巨大。

在上世纪60年代软件危机爆发之后,软件行业继续找到一种科学体系化的方法来进行软件开发,最早的瀑布模型就是来自于工业制造和建筑建造的模式。

但是为什么在我们的软件领域,要从起初瀑布模式往敏捷模式演进?因为软件开发不确定性更多,需要快速应对变化的需求,业界对研发模式方面也在不断地探索,如何提升效率、提高软件质量。常见的几个模型有瀑布、螺旋、迭代、敏捷。

其特点主要表现为:

  • 瀑布式开发:顺序开展、文档驱动。要求每一个环节的工作尽可能充分讨论、论证,减少施工风险,减少返工。

  • 螺旋开发:开始将瀑布开发的模式进行粒度的拆分,将整个开发过程划分为一个个阶段,在每个阶段引入风险分析。它是风险驱动的方法体系,在每个阶段之前,都必须进行风险评估,使软件在无法排除重大风险时有机会停止,以减小损失。但螺旋开发更倾向于是增量开发方式,它将整个软件功能的开发拆分为多个可控的阶段,最终的软件交付还是在最后一步。

  • 迭代式开发:在螺旋开发之上出现了先保证能用,再想办法让它好用。不要求每一个阶段的任务做的都是做到尽善尽美,而是根据优先级来交付高价值的功能。以最短的时间构建一个 MVP,交付给客户之后,再通过客户或用户的反馈,逐步进行完善。 

  • Scrum框架:是一个包含增量和迭代的框架。强调固定周期、固定节奏、强调团队协作,强调质量、强调成果可发布,能快速被验证。

那么我们如何选择这些模型和框架?

其实对于简单域,我们更推荐瀑布模式。因为需求明确、范围清晰、周期确定的情况下,瀑布也可以很快。只需要强有力的执行计划、不断提升技术,自动化一切,有效的沟通,团队赋能就可做到快速交付,而无需反复验证确认。

但是有个问题是,软件开发往往是一个繁杂或者复杂的过程,因为需求是不断变化的。尤其是对于创新型的业务应用,在一开始的时候只是一个商业想法,构建业务应用也是为了快速验证这个想法是否可行,这是一个不断假设和验证的过程。在这样的场景下,敏捷模式是更合适的。

其实我们很多人都忽略了敏捷宣言的最后一句话,往往最后一句话也是最重要的。这句话是“也就是说,尽管右项有其价值,我们更重视左项的价值。” 它想表达的是尽管瀑布价值有其价值,但是我们更重视敏捷开发的价值,这是一种价值观的取舍。所以很多时候瀑布和敏捷会存在融合。

从火神山雷神山医院的建设来看,在整体上很多项目不得不以瀑布计划的方式进行,核心是减小瀑布模型的粒度,采用敏捷开发的优秀实践方式,提高开发的沟通效率。

二、中国速度,中国质量

从早期丰田的精益生产系统,一直到目前流行的DevOps理论框架,关于项目质量管理的方法论有很多种。在这里,我将这些历史的和现存的各种质量管理的核心思想抽象并概括为“质量内建三部曲”,即:

从“做正确的事”,到“正确地做事”,再到“最小的质量成本”。

从项目生命周期的维度,按照质量内建的原则,分别从设计、实施、验收和运维这四个阶段进行质量管理和控制。

三、全能运维,召之即来,来之即战

两座医院的医疗团队组建起来了,是不是就可以按部就班开展救治,就万事大吉了?很显然并不是,等待医疗团队来解决的困难还有一大把呢,我们这里列出了医疗团队在接手救治的过程中面临的四个方面的主要困难。

  • 一是业务非常紧急但是医院的交付却谈不上多么完整。多个支援雷神山的医疗团队在接手病区后发现,等待他们的几乎都是空空如也的病房。医护人员要让病房工作起来,需要自己先动手到各处寻找、搬运、安装和现场调试众多设备。这就相当于既要当好运维,还得帮开发擦屁股收拾残局。

  • 二是业务类型全新但是培训却谈不上多么充分。两家医院的医疗团队成员本职专长业务千差万别,在疫情的紧急要求下,却都需要在极短时间内完成新冠肺炎诊治这项新业务的培训熟悉,然后立即投入到实际运维工作中。

  • 三是团队都是临时组建,投入实际诊治工作之前缺乏必要的磨合。由于各个医疗团队都是来自多个地方的人员临时组建而成,收治工作过程中的所有配合与协作,都是从零开始,这对所有运维人员的业务素养和团队配合能力都提出了极高的要求。

  • 四是疫情严重,医护人员本身处在一线,被传染的风险极高。这就要求全体医护人员在开展收治工作的过程中,必须千方百计做好充分的自身防护。

火神山和雷神山两座医院,在短时间内汇集了来自全国各地的军队和地方医护人员,他们克服重重困难,开足马力收治新冠肺炎患者,快速将两座医院的效能发挥到最大程度,成为了此次重大疫情防控战斗的中流砥柱。这些医护人员面临的任务艰难程度是前所未有的,但是他们的实际表现却足以令我们所有人刮目相看。从这个意义上来说,他们绝对称得上是全能型的运维团队。

东方红,太阳升,春天就要来到武汉城。当我们在这里坐而论道,侃侃而谈的时候,前方传来好消息,截至目前,火神山和雷神山两座医院的医护团队,全都是0感染!距离战役结束双0感染的目标,我们又近了一步!(注:本文成文时间 2020年3月15日)

拓展阅读

本次案例解读分为四篇,本文为第四篇章,请关注本公众号,持续阅读~

  • 第一篇 坚强的领导核心,“小团队大后台”组织结构(点击查看)

  • 第二篇 完善的项目计划,高效能价值流(点击查看)

  • 第三篇 有力的技术保障,基建世界里的云原生缩影(点击查看)

  • 第四篇 全能运维,召之即来,来之即战

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

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

相关文章

Spring Cloud部分源码分析Eureka,Ribbon,Feign,Zuul

Eureka SpringCloud Eureka使用NetFlix Eureka来实现的,它包括了服务端组件和客户端组件,并且都是用java 编写的。 Eureka服务端就是服务注册中心,Eureka客户端主要处理服务的注册发现,通过注解和参数配置的方式,客户…

C++ class实现邻接表存储的图(完整代码)

代码如下: #include <iostream> #include <queue>using namespace std; const int MaxVertexNum 30; typedef int InfoType; typedef int VertexType;class Node {friend class VNode;friend class ALGraph; private:int adjvertex;InfoType info;Node *next; };…

世界上首个被数学证明安全的OS微内核seL4成立基金会

Linux 基金会正在与澳大利亚国家科学机构 CSIRO 合作&#xff0c;打造 seL4 操作系统微内核生态。近日 Linux 基金会宣布托管 seL4 基金会&#xff0c;该基金会以澳大利亚国家科学机构 CSIRO 的数字机构 Data61 创建的 seL4 操作系统微内核为基础项目。seL4 是一个安全操作系统…

数据结构(哈夫曼树,哈夫曼编码)入门篇,JAVA实现

什么是哈夫曼树 哈夫曼树就是一种最优判定树&#xff0c;举个例子&#xff0c;如下一个判断逻辑 if(s<60) g1; else if(s<70) g2 else if(s<80) g3 else if(s<90) g4 else g5; 分数概率图如下 如果按照代码从上到下顺序构造判定树&#xff0c;那么如下图所示&am…

C++ class实现十字链表存储的图(完整代码)

代码如下: #include <iostream> #include <queue> using namespace std; typedef int InfoType; typedef int VertexType; const int MaxVertexNum 30;class ArcNode {friend class OLGraph;friend class VertexNode; private:int tailvertex, headvertex;ArcNod…

hystrix隔离策略对比

hystrix隔离策略 zuul的隔离实现是基于hystrix实现的&#xff0c;hystrix支持线程池隔离和信号量的隔离 # 信号量隔离&#xff1a; it executes on the calling thread and concurrent requests are limited by the semaphore count --引自官网单每次调用线程&#xff0c;当…

中国速度之二神山建设(1):坚强的领导核心,“小团队大后台”组织结构 | IDCF DevOps案例研究...

内容来源&#xff1a;DevOps案例深度研究第4期 – 火神山雷神山 DevOps实践研究战队&#xff08;本文只展示部分PPT及研究成果&#xff0c;全程视频请移步文末&#xff09;本案例内容贡献者&#xff1a;赖泽薇、张扬、邓茜芸、韦一、刘德权、候利涛、冯利娟、常相宇、张力、韩丰…

通过Java编写一个服务器理解动态Web,静态Web

静态Web 说到Servlet自然就要说到Web,Web分为静态Web和动态Web&#xff0c;之前我一直都傻傻分不清两者的区别&#xff0c;直到用JAVA编写了一个服务器后才明白二者的区别&#xff0c;所谓静态Web&#xff0c;实际上就是指&#xff0c;客户端要请求的资源文件&#xff0c;服务器…

Hystrix在网关Zuul使用中遇到问题

Hystrix在网关Zuul使用中遇到问题 Zuul默认隔离策略级别是信号量隔离&#xff0c;默认最大隔离信号量是100 信号量隔离和线程隔离的区别&#xff1a;https://blog.csdn.net/liaojiamin0102/article/details/94394956默认的设置如源码&#xff1a; //在ZuulProperties 类下游…

C++ 实现无向图的最小生成树Prim算法(附完整代码)

实现Prim算法&#xff0c;需设置两个辅助一维数组lowcost和closevertex。 其中lowcost用来保存集合V-U中各顶点与集合U中各顶点构成的边中具有最小权值的边的权值&#xff1b;数组closevertex用来保存依附于该边的在集合U中的顶点。 过程: 假设初始状态时&#xff0c;U{u0}&a…

中国速度之二神山建设(2):完善的项目计划,高效能价值流 | IDCF DevOps案例研究...

内容来源&#xff1a;DevOps案例深度研究第4期 – 火神山雷神山 DevOps实践研究战队&#xff08;本文只展示部分PPT及研究成果&#xff0c;全程视频请移步文末。&#xff09;本案例内容贡献者&#xff1a;赖泽薇、张扬、邓茜芸、韦一、刘德权、候利涛、冯利娟、常相宇、张力、韩…

C++ 实现无向图的最小生成树Kruskal算法(完整代码)

按照Kruskal思想&#xff0c;n个结点的生成树有n-1条边&#xff0c;故反复上述过程&#xff0c;直到选取了n-1条边为止&#xff0c;就构成了一棵最小生成树。 实现Kruskal算法的关键问题是&#xff1a; 当一条边加入T的边集中后&#xff0c;如何判断是否构成回路。 一种解决方…

MySql 内连接,外连接查询方式区别

MySql 内连接&#xff0c;外连接查询方式 CREATE TABLE question_test (q_id int(11) DEFAULT NULL,q_name varchar(10) DEFAULT NULL,q_part varchar(10) DEFAULT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8CREATE TABLE answer_test (a_id int(11) DEFAULT NULL,a_name varch…

让我的 .NET Core 博客系统支持 Docker

点击上方蓝字关注“汪宇杰博客”导语我的博客&#xff08;https://edi.wang&#xff09;所使用的博客系统 Moonglade 开源已经一年多了。目前已有至少4位社区朋友使用此系统在 Azure、阿里云上部署了自己的博客。可惜长久以来该系统一直缺乏 Docker 支持&#xff0c;而 .NET Co…

C++ 实现带权有向图的单源点最短路径Dijkstra算法(完整代码)

首先&#xff0c;引进一个辅助向量D&#xff0c;它的每个分量D[i]表示当前所找到的从始点v0到每个终点vi的最短路径的长度。 它的初态为&#xff1a;若从v0到vi有弧&#xff0c;则D[i]为弧上的权值&#xff1b;否则&#xff0c;置D[i]为∞。 显然&#xff0c;长度为 D[j]Min{…

[ASP.NET Core MVC] 如何实现运行时动态定义Controller类型?

昨天有个朋友在微信上问我一个问题&#xff1a;他希望通过动态脚本的形式实现对ASP.NET Core MVC应用的扩展&#xff0c;比如在程序运行过程中上传一段C#脚本将其中定义的Controller类型注册到应用中&#xff0c;问我是否有好解决方案。这是一个挺有意思的问题&#xff0c;我们…

C++ 实现带权有向图的每对顶点之间的最短路径Floyd算法(完整代码)

基本思想是&#xff1a; 假设求从顶点vi到vj的最短路径。 如果从vi到vj有弧&#xff0c;则从vi到vj存在一条长度为arcs[i][j]的路径&#xff0c;该路径不一定是最短路径&#xff0c;尚需进行n次试探。 首先考虑路径&#xff08;vi, v0, vj&#xff09;是否存在&#xff08;判别…

等额本息,等额本金区别

等额本金&#xff0c;等额本息区别 买房银行贷款分为两种&#xff1a; 等额本金和等额本息 等额本息 等额本息定义&#xff1a;还款本金占比逐月递增&#xff0c;利息占比逐月递减&#xff0c;月还款数不变由于每月的还款额度是一样的&#xff0c;其中每个月的还款包括了根…

【视频回放与课件】Build your AI solution with MLOps

4月8日在Global AI Community on Vitural Tour与大家分享了Build your AI solution with MLOps的专题&#xff0c;本课程主要介绍了微软Azure Machine Learning如何使用 , 以及如何通过Azure Machine Learning 结合 MLOps的概念完成机器学习项目的工作。本次Global AI Communit…

C++ 实现分块查找(顺序存储结构)(完整代码)

代码如下: #include <iostream> using namespace std; const int Maxsize 1000; const int MINNUM -999999; class Index_table {friend class SeqList; private:int key;int address; };class SeqList {//该顺序表从下标为0开始 public:~SeqList(){delete[] elem;del…