消灭低效的幕后黑手——Qunar devops实践分享

2024-04-18 10:38

本文主要是介绍消灭低效的幕后黑手——Qunar devops实践分享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

本文内容节选自第六届全球软件案例研究峰会,时任去哪儿工程效率部总监王晓翔分享《消灭低效的幕后黑手——Qunar devops实践分享》实录,重点分享:提高工程效率存在的问题、取得的成果、要做的事情。(PPT+文稿)。

王晓翔一直致力于软件配置管理、软件质量管理和软件过程管理方面的工作和研究,拥有10多年的软件配置管理领域的从业经验。先后在中国海关数据中心、索尼移动通信、 中国体彩科技有限公司、去哪儿网等公司工作。

编者按:2017年11月9-12日,第六届全球软件案例研究峰会在北京国家会议中心盛大开幕,现场解读2017年「壹佰案例榜单」。时任去哪儿工程效率部总监王晓翔带来《消灭低效的幕后黑手——Qunar devops实践分享》的案例分享。

 

【内容简介】devops是文化、流程与工具的有机结合。Qunar具有先天的devops文化,在研发过程中有很多自动化工具的支持。在传统的“我能做什么”的思维模式驱动下,每个工具就是一个信息孤岛,工程师使用这些工具存在着多种浪费。借助devops思想,拆掉原先“各自为政”的自动化工具的墙,建立以应用为中心的全生命周期管理平台。

 

 

1、存在的问题

 

去哪儿目前有1200+工程师、500个项目经理、6500个线上应用、每天有200个需求发布、3000+的beta环境更新、500个应用版本被部署到线上环境。下图是IC系统统计出的9月20日全天数据,beta部署3338次,线上更新图529次。

 

早在三年前,Qunar的发布系统就已经可以做到多个应用按照预定义的顺序一键发布了。但是,多个单点上高效的工具组成的过程,就一定是高效的吗?听听业务线的反馈,答案就不难得出。下图,是在没有做devops之前,线上应用扩容一台机器的过程。步骤繁琐,效率低下。

 

问题及根源分析

 

从上面这个简单的场景暴露出我们目前面临的问题:工具太多、工程师学习成本高;维度不同、同类数据在不同工具中不一致;权限管理混乱

究其原因分为两点:

1. 各个工具由不同部分负责开发,而这个部分由于按照工作职责划分,所以出发点不同。这就是经常说的“部门壁垒”。

2. 不同工具的管理对象和目标不一致,导致信息集成困难,流程自动化就很难推进。

 

 

Qunar的devops方针:一个中心,两条主线

 

所谓“一个中心”,就是以提高工程效率为中心。实施devops不是目的,提高效率才是目的,所以我们内部都很少去讲devops这个词。而是不断去收集和发现业务线的需求,通过现场观察发现影响效率的环节,通过值班热线来收集高频问题,这些不仅是我们改进的原动力,也可以直接验证我们的改进效果。所谓“两条主线”,第一条是“应用线”。一个应用被注册后,从开发到上线到运维,是一个不断迭代的过程;第二条是“需求线”。持续交付关注的是一个需求从提出到交付的时间,这个时间越短说明一家企业越高效。而随着微服务架构的盛行,很多时候为了一个业务需求需要改动几个,甚至十几个应用。如何管理这个过程让其高效,也是非常重要。明确了“一个中心,两条主线”的方针后,我们解决问题的思路也非常清晰了。下图是落实这一方针后,我们工具平台的宏观表现。

 

 

2、取得的成果

 

一、应用的生命周期管理

 

解决思路

 

为了解决过去的部门壁垒和信息孤岛问题,我们在建立应用的全生命周期管理时,第一件事情就是为每个应用创建一个全局唯一的ID:APP_CODE。一个拥有了APP_CODE的应用,就好比一个被分配了身份证号的合法公民,享有很多合法权益。以前分散在各个阶段各个系统的信息,都将与这个APP_CODE建立联系,或作为应用的基本属性,或作为应用的孤岛资产(典型资产:机器,IP)。当然应用也要“遵纪守法”,这里特别强调做devops的一大原则——规范先行。所谓没有规矩不成方圆,而没有规范的devops就是无稽之谈

 

关于应用的属性:

在对应用的属性数据进行梳理后,我们把它分为三类:基本属性、部署属性、服务属性(偏运行时)。其中,基本属性数据包括:服务类型,服务归属(业务线或BU),Owner,member等;服务属性包括:对机器资源的要求,对操作系统/基础软件的要求,服务启/停配置等;部署属性包括:源码地址,打包命令,部署时个性开关等。

 

关于应用的资源:

我们把应用所需的机器、域名等都做为资源来管理,尤其是机器资源,能够精确到具体应用,不仅给OPS运维提供更大的便利,一旦机器出现问题可以快速定位APP_CODE的owner,而且在做成本核算时也更清晰准确。为了方便对不同用途的机器进行管理,我们又引入了一层逻辑概念,即环境。一个应用可以被部署在多个环境,一个环境可以包含多台机器。典型场景就是一个应用,先被部署在一个dev环境(1台机器),然后部署在一个beta环境(2台机器),最后部署在prod环境(4台机器)。

 

为了实现信息的自动整合、工程师操作的流畅,我们对原有工具进行了系统点整合。是的,是整合,而不是推翻重建,我希望你们也是这样去做。

整合后的平台(我们后面都叫它Portal)的系统结构如图所示:

 当我们把原有散落在各个工具平台中的信息,按照以上维度重新定义后,应用的生命周期脉络变得非常清晰。下面,我们再看看一个工程师的日常工作模式吧。如下图:

 

工程师进入Portal平台后,选择要处理的一个应用便进入该应用的详情页。这个详情的版面被分为4块:(1)左上角展示应用的基本属性;(2)左下角展示服务属性;(3)右上角是线上服务的变更事件:如定时任务执行情况;服务重启;服务发布等;(4)右下角是应用的环境/机器信息,以及运行在机器上的服务版本信息。原来需要在多个系统间切换才能收集到的信息,在这样一个详情页直观的展示出来,而且高频动作也都有相应的快捷按钮,非常方便。

 与此同时,我们还做了一些过程可视化的改进。

 

如图:

 

 

二、项目的生命周期

 

解题思路

 

与应用生命周期保持一致。在项目管理中,有两个明显的问题:(1)项目进入开发阶段的过程对于项目经理来讲就是黑盒,想要了解细节沟通成本很高。(2)项目的实际数据靠手动填写,既不及时,也不准确。为此,我们通过规范源码的分支命名规范,将工程信息与项目信息建立了联系,通过工程中的不同事件映射到项目的不同阶段,从而自动填写项目管理中的“实际时间”自动。

 

 

 

先以一个实际的项目为例,看看整合了工程信息后的项目管理平台都有哪些变化吧。

 

 除了原有项目管理平台维护的需求详情,计划安排,人员信息外,我们通过嵌入页面的方式,将所有与这个项目相关的工程信息进行了集中展示。在这个工程信息窗口中,除了应用名称,源码地址,分支名称外,还将CI结果进行了汇总展示。不仅可以清晰看到进度,还可以看到质量。

 

 

能够做到项目信息与工程信息的集成,关键一点就是通过分支命名规范建立关系,即:在分支名称中包含PMOID的,之后项目管理平台通过消费各种工程类消息,进行信息整合。稍后我也会再单独介绍为我们的devops平台立下汗马功劳的消息系统IC。用下图更能直观看到消息的生产者和消费者的关系:

 

 

说到这里,不得不介绍一下为我们的devops平台立下汗马功劳的消息系统IC。IC的诞生背景就是为了降低系统集成的复杂度,消息生产者只负责发送消息,任何对该消息感兴趣的一方都可以来消费它。比如PMO中展示的工程信息,就是由项目管理平台消费了这样几类消息:

1. branch-created: 生产者——git

2. sonarResult:生产者——Sonar

3. codediff:生产者——codereview

4. beta-released: 生产者——发布系统

5. prod-released: 生产者——发布系统

IC中已经定义的消息类型已经有40多种,在我们内部工具集成中发挥着越来越重要的作用。

 

三、其他基础服务

 

测试环境管理平台Noah

 

当我们的服务拆分到一定程度后,马上会面临的一个新问题就是——要验证一个业务场景,需要部署N多个服务。如何提高这个过程的效率,在Qunar也有一个强大的平台支持,那就是Noah。在Noah平台,用户可以通过选择应用的各种组合快速构建满足业务测试的环境,或基于一个已有环境快速copy出一个全新环境。目前使用Noah的典型场景有两类:一类按照项目创建环境,满足开发工程师和测试工程师的验证需要;一类是满足接口自动化测试。关于Noah是值得专门写一篇文章来介绍的,这里只贴几个截图让大家有个直观了解吧。

 

在Noah平台新建环境,选择一种新建类型。如果是复杂的应用组合,我们建议用户以环境模版的形式保存下来,方便其他用户复用。


如果是自定义方式新建环境,用户可以按需添加应用信息,数据库,以及配置网络以及环境变量。

 

环境的创建过程我们也做了可视化展示,方便用户了解进度或定位问题。

 

 

环境的每一次变更我们也会如实记录下来:

 

一个被成功创建的环境,我们还提供对其服务的监控:

 

 

四、实践总结

 

提高效率、以始为终

 

我们实践devops的目的是要提高效率,那么第一步是要能够准确发现那些地方效率低下。精益生产中定义了七大浪费,而这些问题在软件开发过程中同样适用。发现这些浪费最直接的办法就是走进现场。去哪儿王老师的经验是:没有比现场观察更能发现问题的根源所在。

 

一旦找到低效的根源,接下来我们还需要用系统的思路去解决它。而不要简单的头痛医头,脚痛医脚。最终改进方案上线后,我们还要去验证那个被我们识别为低效的问题,是不是真的被消灭了。

 


 

Qunar devops工程实践总结

 

 

1. 每个应用有自己的唯一标识,贯穿应用整个生命周期

2. 每个项目有自己的唯一标识,贯穿项目管理生命周期

3. 通过分支命名规范建立起项目与工程信息打通的基石

4. 每个工具是一个独立服务,通过消息中心实现系统集成

5. 做自己工具的第一个用户

 

工具一览

 

 

3、还要做的事情

 

没有最好,只有更好,注定了提高工程效率是一条没有终点的路。接下来去哪儿在工程效率提升上,将要完成信息可追溯到可预测,过程自动化到智能化的迈进。

 

以上内容来自王晓翔老师的分享。

这篇关于消灭低效的幕后黑手——Qunar devops实践分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/914545

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

Prometheus与Grafana在DevOps中的应用与最佳实践

Prometheus 与 Grafana 在 DevOps 中的应用与最佳实践 随着 DevOps 文化和实践的普及,监控和可视化工具已成为 DevOps 工具链中不可或缺的部分。Prometheus 和 Grafana 是其中最受欢迎的开源监控解决方案之一,它们的结合能够为系统和应用程序提供全面的监控、告警和可视化展示。本篇文章将详细探讨 Prometheus 和 Grafana 在 DevO

springboot整合swagger2之最佳实践

来源:https://blog.lqdev.cn/2018/07/21/springboot/chapter-ten/ Swagger是一款RESTful接口的文档在线自动生成、功能测试功能框架。 一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务,加上swagger-ui,可以有很好的呈现。 SpringBoot集成 pom <!--swagge

分享5款免费录屏的工具,搞定网课不怕错过!

虽然现在学生们不怎么上网课, 但是对于上班族或者是没有办法到学校参加课程的人来说,网课还是很重要的,今天,我就来跟大家分享一下我用过的几款录屏软件=,看看它们在录制网课时的表现如何。 福昕录屏大师 网址:https://www.foxitsoftware.cn/REC/ 这款软件给我的第一印象就是界面简洁,操作起来很直观。它支持全屏录制,也支持区域录制,这对于我这种需要同时录制PPT和老师讲

BT天堂网站挂马事件后续:“大灰狼”远控木马分析及幕后真凶调查

9月初安全团队披露bt天堂网站挂马事件,该网站被利用IE神洞CVE-2014-6332挂马,如果用户没有打补丁或开启安全软件防护,电脑会自动下载执行大灰狼远控木马程序。 鉴于bt天堂电影下载网站访问量巨大,此次挂马事件受害者甚众,安全团队专门针对该木马进行严密监控,并对其幕后真凶进行了深入调查。 一、“大灰狼”的伪装 以下是10月30日一天内大灰狼远控的木马样本截图,可以看到该木马变种数量不

【干货分享】基于SSM的体育场管理系统的开题报告(附源码下载地址)

中秋送好礼 中秋佳节将至,祝福大家中秋快乐,阖家幸福。本期免费分享毕业设计作品:《基于SSM的体育场管理系统》。 基于SSM的体育场管理系统的开题报告 一、课题背景与意义 随着全民健身理念的深入人心,体育场已成为广大师生和社区居民进行体育锻炼的重要场所。然而,传统的体育场管理方式存在诸多问题,如资源分配不均、预约流程繁琐、数据统计不准确等,严重影响了体育场的使用效率和用户体验。