做者丨梁定安,腾讯织云负责人,目前就任于腾讯社交网络运营部,任运维技术总监,开放运维联盟委员,腾讯云布道师,腾讯课堂运维讲师,EXIN DevOps Master讲师,凤凰项目沙盘教练,复旦大学客座讲师。
web
国家的“互联网+”战略开启了一个企业业务与互联网相结合的新业务形态,有愈来愈多的企业将本身的业务以互联网为媒介对外输出。任何一款互联网产品都会经历从产品的规划与设计、开发的功能实现、测试的度量验收、运维的发布交付,也是经常被成为企业的IT价值链的全流程,将产品输出个最终的用户,以产生商业价值。docker
在DevOps的理念中,企业的IT价值链流转的速度越快,意味着企业的互联网产品的交付能力越强,这也意味着企业在同行业的竞争中,凭借IT能力的优点,可以收获更大的竞争优点。网络
腾讯公司诞生于互联网行业,以海量用户规模和设备规模著称社交网络业务,其DevOps的技术实践,主要由四大平台系统组成。架构
四个系统共同组成DevOps流水线,腾讯的海量业务使用这套流水线系统能够轻松完成从需求设计、代码管理、开发测试、发布&运维的各阶段工做。负载均衡
TAPD支持敏捷项目管理,实现产品需求与开发分支关联;TGit支持代码管理,经过webhook钩子触发持续集成系统的能力;CIS负责自动化完成编译、测试等任务,以输出制品库:软件包或docker镜像;织云对接CIS获取制品,以自动化的方式完成业务的发布/变动任务。框架
对于互联网产品而言,发布仅仅只是开始,在持续为用户输出价值的运营过程,由运维团队和系统来保障服务的稳定可靠。以腾讯的应用架构实践案例,咱们来看下腾讯业务对可运维性的定义。运维
DevOps持续交付的八大原则对可运维性给出了这样的定义,在企业中研发和运维体系必然须要相互配合,开发团队负责功能性需求实现的同时,在架构和编码上注重非功能性需求的实现,测试团队与运维团队将围绕着各自职能的需求,规划与建设DevOps流水线中对应的工具系统,加速企业IT价值链的流转,觉得企业创造更大的商业价值。socket
有了持续交付方法论的支撑,咱们认为要实现可运维性的过程可分为4个阶段:统一架构、运维规范、标准操做、运维自动化。分布式
将互联网的业务架构抽象成为三层:接入层、逻辑层、数据层。微服务
并在业务架构的技术选型与规划时,遵循四个原则:框架化、组件化、无状态、分布式。
框架化的引入,能够有效的下降开发的工做量,经过有限的编码便可实现快速业务功能需求。以下图所述,对于常见的socket通信型的C/S架构,由框架实现了网络的通信,业务逻辑由动态库的方式加载到框架中,快速拼装出知足业务功能需求的软件程序。得益于框架的支持,可运维性诉求的非功能性的规范亦可被归入框架中实现,如数据上报、统一日志、管理工具等。
组件能够将共性的服务统一化,如腾讯内部大量应用的软件路由服务,帮助业务轻松实现负载均衡、名字服务、容错、过载保护、流量调度的功能特性。除了为业务解决了路由的难题,也使平常的运维管理变得更加简单高效。
经过对可运维性的思考,在统一规划与标准化的持续推动实践中,保障了腾讯的业务架构有序的发展,架构的演变从千人千面进化成千人一面。结合框架与组件的非功能规范的落地实现,将运维保障业务质量与效率的规划落实。
要知足企业的长期发展,仅靠堆砌运维工具是不够的,必须体系化的、全局的考虑标准化、配置化、自动化、智能化的一体化运维管理系统。下图是腾讯运维平台——织云的功能规划,咱们以此管理着腾讯社交网络海量的服务。
在运维的过程当中,咱们要面对不少复杂的运维对象,结合可运维性与非功能规范的要求能够很好的防止业务架构失控,但假若要更好的管理这些运维对象,咱们必需要作好配置管理。
织云平台实践中,咱们将标准化的运维对象配置化,如下图为例,每一个微服务集群在织云CMDB中被定义成不一样的模块名。模块可被划分为两大类配置属性:基础配置与应用配置。
基础配置中的资产配置,可被用作资产核算、预算规划等;硬件配置可被用于虚拟化和机型规划等方面;分布信息会记录设备的上联交换机与IDC等信息,在优化机房穿越、网络设备故障的智能分析场景,能够提供很好的数据支持。
应用配置中的资源配置,可对接镜像仓库或制品库,实现与发布/变动相关的运维对象关联,为自动化提供支撑数据;流程配置将工具或接口经过自定义编排实现操做流或工具链,让运维的工具收敛复用;变动记录提供了运维操做审计与联动监控数据的配置信息。
咱们将运维平常关联生产环境的操做提炼如图:对资源的传输与执行。
从统一规划、标准化、配置化、自动化到联动监控,用持续部署的流水线工具串行起来,咱们将获得一个体系化的运维能力模型,基于此模型,运维团队可以全局规划持续部署的能力与工具系统。
经过工具编排功能,自定义运维操做流程、工单审批流程、服务请求流程。并与CMDB的业务、负责人、状态等数据接口联动,解决运维操做与配置数据状态的协同的难题,实现从ITIL离线流程到线上自动化流程的技术升级。
以织云的自动化扩容流程为例,将原子运维工具或系统接口以运维的最优操做流程组织起来,自动化的完成扩容操做,而且保证每一个步骤都会被严格执行到位,不会受我的的经验深浅或文档的新旧影响。从而解决运维团队“文档即过时,离职即消失”的难题。
基于统一规划的运维体系,不只能提高运维效率,同时对服务质量的保障也能有不少好处。以下案例是进程自愈的场景,结合CMDB的业务属性,经过自动化的流程完成配置注册,从而实现进程监控的自愈。
在腾讯多年的海量运营经验中,DevOps是贯穿整个应用软件生命周期的,发布完成并不是终点,咱们要全局思考、统一规划,为业务的健康发展打造一个标准有序的业务架构,和为业务提供一套完总体系化的运维解决方案。