上汽集团DevOps平台案例分享

发表时间:2018-02-28

目录:

一、上汽集团IT建设现状及项目背景

二、DevOps建设理念及总体架构

三、如何一站式为上汽集团落地DevOps

四、DevOps在上汽集团的实施效果

一、上汽集团IT建设现状及项目背景

上汽集团金桥数据中心是上汽集团在上海建设的云化数据中心,主要以私有云的形式为集团内部提供资源支持,同时也会以公有云的形式为集团外延项目和集团下属企业提供服务。

在数据中心内,有云平台、用户中心、企业网盘、开放平台等项目,不同项目组的项目管理、持续集成、持续部署和交付等,不管从管理流程上,还是自动化程度上,都各有差异。

我们从2017年8月份开始对上汽集团金桥数据中心进行咨询和实施DevOps平台,12月底第一期平台建设基本完成。在此期间我们进行了多个试点项目的试运行,逐步迁移到DevOps平台。

二、DevOps建设理念及总体架构

理念

提起DevOps,不同的人有不同的理解。我们认为DevOps不是简单的集成或整合,而是一条数字化生产线,覆盖从需求到最终运营的全周期。

平台架构

我们将DevOps 平台划分为领域层、基础服务层、工具层三层。工具层封装了一些开源工具,提供基础能力。服务层在此基础上封装的一些基础服务,如编译、部署、代码管理等。领域层主要包括项目管理、产品管理、构建、部署、交付流水线、度量优化等模块。底层运行环境支撑物理机、虚拟机、容器云平台。

三、如何一站式为上汽集团落地DevOps

回到主题,如何一站式为客户建设和落地DevOps?我们采用咨询加实施的方式来落地DevOps平台。在咨询阶段,我们通过调研和评估,了解客户的管理成熟度和重要流程,以此为依据制定提升目标及建设方案;在实施阶段,我们首先和客户一起建立规范标准,基于建设方案和规范标准推进平台建设,再适时引入试点项目,适当调整规范标准,最终将DevOps平台进行全面推广。

调研与评估

DevOps平台建设的第一步是调研与评估,我们主要从能力、成熟度、流程三个方面进行评估。

能力评估,主要从产品和研发两个维度来进行评估,具体细分下来包括:产品定义、产品规划、产品运营、项目管理、配置管理、设计、开发、集成、测试等主要过程进行评估和打分。

成熟度评估,主要从组织与文化、产品与项目管理、开发与测试管理、配置管理、持续集成与部署流水线、运维监控、基础设施、度量与追踪等维度进行评估。

流程评估,主要从产品流程、研发流程、交付流程等方面进行调研。

经过以上三个方面的调研与评估分析之后,我们确定了本期平台建设目标。

咨询落地

基于平台建设的目标,我们开始逐步推进平台落地。平台落地的第一步首先是建立规范标准。在这个阶段,我们和客户进行了多次沟通和探讨,制定了项目管理、组件和代码库、流水线以及度量的规范。

项目管理规范

项目管理中我们主要关注项目的各个阶段以及工具集的贯穿使用。

项目的主要阶段包括:立项、启动、需求、架构设计、构建、测试、部署准备、上线,每个阶段都涉及到完成标准、交付物、质量控制方式制定。举个例子,构建阶段,完成标准可以是完成代码开发、完成单元测试、测试用例全部通过、冒烟测试通过等,交付物可以是项目源码、代码评审报告、测试用例等,质量控制方式可以是会议评审等。

同时基于敏捷的工具集贯穿了整个项目管理过程,如用户故事的编写、冲刺计划的制定、可视化的看版、每日站会、迭代演示或回顾、反思会等等。

组件和代码库规范

对于组件,我们认为可以分为程序类组件、数据类组件和配置类组件;而在上汽数据中心,基本都是程序类组件。

程序类组件是最为常见的一类组件,比如Java,Python经过构建后生成用于部署或者独立使用的介质,这类介质即是程序类组件。根据用途,程序类组件又可以分为独立部署和可以依赖使用两类。可独立部署的组件一般会有独立的启停和状态查看入口,可以对组件进行全生命周期的管理。可以依赖的组件一般存放在依赖库中,比如Nexus、Artifactory等,通过依赖定义来使用。

数据类组件是用于关系数据库、内存数据库等数据类平台的可独立执行(发布)物,以数据库为例,每次版本发布,都需要对现有数据形成备份,然后执行数据升级,若出现问题,可快速回滚或恢复。

配置类组件较少提及到,更多的是以properties、xml等配置文件等形式存在。目前也出现了一些配置管理平台或工具,如Apollo、Disconf等等。

对于代码库规范,这里实际上指的是代码库工作流程。根据上汽数据中心现有的代码库规则,我们给出了两种使用模式,分别是主干开发、分支发布模式和feature开发、dev集成、master发布模式。

主干开发、分支发布模式,即所有团队的成员都在主干上进行开发,在发布时对其打分支或tag。从目前上汽的项目规模和流程考虑,此策略适用于大部分项目。结合上汽数据中心的四套环境,规范如下:

feature开发、dev集成、master发布模式目前在上汽现有项目中也用到不少,此策略是一个重管控的模式,与git-flow有一定相似性,强调feature->dev,以及dev->master合并时的可审查,并约束何种分支用于何种环境部署。结合上汽目前的四套环境,规范如下:

流水线规范

上汽集团数据中心目前共有四套环境:

开发环境:隶属软件开发测试区,一般在开发期部署使用

测试环境:隶属软件开发测试区,一般在集成测试期部署使用

灰度环境:隶属生产区,主要用于业务上的灰度部署

生产环境:隶属生产区,用于项目的最终上线

结合调研情况,上汽主流的项目(比如用户中心)可以归纳为三种不同的流水线:开发流水线、集测流水线、发布流水线。

开发流水线是指在开发过程中,为保障新开发代码的可用性和实时性,而形成的一条流程。可以在代码提交或合并是触发,也可以定时触发,用于日构建等。

集测流水线在很多企业是与发布流水线打通的。不过在上汽数据中心,目前有独立的集测流水线。一般是在某个分支合并或周期性阶段进行触发。

发布流水线,目前上汽数据中心是覆盖了两套环境:灰度环境和生产环境。这里介质同步是通过堡垒机将集成测试使用的介质,同步到生产库中。

度量规范

制定度量规范的目的,是通过对软件开发成果特性和开发过程特性的测量和分析,帮助对软件开发过程进行改进。由于目前上汽数据中心没有统一的度量体系和规范,我们现阶段以收集信息为主,以建立能力基线为目标,采集项目指标,适当制定管理规范,不影响项目成员的工作。在后续的阶段中,逐步增加考核手段,以提升效率、质量为目标,以争议较少的明确指标为主,推行规范,优化DevOps过程。

第一阶段主要从以下维度的指标来进行度量,并给出各个度量指标的参考值。

平台建设

规范项目管理

在DevOps平台的建设过程中涉及到诸多工具,项目管理就是其中之一。目前汽数据中心使用自有的项目管理方案,并形成了相应的管理体系。我们自己结合大量的项目实施经验和最佳实践,总结和制定了一套DevOps项目模版,如果客户没有成熟的项目管理规范,我们是推荐使用的。

模版化和可编排的持续构建

持续构建的模版化和可编排解决了不同场景下的构建需求,可以根据需要自由编排构建任务。另外,构建任务的易于扩展也使持续构建能够快速满足新的构建需求,比如在上汽数据中心,我们扩展了“上传介质到S3存储”、“Docker镜像同步”等构建任务。

部署接入云平台

目前上汽数据中心内部项目,有相当一部分是运行于容器环境的。为了支持容器云环境下的部署,我们接入了上汽集团的云平台,在支持物理机、虚拟机的基础上,同时支持了容器环境的部署,满足各项目组基于容器的部署。

看板和报表

看板和报表的数据是掌握项目进度和质量,进行度量的依据。我们主要从项目构建/部署频率、成功率,代码质量,任务完成率等来进行进行相关度量指标的统计和展示。

服务化

为了满足租户用户的使用需求,DevOps将构建进行服务化,集成到上汽的云平台中。实际上构建是云平台中租户较常用的一个功能,比如构建Docker镜像用于后续容器化部署,或者构建出war包用于部署到服务器。

集成用户中心

DevOps平台对接了上汽集团的用户中心,数据中心内部用户以及租户用户可以无缝接入DevOps平台,使用DevOps提供的服务。

试点项目

我们的第一个试点项目是上汽集团用户中心。在迁移之前我们对项目组进行了调研和沟通,用户中心项目是微服务架构,容器化部署,同时自动化程度也是比较高的,项目组使用Gitlab管理源码,使用Gitlab的pipeline加自定义脚本的方式实现持续构建及部署。

分析下来,我们发现项目组存在的问题如下:

每个环境对应一套脚本,针对不同环境构建不同的Docker镜像

脚本比较个性化,其他项目难以复用

无中间介质管理,只有Docker镜像作为最终介质

针对以上问题,我们对代码库按照模块进行拆分,使每个模块可以独立迭代;减少脚本冗余,比如统一Dockerfile,只为比较特殊的组件写独立Dockerfile;减少Docker镜像构建次数,一个组件只构建一次,启动时以环境变量来区分配置;管理中间介质(war包),上传至Nexus,进行版本化管理;适配pipeline,梳理出开发、集测、发布三条流水线,满足项目的持续构建和部署。目前该项目已经成功基于DevOps平台进行持续构建和持续部署。

推广使用

经过近一个月的推广,上汽数据中心目前陆续迁移到DevOps平台的项目已有7个,有效的构建共计50+。

四、DevOps在上汽集团的实施效果

总结一下这一期的实施效果:

建立了统一的规范标准

统一平台工具,包括DevOps平台,相关工具链等

接入上汽云平台,支持数据中心各项目的持续集成、持续部署和交付

通过看板和报表,为PMO部门提供度量数据

当然,在实施过程中也发现一些不足之处,比如固化流水线,在实际的实施过程中发现客户需要更多的灵活性和更高的可扩展性。在我们后续发布的新版本DevOps产品中对灵活性和扩展性做了非常大的改进。

关于作者:田新会,普元信息SOA&云计算产品部高级软件工程师,曾参与银联云计算资源管理平台、神华灾备云平台等项目的设计与开发,并负责实施以及后期维护工作,现为DevOps项目的开发成员。

关于EAWorld

微服务,DevOps,元数据,企业架构原创技术分享,EAii(Enterprise Architecture Innovation Institute)企业架构创新研究院旗下官方微信公众号。

扫描下方二维码,关注成功后,回复“普元方法+”,将会获得热门课堂免费学习机会!