谈DevOps外围协同和模块划分(12.21)

注:图片来源于网络
今天谈下DevOps和外围子系统间的协同和DevOps支撑平台本身的模块划分。在很早我们就谈到我们当前自研的DevOps平台实际是包括了容器PaaS云平台的内容,但是DevOps和容器PaaS之间本身应该是松耦合的关系,即你既可以用我们容器PaaS,也可以直接对接到类似阿里云,华为云的容器化PaaS平台。
因此我们有必要再看下DevOps支撑平台应该包括哪些内容,简单来说一个DevOps平台核心的能力在于持续集成和持续交付,因此我们经常看到的构建,部署,流水线编排也是我们经常说到的DevOps核心能力。但是从DevOps本身的成熟度模型来看,实际上DevOps整体内容远远超过了这些,因此我们需要再重新思考下一个DevOps平台本身应该包括哪些内容。
DevOps平台和外围的协同和集成
1. 研发管理平台 ,实现敏捷研发过程管理能力,这个可以作为一个独立的外部系统并集成,也可以做为DevOps平台的一个大的子系统。可以看到研发过程管理平台核心对象就是产品,项目,需求,版本,任务,组织,团队等关键对象。比如我们现在和禅道集成,当然也可以自己定制开发一个研发项目管理子系统。
2. iPaaS平台 ,上面图上叫这个,实际在我原来的私有云PaaS架构下面是划入到TPaaS,简单来说就是提供各类通用的技术服务能力的PaaS平台。其中包括了我们常见的数据库,消息,缓存,文件存储,短信邮件,流程引擎等都可以划入到iPaaS平台。也就是说共性技术服务能力全部在iPaaS平台提供。
当我们开发一个微服务模块的时候,必须要考虑到和iPaaS平台的协同,需要申请订购哪些技术服务,然后再进行服务开通授权,这个操作后你才能够进行技术服务的使用。那么我们整个DevOps平台持续集成过程,也需要考虑和iPaaS平台间的服务集成和协同。
3. API网关 ,在我原来私有云PaaS平台里面是采用ESB总线,现在微服务架构下更多采用轻量的API网关,即所有的服务接口要注册和接入到API网关,再统一对外暴露服务能力。这些服务同样需要进行订购和开通处理。
注意上图里面提到了微服务管理平台,实际上我们可以看到,团队内部我们不关心,但是跨团队的服务交互和集成必须走到API网关上实现统一的服务注册和服务管控。
2+3:服务运营平台 ,在前面我谈到能力开放平台,实际上能力开放平台就包括了API网关和服务运营的内容。服务注册接入后必须提供服务运营能力,包括服务的申请订购流程,开通流程,对于业务系统的自服务门户等。
4. 容器化PaaS平台 ,在我私有云PaaS平台架构里面叫APaaS,简单来说就是核心实现应用自动化部署,动态托管,资源动态调度能力。这个当前已经集成在我们的DevOps支撑平台里面,但是要看到这块实际上相对独立的能力。构建打包完成的是类似War二进制的部署包,而容器云完成的是将部署包能够自动化部署下去。
DevOps平台的内部子系统划分
我们先来看下持续交付这条线,因为这条线链条最长,涉及到的功能点也最多。我们谈持续集成和交付的时候一般会谈到刚开始的代码库和源代码管理,然后是构建,打包,部署,测试,环境迁移,流水线等关键工作。因此从大的子系统角度可以考虑:
配置管理: 或者叫代码库,但是配置管理里面不仅仅包括了代码库,还包括了组件库,已经对持续交付完成后的制品管理。因此统一归入到配置管理里面更好合适。
持续集成: 包括了构建,打包,部署等关键任务的管理,也包括了流水线配置管理。实际上这些都可以纳入到持续集成整个大的子系统里面。如果到持续交付的概念,那么就还有一个块内容是发布管理方面的,而对于发布管理本身也可以考虑单独一个子系统进行规划设置。
测试管理: 对于测试管理按道理也应该纳入到持续集成里面,但是测试管理内容很多,包括了测试脚本和代码的管理,测试执行,测试结果分析,测试数据管理等。建议可以单独开要给子系统。
环境管理: 建议单独一个子系统,里面包括了各个环境的配置,集群的配置,资源的管理等可以全部纳入到环境管理里面。在DevOps成熟度模型也可以看到环境管理是一个独立的过程域。
监控运维: 对于监控运维需要单独设置一个子系统,可以看到监控运维实际上是在部署完成后的事情,包括了资源的监控,更重要的是服务和服务链监控等APM监控的内容,也包括了日志的查询和问题分析等能力。监控运维本身也需要灵活,可以直接对接到外部的IT运维和监控系统上面。
度量分析: 这个是独立的子系统,包括了关键指标的度量分析,各种Devops运行报表等。