前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >龙门阵之 DevOps 门外汉须知

龙门阵之 DevOps 门外汉须知

作者头像
DevOps时代
发布2018-02-02 12:03:34
8000
发布2018-02-02 12:03:34
举报

如果你是DevOps的门外汉,不管是真汉子还是女汉子,希望这篇文章可以帮助你理解DevOps,掌握DevOps的主要知识点和实践。

龙门阵是四川话里聊天、唠嗑的意思,一群人坐在一起,喝着茶,天南海北的聊天。DevOps龙门阵会持续跟大家聊更多DevOps的话题,请大家多多关注。今天我们来聊DevOps门外汉须知,对于DevOps外行人或者站在门口的同学,你们需要了解的知识尽在其中。

先来一段闲话,最近我发现软件开发和去餐厅吃饭非常像,只是餐厅需要交付的不是软件,而是一桌菜,包含了前菜、主菜、甜点等等。拿去年很火的一部剧《好先生》来举个栗子:

吃饭的人就是用户; 点菜的服务员就是业务人员,负责收集用户需求进行分析; 主厨就是架构师,负责设计; 其他厨师就是研发,负责实现设计和用户需求; 试菜员就是测试,负责验证菜品是否符合标准要求; 上菜的服务员就是运维,负责将菜交付给最终用户,往往菜做的不好,做的慢,挨骂的总是上菜的人,因为运维是交付的最后环节,里用户最近,前序环节的问题都会累积到运维侧爆发。

餐厅做的好的地方在于:一道菜一道菜的上,要是等上一小时,一次性给你端一桌菜上来,而且是连桌子一起端,大家想想你的感受是啥?

好了,闲话完毕,我们今天重点聊三个话题:

  1. 我们正在经历的时代;
  2. DevOps是什么?如何理解?
  3. DevOps门外汉须知;

DevOps时代

为什么这么说?乐神 张乐老师分享过很多次VUCA,我们所面临的大环境就是易变的、不确定的、复杂的、模糊的。用户的需求很多时候是模糊和不确定的,在交付到用户手上之前,我们的软件和服务都存在着较大的风险。

同时我们这个时代正在经历最激烈的技术革命,开发流程、应用架构、部署和打包的环境、应用基础设施都在发生巨大的变化。PS:运维大神 赵班长说这张图让他睡不着觉,你呢?

尤其是技术架构,随着业务的发展,为了满足业务的要求和组织的复杂性,技术架构也在复杂化,面对右侧的架构,传统的开发方式、架构、基础设施都捉襟见肘。

下边这张图是2017年DevOps年度状态报告(高效运维和DevOps时代社区联合翻译中文版 )中的数据:

报告中将IT组织分为:高效能IT组织、中等效能IT组织、低效能IT组织,如下数据就是高低效能IT组织之间的对比:

部署频率就是每天部署上线的次数,体现的是生产力,高效能IT组织高出46倍; 交付时间是指从代码提交到部署上线的时间,越短说明工程交付能力越强,高效能IT组织少出440倍; 变更失败率是指每次部署失败的比率,体现的是质量,高效能IT组织低出5倍; 故障恢复时间是指故障后的修复时间,也就是常说的MTTR,生产环境的每一分每一秒的宕机都是直接经济损失,高效能IT组织要快96倍;

DevOps是什么,如何理解?

说完背景,我们进入DevOps的主题,DevOps为什么会存在,DevOps的冲突来自哪儿? 开发、测试团队和运维团队在思维、目标、KPI、技能、工具各个方面都是不一样的。

因为冲突的存在,DevOps之父Patrick作为IT工程师倍感沮丧,他在寻求使用敏捷的方式解决运维的问题,机缘巧合之下,举办了第一届DevOpsDays活动,并在Twitter上自发形成了DevOps运动,大家都在基于实践经验去解决开发与运维的协作问题。

在维基百科上概念是大家比较有共识的理解,很多人尝试诠释DevOps是什么?但是都不及这个概念精简。

我们一开始面对DevOps时就像盲人摸象一样,认为自动化就是DevOps、将看板运用到运维就是DevOps、DevOps需要开发去做运维、运维需要去做开发,这些理解都是片面或错误的。

我在学习DevOps的一开始认为,DevOps就是要解决最后一公里的交付问题,也就是从代码提交到发布上线的过程。

后来我从敏捷的思路去理解,DevOps可以说是敏捷的延伸,延伸到技术运营领域。每一次迭代都是开发、测试、运维协作完成,每个迭代都会有一次或多次发布上线。

后来,我参加高效运维社区的DevOps Master认证培训,对DevOps的知识体系有了更体系化的了解。

精益管理和TPS:是DevOps的基础理论支撑,包括持续改进、准时制、消除浪费、单件流等等。持续集成实践和TPS的安灯拉绳机制很类似; 敏捷管理:主要是敏捷开发的理论和实践; 持续交付:是DevOps最重要的工程实践,自动化的核心内容; IT服务管理:主要是讲究轻量级

DevOps是集大成者,它并不制造概念,它是讲很多理念和实践进行整合,打通端到端的过程,目标就一个服务业务,更快更好的交付业务。

DevOps门外汉须知

基于对DevOps的理解,我整理出了DevOps能力模型,包括如下五方面,后续的DevOps核心概念和实践参照这个思路给大家分享

敏捷研发

谈敏捷就一定会提敏捷宣言,我在学习敏捷的时候,老师说敏捷宣言最重要的一句话就是:我们一直在实践中探寻更好的软件开发方法。DevOps就是在探寻过程中逐渐演化出来,适合这个时代的软件开发方法。

下图是几种常见的敏捷开发方法:Scrum、XP和看板的关系

Scrum是最流行的敏捷开发方法,如下图是中国台湾精益和敏捷大师 李智桦老师的一张图看尽Scrum,大家可以详细研究,Scrum的重点内容:三种角色、四种会议、三种产物

极限编程讲究的是工程与技术实践,尤其是对反馈的要求很高,持续集成、结对编程、重构、测试驱动开发等实践都来自XP,这张图代表了不同时间的反馈周期。

看板是Anderson在微软推行Scrum的过程中研究出来的一套方法,原本目的是为了更好的推行Scrum。李智桦老师有一篇文章专门说明了Kanban和Scrum的关系,应该结合使用。

如下这张图也是李智桦老师针对看板的六条规则,大家可以参考,对Kanban而言,识别出团队的工作流至关重要。DevOps Master认证培训里有一个《凤凰项目沙盘模拟实战》需要团队使用Kanban来改善交付节奏和控制产能。

持续交付

持续交付包括:配置管理、持续集成、自动化测试、代码质量、部署流水线等方面,大家可以参考图片和直播内容进行更详细的了解。后续龙门阵会更深入的为大家分享持续交付的内容。

持续集成的基础是配置管理,至少需要使用版本控制系统将代码和配置管理起来。然后使用类似Maven这样的工具标准化代码目录结构和依赖管理,之后才能实现自动化构建,进一步才能做到持续集成

测试三角形是比较经典的分析自动化测试的成本和效果的图,由于自动化的单元测试成本太高,一般和写生产代码的成本比例是1比1,甚至更多,所以发展出了叫自动化测试的橄榄球模型,UI和Unit测试少做,重点做接口级测试,目前这种做法也是大多数团队在实践的。

在配置管理、自动化构建、自动化测试的基础上,我们的持续集成才能使完成的,如下这是一个持续集成的测试,你可以问自己三个问题来判断你们的持续集成做的如何?

  1. 每个开发是否每天至少都向主干提交一次代码?
  2. 每次提交是否都触发自动化构建和测试?
  3. 如果构建和测试失败,是否可以在十分钟内修复?

根据我的经验,大部分团队都通过不了这三个问题的测试,但并不是说一定要这样,我在做DevOps的过程中有个原则:简单粗暴最有效!先解决问题,再完善。

持续交付的核心是要打造一条从代码提交的部署生产的流水线,就像车间里的流水线一样,更加高效和标准。

高效运维社区之前做过一个部署流水线的Demo,大家可以看看基于开源工具,我们是如何实现端到端的持续交付的。 关于持续交付,乐神 张乐老师的《持续交付的体系化方法》更详细的梳理了持续交付的框架,推荐大家仔细研读,有机会也可以到DevOpsDays或者GOPS大会听乐神的分享,面对面交流。

大家听了这么多概念,对DevOps、敏捷、持续集成、持续交付的关系一定有点懵懵懂懂,这张图可以帮助大家理解DevOps。

技术运营

关于运维,我并不专业,后续我们会在龙门阵专栏里持续要求运维的大神跟大家深度分享,我这里贴一张SRE的图,供大家参考

之前请教过我认识的一位运维总监,中小型运维团队能力建设顺序是:规范与标准—>监控—>自动化部署—>日志管理

组织文化

这是大神Martin Fowler博客里的一篇文章,深度介绍DevOps文化,这次不展开,后续龙门阵会跟大家详细解读,DevOps需要组织文化的改进才能最终落地,Netflix就是完全重新定义了自己的组织文化:自由与责任,他们的DevOps、产品创新、云原生应用、微服务都做的非常好。

根据我的经验,影响(改变)组织与文化的两大利器:实践度量

实践在落地和坚持可以让团队朝着我们希望的行为习惯改进。

度量更是可以改进团队的行为,度量要慎重,一旦开始考核,度量很容易变味道。体系化的度量框架也是非常重要的,据说乐神 张乐老师正在整理,希望能帮助到更多的组织实现DevOps转型。

可视化

可视化对团队了解现状,发现改进方向非常重要,可以分为:过程可视化、数据可视化。

实践分布地图

这张图比较复杂,让门外汉看会比较烧脑,仅供大家参考,在不同的能力领域,可以有很多的实践可以做,大家还可以去关注CNCF整理的工具分布图,有这么多实践和工具,DevOps落地不用愁。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps时代 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DevOps时代
  • DevOps是什么,如何理解?
  • DevOps门外汉须知
    • 敏捷研发
      • 技术运营
        • 组织文化
          • 可视化
            • 实践分布地图
            相关产品与服务
            CODING DevOps
            CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档