网络Devops探索与实践 流程管理分析师
https://mp.weixin.qq.com/s/OKLiDi78uB8ZkPG2kUVxvA
网络Devops探索与实践
Devops作为一种重视软件开发人员与运维人员的沟通合作的文化及管理手段,已经在系统需求管理、开发构建、部署发布等场景显示出其便捷、可靠等优势。腾讯网络在基础架构海量运营中积累了不少经验,基于Devops的理念重新设计了运营系统的软件架构。接下来,会介绍该系统在事务流程化、codeless、开发生命周期管理、产品化等方面的实践经验。
为什么要引入Devops模式?
老的开发模式这样会出现多个问题:
最常见的一个场景:开发这边的排期已经到2个月之后,运营这边觉得太晚了。但前面确实有那么多开发需求待实现。开发搞不过来了。
某些新的监控项目,运营通过具体的数据才能知道该功能的业务价值;开发的同学把功能上线后,就忙着下一个需求了,对后续的运营关注不多。经常会导致历史上积累了非常多的工具系统,但作用都很寥寥。
基础架构的运营系统,原来只针对自研业务做了大量的功能;后来到公有云,现在也有大量的私有云客户,服务的对象发生了变化。外部的客户对功能需要做二次开发,需要具备Devops能力。
为了解决以上这些问题,需要系统化的来进行解决。根本上来说,就是要以人为本,提升运营与开发的满意度,Devops是一个切实可行的方案。、、
Devops没有发明任何新技术,他只是一种软件开发的模式。这里有个Devops的分级模型,是国内业界的前辈制定了一个规范,最近也已经通过了ITU-T组织的审核。这里内容比较多,不逐一赘述。基础架构Devops的实践过程,是借鉴其理念,让大家都在同一个简单易用的软件平台上进行合作开发,达到服务快速上线目的。其中最主要的一个关键点就是双方要进行融合,互相促进。
腾讯的网络运营先后经历人工操作、工具脚本、自动化等这几个阶段。运营团队,就是我们熟悉的网工,过去都有专业的开发人员来进行配套的工具系统开发。在过去几年,网工们的开发能力持续提升,在Devops平台的加持下,已经掌握了通用的开发能力,一些运营过程中需要的功能,可以基于Devops平台自行开发了。这样,传统的开发人员和网工,都可以基于这个统一平台来“吃自己的狗粮”。运营人员自行开发功能,上线后出现问题,反查自己设计的业务逻辑;开发人员主导开发功能发布后,出现了bug,也自己定位代码或者平台的问题。这样,发现问题后,都先从自身出发来排查,减少了互相埋怨,大家的关系也相对融洽起来。
如何建设Devops平台?
我们把建设的过程分以下6个方面来介绍。
1、上层规划 – 运营事务流程化
无流程不运营。我们在内部先把这个意识先进行了统一,这个是Devops开发的前提,也是Devops任务可编排的前提。我们经常说可编排,编排完了之后,不就是由一个个编排后节点串接起来的流程吗?下面跟大家介绍下我们内部总结出来的流程成熟的模型。初步评估,腾讯基础架构运营处在level 3这个阶段。怎么解读呢?
- 流程体系化,是指我们各个运营业务基本都有了对应的线上流程。几乎不存在线下操作的场景了。
- 部分的流程完成生命周期管理,这个是对流程控制端到端的一个需求。
- 较为完善的OLA/SLA管理,有了详细的OLA数据,我们就能对每个工单的实施过程都能详细的分析和管理。
- 工具系统敏捷迭代,系统工具除了能直接解决业务的需求,还要有二次开发的能力。
在系统架构顶层设计方面,我们使用DDD—领域驱动设计的模式,具体到Devops平台,着重领域层的实践。把Devops的整体功能模块分为四大块:
- 可视化编排平台 – 这个是运营事务流程化的具体落地方式。流程图让业务逻辑可以非常直观的展示出来。
- 应用管理模块 – 方便用户参与开发。SDK的方式,是开源共建的基础,减少了大量重复代码;权限管理,有效避免了用户之间的互信影响。
- 数据运营模块 – 数据化管理。流程及工单数据每天都会以非常大的量级增长,没有完善的任务超时告警及运营数据自动收集分析功能,后续的业务维护会非常耗时耗力。
- 平台管理 – 是系统运维的重要窗口。让人人可运维成为可能。
2、业务逻辑 – 无代码化开发
无代码化开发,并不是指一行代码都没有。而是尽量减少编码的场景。在很多模块中,Devops平台把设备命令模板层、业务函数、业务流程及触发规则等这四个层次,都用对应的模板或SDK封装起来,形成可复用的逻辑。这里列举的是命令模板这一层的封装。对于运营人员来说,在Devops体系的驱动下,开发能力逐步提升。同时,通过配置化或少量的代码,可以用极低的成本,快速开发上线验证类的功能,不需要任何专业开发资源投入,大大较少试错的成本。
3、Devops的生命周期管理
这里是从Devops开发的新模式出发,把过程中需要配套的功能点逐一进行完善,从而完成了Devops开发整个生命周期的管理。
1)需求管理。对需求进行建模,把功能点往各个预分配好的领域靠拢,避免功能碎片化。在腾讯内部,有TAPD工具对需求做详细跟踪,保证落地效果。 2)开发环境。这个是参与Devops开发同学最关心的地方,直接关系到开发效率。主要涉及环境统一配置、代码版本管理、测试覆盖及CI/CD等环节。 3)流程管理。事务流程化后,会产生非常多的流程,流程图需要方便创建及修改;其次在工单建立后,会马上实例化,任务执行过程中的异常超时基础配置需要在OLA/SLA中进行配置。 4)任务管理。具体事务的操作,更多的是调用第三方接口和对设备进行查询操作。需要全程对任务的执行过程进行跟踪,其次需要把可以复用的代码通过SDK有效管理起来,避免重复开发。 5)运维管理。这块是整个Devops平台的后腰,保证系统的正常运行,以及出现问题后快速恢复。
4、可维护 – 产品化的控制台
提供便于Devops应用开发和运维的WEB控制台,旨在通过页面可视化以及页面可操作的手段,提升开发和运维效率。在过去,我们讲的D/O分离是指开发与系统运维的分工。在Devops时代,运维工具不但面向专业开发人员,也需要面向业务开发人员,让大家在同一个控制台中发现问题、定位问题。在运维底层功能方面,我们把流程实例管理、任务管理及控制台的功能,按不同的角色进行开放。本着谁开发,谁负责的原则,大家一起共同把系统平台及业务功能模块的可用性维护起来。
5、认证管理 – 建立岗前认证培训体系
Devops是一个以人为本,回归人性的一种开发运维文化,其效果体现更多的是在于人,在于从业人员能力的提升,更注重开发人员的感受。所以,在内部有一个Devops的认证体系,经过这个体系的培训,可以让一个小白用户从零开始逐步上手。这个培训体系主要分为四个步骤: 1)开发知识基础。主要是学习开发环境、代码管理及代码检查一些基础的知识。 2)Devops功能开发。这个是按照基础架构运营功能的特点来展开的,主要的内容包括需求的提炼汇总,把运营需求用流程图的形式展示出来,然后进行任务节点的逻辑代码编写。 3)demo实战。经过以上两个阶段的学习,这里可以开始动手了。 4)经过一系列培训,通过考试后,对学员颁发证书。并根据不同的能力水平,证书也会区分一级、二级和三级。
6、最差实践 – 坑点
我们的题目叫“最佳实践”,但这个过程并不是一帆风顺的,过程中经历了非常多的挫折与不理解。我们把这些因为考虑不完善而踩坑的地方总结了几个最差实践。
第一方面就是主要功能点缺乏,用户使用满意度不高。
1)尝试去优化某个具体的环节,而忽略了全局优化的可能 前期缺少顶层设计,举个例子,我们之前一直以为画流程图是用户接触Devops系统的第一个界面,是业务需求转化的第一步。就千方百计的把画流程图的界面进行优化。但用户在画完图了后,后面就很少会关注了。
2)产品化不够,用户使用不够友好 一个功能完备的Devops平台就跟建设一座城市或一个小区一样,有太多的功能点需求开发。SDK的合入规则,云函数的调用方式等等。这些专业的开发技能,对于传统的开发同学来说,大家交流起来是很顺畅的。但对于运营同学,要跟大家解释就显得比较费劲。
3)研发效能低下 本地开发环境无法与线上环境保持一致,调试困难。还有业务代码逻辑的经常需要线上调试,测试的覆盖率长期偏低,功能稳定性无法保证。还有bug定位跟踪的方式比较单一,一个bug需要分析半天才能知道问题点在哪里。 第二方面是过度设计,没有使用户真正获益。对于Devops的深入程度,有一点我们必须牢记,那就是Devops平台系统本身的成功并不是真正的成功,只能是业务的效率提升,使用Devops的用户满意度提升了,才是检验成功的唯一标准。
罗马不是一天建成的,这个Devops平台凝聚了腾讯基础架构运营多年的经验。之前我们谈的自动化及数据化运营,更多是端到端的传统开发方式。具体到Devops,我们希望可以打造一个生态,可以跟众多的合作伙伴和外部的用户一起,一起在同一个平台上进行功能完善和迭代。
在接口对接方面,近期我们跟很多运营商及设备厂商一起努力,把报障、割接、还有case管理、备件管理等几个使用频率最高的场景进行了线上对接。在外部用户方面,我们通过腾讯云的窗口,把Devops的能力对外进行的开放。使用的用户越多,发现越多的问题,devops平台的功能就可以越趋完善。
网络Devops探索与实践 流程管理分析师的更多相关文章
- 从C10K到C10M高性能网络的探索与实践
在高性能网络的场景下,C10K是一个具有里程碑意义的场景,15年前它给互联网领域带来了非常大的挑战.发展至今,我们已经进入C10M的场景进行网络性能优化. 这期间有怎样的发展和趋势?环绕着各类指标分别 ...
- 融云技术分享:融云安卓端IM产品的网络链路保活技术实践
本文来自融云技术团队原创分享,原文发布于“ 融云全球互联网通信云”公众号,原题<IM 即时通讯之链路保活>,即时通讯网收录时有部分改动. 1.引言 众所周知,IM 即时通讯是一项对即时性要 ...
- zz深度学习在美团配送 ETA 预估中的探索与实践
深度学习在美团配送 ETA 预估中的探索与实践 比前一版本有改进: 基泽 周越 显杰 阅读数:32952019 年 4 月 20 日 1. 背景 ETA(Estimated Time of A ...
- 国产开源数据库:腾讯云TBase在分布式HTAP领域的探索与实践
导语 | TBase 是腾讯TEG数据平台团队在开源 PostgreSQL 的基础上研发的企业级分布式 HTAP 数据库系统,可在同一数据库集群中同时为客户提供强一致高并发的分布式在线事务能力以及高 ...
- 公有云上构建云原生 AI 平台的探索与实践 - GOTC 技术论坛分享回顾
7 月 9 日,GOTC 2021 全球开源技术峰会上海站与 WAIC 世界人工智能大会共同举办,峰会聚焦 AI 与云原生两大以开源驱动的前沿技术领域,邀请国家级研究机构与顶级互联网公司的一线技术专家 ...
- FPGA加速:面向数据中心和云服务的探索和实践
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由columneditor 发表于云+社区专栏 作者介绍:章恒--腾讯云FPGA专家,目前在腾讯架构平台部负责FPGA云的研发工作,探索 ...
- 「DevOps 转型与实践」沙龙回顾第一讲
9 月 19 日,CODING 和中国 DevOps 社区联合举办的深圳第九届 Meetup 在腾讯大厦 2 楼多功能圆满结束.本次沙龙以 「DevOps 转型与实践」 为主题,4 位来自互联网.金融 ...
- 「DevOps 转型与实践」沙龙回顾第二讲
背景介绍 本期分享内容为<平台化 DevOps-云计算与云原生模式下 DevOps 的建设实践>.目前,DevOps 越来越成为大家当前建设的热点,伴随着基础设施的转型和应用框架的转型,更 ...
- 涂鸦基于OAuth2在开发者平台上的探索与实践
前言 开发授权(OAuth2)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资料(如照片.视频.联系人列表),而无需将用户名和密码提供给第三方应用. OAuth2允许用户提供一 ...
随机推荐
- IT职业:2021年掌握的10项关键技能
原文:https://enterprisersproject.com/article/2020/12/it-careers-10-critical-skills-master-2021 科技行业似乎在 ...
- 微信小程序--相对路径和绝对路径
相对路径: ../表示返回访问上一级目录 如:../../components/like/index 绝对路径: 以"/"开头 表示从根目录开始寻找文件 如:/components ...
- 你好,Spring!
交个朋友 拿人钱财替人干活儿,在不影响工作的前提下,想做到很高频率的更新很难,但是我也尽力输出,不能为了写而写,宁缺毋滥吧. 我的想法是这样的,接下来的一段时间专门写Spring框架.整体思路就是:入 ...
- 算法竞赛入门经典第二版第二章习题-(练习Java和C++语法)
习题2-1水仙花数(daffodil) 输出1000-999中所有的水仙花数.若三位数ABC满足ABC = A3+B3+C3,则称其为水仙花数. Java: package suanfa; publi ...
- pathon基础2
支持不同文件,不同sheet页 import xlrdimport xlwtimport osimport time; #往日志文件中追加内容函数def writeLogfile(filename,c ...
- Cookie和登录注册
1. 什么是Cookie? 服务器通过 Set-Cookie 头给客户端一串字符串 客户端每次访问相同域名的网页时,必须带上这段字符串 客户端要在一段时间内保存这个Cookie Cookie 默认在用 ...
- 进程描述符(PCB)
进程描述符(PCB) 概述 CPU作为计算机的核心部件,我们当然希望它能一直工作,充分提高它的使用效率.对于上层软件来说,我们不可能直接去操控CPU(我们没这能力也没必要),因为操作系统是夹在计算机硬 ...
- 敏捷史话(二):Scrum社区的悲剧性损失——Mike Beedle
2018年3月23日,在美国的芝加哥发生了一起意外刺杀事件.一名男子刺杀了一位首席执行官,而这位不幸的首席执行官就是<敏捷宣言>的合著者--Mike Beedle.Mike 的这场意外令 ...
- linux下hue的安装与部署
一.Hue 简介 Hue是一个开源的Apache Hadoop UI系统,最早是由Cloudera Desktop演化而来,由Cloudera贡献给开源社区,它是基于Python Web框架Djang ...
- Spring 抽象的缓存包 spring-cache
项目实战 用户信息查询接口中,使用@Cacheable注解 绑定相关信息接口中,使用@CachePut更新用户信息到缓存 更新用户信息接口中,使用@CacheEvict删除缓存信息 使用步骤 添加依 ...