编者按:本文源自阿里云云效团队出品的《阿里巴巴DevOps实践指南》,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电子书,了解阿里十年DevOps实践经验。
阿里巴巴应用运维平台已经发展了 6 年有余,支撑了公司绝大部分应用的上线部署、扩缩容、资源管理以及各种运维变更操作,并逐渐沉淀出一套丰富且稳定的运维原子服务。为了最大化这些原子服务的价值并打造应用运维平台的中台能力,我们提出了一种面向编排的运维解决方案。
面向编排的运维是指用户(PaaS 服务以及开发、运维、运营等角色)根据实际业务需要,对多个原子组件通过简单编排的方式进行灵活装配,构造出不同的业务流程以便完成一个完整的运维需求。运维编排可以帮助我们更好地规范、管理和执行自动化运维操作,以模板的方式定义所需要进行的操作,然后再通过系统运行,从而提高整体运维操作的效率、增强运维操作的安全性,并避免人工运维的错误。
主要痛点
在应用运维领域,大部分的做法都是基于工作流以及工单管理来实现对应的运维变更操作,而传统的运维工作流在维护成本及可扩展性上都存在一定的不足,缺乏有效的流程生命周期管理手段。
这些问题可以归结为以下三类:
- 随着业务的不断发展和业务场景的愈发丰富,运维业务自身也变得越来越复杂,经常会出现一些非通用的个性化需求,比如在扩容流程中新增一个第三方数据同步的步骤,或者针对同一变更类型,不同环境需要执行不同的运维流程。这些需求导致平台实现成本以及维护成本越来越大。
- 依赖的底层流程引擎在运维领域的支持有限,组件编排和流程管控等能力不易进行扩展,同时在规模化场景下,性能、稳定性以及安全性等方面也很难得到有效保证。
- 传统运维平台不具备统一且标准化的集成与被集成能力,难以赋能其他运维 PaaS 产品,中台能力欠缺,价值渗透有限,同时开发或运维人员缺乏设计和管理定制化运维操作的手段。
核心理念
运维编排的核心理念是服务组件化、运维编排化。我们把运维原子服务按照平台规范注册为组件,并托管到统一的组件池中进行维护和管理,用户按需从组件池中选择对应组件,并采用合适的编排方式装配成运维业务流程,最后触发执行即可完成期望的运维变更任务。运维编排的最终目的是打造一款高效、稳定、安全的运维业务构建平台。
技术思路
业务架构
架构一共有五层,从下到上,第一层是流程引擎以及容器引擎,作为原子服务的执行者;第二层用于定义各种不同的运维原子服务,是原子服务的定义者;第三层则主要用于注册原子服务为组件,作为组件的注册者;第四层是提供核心的编排能力,作为流程的编排者;第五层主要提供场景化编排能力,针对不同的场景有一些额外的特性支持。
技术架构
被集成服务可以向 API Gateway 注册 Rest API,从而通过统一的网关对外暴露服务。网关本身需要实现标准的鉴权/授权策略以及 API 生命周期管理、熔断和限流等能力,同时注册到网关的 API 还要能够进一步注册到作业平台的组件池当中;如果被集成服务还引入了流程引擎,那么对应的原子组件也要能够直接注册到远程的组件池,最终通过作业平台完成所有原子组件的收敛和统一管理。基于此可以让业务方按需从组件池中选择对应组件并进行装配,同时通过自定义表单功能设置流程输入,最后触发流程。流程执行时由作业平台的执行引擎子系统进行远程调度并驱动最终的服务提供者运行对应的功能组件。
核心功能组件
- 编排引擎:通过流程引擎、表单引擎、规则引擎以及脚本引擎等驱动运维业务的制作与执行。
- 中台网关:规范组件接入标准,同时通过统一的服务网关集成丰富多样的运维原子组件,提供给第三方或者平台编排使用。
- 安全保障:由编排生成的业务流程默认集成审批流、安全风控、无人值守以及多种巡检能力,为运维变更提供全方位的安全保障机制。
- 支撑服务:提供企业主数据、消息中心、通知中心、任务中心、权限中心等业务支持服务。
使用步骤
关键能力
主要包括以下关键能力:
- 快速功能扩展构建能力:运维编排提供丰富的运维基础组件,以及常见运维场景的公共模板,用户可以通过复制公共模板并对其修改,快速地构建模板,实现特定的运维需求,降低模板编写的难度,提高整体运维的效率。
- 快速集成第三方运维能力:用户可以把第三方运维能力通过 API 网关,包装成运维编排的功能组件,在运维编排中使用,实现第三方运维能力的快速集成。
- 被第三方平台集成的能力:第三方平台可以通过运维编排中心的 API,进行模板和流程的管理,通过订阅流程事件来监听执行过程,实现运维编排被集成的能力。
- 管理运维脚本/文件:运维平台统一对用户的运维脚本或文件进行管理,包括脚本或文件的上/下线、版本管理、授权管理等。
可视化的执行过程和执行结果:通过提供可视化的执行过程,用户可以看到完整的执行过程和执行结果,具体包括:
- 直观地看到各个任务的执行详情;
- 清晰地看到执行的流程、顺序和错误跳转。
适用场景
- 扩展现有运维变更业务:针对运维平台现有的运维变更操作进行调整,以便满足业务方所在部门的特定需求。
- 定义全新的变更类型:针对运维平台当前并未提供的变更类型(比如 IoT 场景的运维),业务方可以根据自身需要把相关的原子组件注册到平台中,然后通过编排方式构建出全新类型的运维操作流程。
- 批量主机运维:选定一批主机并按照编排的顺序执行一系列的运维脚本或者命令,以达到批量操作主机的目的。
- 定时巡检任务:通过定时组件结合自定义流程可以对线上资源或者服务进行各种不同维度的数据巡检以及结果报告。
- 运维编排器:用户使用该平台,把自己的 API 以自定义 HTTP 组件的形式进行编排,进而快速编排出所需的运维功能,减少开发工作量。
- 主机运维:用户通过主机运维组件,实现对主机的日志清理、组件管理等。
以应用扩容为例
1、 可视化编排出应用扩容模板
2、 提交表单,执行应用扩容模板
3、 查询执行进度及结果
总结
面向编排的运维业务构建模式,可以高效、灵活、稳定地支持企业中的各种运维业务场景。围绕企业业务管理需求,通过可视化的用户编排界面、控件元素和成熟稳定的模块组件,面向编排的运维工具可以支持团队快速搭建轻资产、高效能、个性化的 IT 运维工具,助力传统运维转型,加速企业数字化进程。
免费下载《阿里巴巴DevOps实践指南》
阿里巴巴合伙人和业界多位大佬力荐、何勉、陈鑫等17位阿里资深技术专家联袂出品、阿里十年DevOps经验沉淀总结、阿里巴巴DevOps落地实践一本通。
前往:https://developer.aliyun.com/topic/devops,下载完整版电子书。