从0到1构建支撑企业自动化运维体系

内容来源:2018 年 03 月 31 日,腾讯蓝鲸运营负责人杨文兵在“腾讯蓝鲸自动化运维沙龙(北京站)”行进行的《从0到1构建支撑企业自动化运维体系》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:3434 | 9分钟阅读

摘要

身处云计算时代的海量运维,传统运维已经过时,企业需要有一套属于自己的自动化运维解决方案,蓝鲸在腾讯互娱内部沉淀了五年多的自动化运维体系建设经验,将从传统企业的运维痛点入手,结合 aPaaS 和 iPaaS 两个维度以及蓝鲸 PaaS 在腾讯运维中的最佳实践,给大家分享企业构建属于自己自动化运维体系的基本思路。

获取嘉宾演讲视频及PPT,扫一扫下方二维码即可。

传统运维之痛

企业运维对象改变

早期企业中的运维基本上由人工手动来维护,后来相继出现了x86架构和虚拟机,虚拟化技术逐渐成熟后容器技术又开始兴起。到了现在运维正慢慢向更上层挺近,运维人员不仅要有基础的运维能力,还需要对应用逻辑本身有非常深入的学习和了解,比如程序架构、模块功能、进程、端口这些都需要涉足,甚至数据库和字段含义也要知道。总的来看云时代下对运维的要求会越来越高。

运维工具进阶之路

腾讯最初的运维团队诞生的时候,要管理的服务器并不多,大概仅有一二十台,当时运维操作都是在Termainal上进行,因此自动化程度较低,容易出现人为失误。后来随着业务量和服务器的增长,我们开始应用批处理脚本,不过众所周知脚本的管理难度很高,操作也较为复杂,最关键的是并发数低,因此后面又转移到了开源工具上。

当规模达到20万以上的时候,开源工具也很难满足需求了,必须要去做一些工具方面的建设。

目前行业中的自动化运维方案有两种,一种是直接购买,另一种是自建。购买方面Bmc、惠普、IBM、CA是主要的软件提供商,这4家几乎垄断了中国自动化IT运维系统90%的市场,他们的产品有两个特点,第一是“贵”,动辄就需要上千万;第二是基于此的流程自动化不方便,容易出现断点。

上图列出的就是传统软件交付后容易遇到的各种问题,简单来说就是被绑架了。对此的解决方案同样有2个,一是重新选择开发商,二是自主研发设计。这两种方案其实代价都非常高,比如造成原有IT资源的浪费、技术储备不足、建设周期长等。

目前最优的方案是PaaS,它的优势在于能做到免运维、全托管和服务集成。

上图左边是传统的业务架构管控,下方的黄色区域主要提供一些IaaS,基于此之上有两套管控体系,一套是常见的管控平台,另一套为容器管控平台,最上层就是一些业务在跑。不过这种架构的问题在于一旦管控体系挂了,下层的IaaS就会失控。

右边是蓝鲸的PaaS,它下方集成了众多的原子平台同时还能无缝衔接传统架构中已经建设好的管控体系和平台,往上层是iPaas和aPaas,这些能力被集成上去之后就能让运维或开发得以快速构建面向应用场景的SaaS。

如何构建PaaS

PaaS根据定义来看可以分为2部分,一部分是aPaaS,拥有部署和运行托管能力;另一部分是iPaaS,负责服务的集成。

构建流程

PaaS的构建流程总结起来有5个步骤,首先要部署支撑所有自动化系统的运行环境;第二步是集成原子平台,实现企业内部不同平台之间的集成和交互;第三步是构建企业服务总线,实现各个不同平台团队提供的系统或平台的统一协议转换。

所有能力集成起来之后,需要有一个调度引擎,将必要的原子能力连接起立,以服务的形式提供出来。

最后是将所有的工具或者说SaaS呈现出来,提供快速开发平台,实现诸如快速构建自动化运维系统的能力。

App Engine可以托管所有的SaaS工具,它对外发布的社区版是基于虚拟机的,每部署完成一个工具就会生成一个虚拟机,不过这样也导致资源无法隔离,从而引发一些不必要的问题,所以企业版中我们采用了容器的方案,以实现资源隔离。

运维经常使用的通用能力系统被称为平台,一般这些平台在某个特定能力方面会更加深入,比如专门连接IaaS的管控平台、用来执行脚本和分发文件的通用作业平台。

除开基础通用平台外,一些周边团队可能也建设了很多系统,对于这些我们可以将它对接起来,构建更强大的PaaS能力。

企业服务总线是为了对接下方各种原子平台,比如服务注册、权限控制异常处理、安全监控等。当然最重要的还是协议转换,将下方不同语言不同协议的原子平台的能力适配成统一协议。

集合起来的各原子平台能力将通过调度引擎进行编排,比如发布和扩容,除开会涉及到运维操作外,还有非常多的周边系统需要去做。

有了调度引擎之后就能够提供模板,让运维在模板中通过引擎编排场景中的操作。

对于游戏开区相信大家都不陌生,这背后涉及到了非常多的系统,包括和公司的流程相关联。在没有调度编排的情况下,一般一次开区需要耗费4到5个小时。

有了编排后就能实现一键自动开区,同时还能在这之前添加数据决策,通过大数据平台采集相关数据,当检测到数据达到某一标准后进行无人自动开区。

最后就是构建快速开发平台。有过开发经验的朋友应该都了解,传统的开发模式流程相对繁琐,在应用开发之外,还要做环境构建、日志追溯、监控告警、代码部署。

而在基于PaaS的开发模式下开发者就只需要做开发之前的需求梳理和正式的核心代码开发。

应用开发主要分为前端和后端,发布工具的前端开发让运维人员去做显然不合适,因此我们提供了一个前端的样例库,能够轻松的拖拽生成页面。后端则是基于python的坚果框架,就语言来说对运维人员比较友好,并且还封装了大量的公共组件。

上图是前面提到的前端方面的工具,叫做前端魔盒,可以看到这里提供了非常多的可视化布局的组件。这样就能让运维专注于SaaS流程拼装,大大降低了构建成本。

以上就是蓝鲸自动化运维系统的全貌,最下层是IaaS管控平台;第二层集成了大量的原子平台,包括自己构建的和对接第三方的;第三层为集成平台,也就是前面提到的快速开发的部分;最上层是根据不同应用场景衍生的各种SaaS。

蓝鲸PaaS在腾讯运维中的实践

图中是腾讯内部通过蓝鲸构建的一些平台和实践,涵盖运维、开发、自助工具等多个部分。

我们内部还有一个专门的蓝鲸桌面平台,其内有超过500多的SaaS,当需要用到某个工具的时候可以直接在这上面添加。

最初的SaaS大多用于针对自身的业务痛点,后来随着不断的扩展逐渐形成了一个系列,比如与王者荣耀相关的发布、扩容等各种功能。

但是运维的能力毕竟有限,既然大家都在做发布和扩容,那么显然也能做成通用的形式。

这些SaaS可以给各种岗位提供服务,比如产品的运营数据展示、开发方面的CI/CD,测试工具等。

案例

故障自愈属于基础运维部分,针对运维的一些告警首先会对接该系统中。因为具体的业务问题只有相关负责人员才了解,因此我们也为运维人员提供了根据不同的业务流程编排套餐的能力。

上图是CI/CD中的CD部分,传统的非容器类发布模式都是通过它来做,从最开始提交发布单到最后完成发布结单都会在这上面通过模板编辑好。

另外需要注意的是我们内部所有正式对外业务的发布不是运维人员在做,而是由专门的外包团队负责。因为很多游戏都是在凌晨发布,我不希望因此耗费正式运维的精力。

上图是用户体验类的工具,它会针对业务中用户的每个环节进行数据分析,通过大数据、数据视图展示信息,并关联自动化机械执行的流程形成闭环。

蓝鲸智云,开放永不止步

目前蓝鲸已对外开发社区版,并会逐步将现有平台打包到这个版本中,包括底层管控,配置平台、作业平台、集成平台现已在社区版中。

同时我们还将内部的一些通用SaaS和脚本放入到了应用市场中,以供用户直接下载使用,类似于google商店的应用场景。

社区版2.0中内置了配置平台和作业平台,并且配备集成平台以支持社区用户的定制开,还提供API和开发样例。

社区版3.0开始对外开放一些SaaS,比如监控、治愈,以及和合作伙伴联合开发的平台功能。社区版4.0的改进主要在CMDB和网路管理这块。

本次分享就到这里,谢谢大家!

IT大咖说 |关于版权

感谢您对IT大咖说的热心支持!

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180913A1VP8700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券