购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 S公司容器云建设案例

S公司计划由研发部门牵头构建容器云平台以承载敏态业务,最终实现打造数字银行的目标。

3.2.1 S公司业务需求

S公司希望通过引入持续交付的思想、工具、流程、规范,提升数字银行在代码质量管理、版本管理、构建、测试、部署、验证等交付环节的效率和质量,实现项目任务统一管理、应用自动化构建、自动化部署以及量化各个交付环节指标,提高开发效率,构建可靠的发布版本,改善产品质量,加速产品推向市场。

S公司的项目需求具体包括如下几个方面。

1. 持续交付咨询

持续交付咨询通过现状调研、方案制定等活动,提供持续交付所需的各项内容咨询服务。

1)数字银行软件交付过程咨询(包括交付组织架构和交付模型现状调研、需求过程、软件设计过程、软件编码与单元测试过程、代码审查过程、软件测试过程、软件发布过程),并依据以往实施方法论和数字银行现状制订软件交付过程、流程转换细节及流转与检验标准。

2)持续集成系统功能咨询(包括持续集成系统的功能、工具、集成方法、部署架构、持续集成SLA服务体系及标准、主要用户视图、过程基础数据留存等)。

3)持续发布系统功能咨询(包括持续发布系统的功能、工具、集成方法、部署架构、持续发布SLA服务体系及标准、主要用户视图、过程基础数据留存等)。

4)容器化咨询(包括容器选型、容器化落地的应用转换方案、容器管理及后续运营方案等)。

5)统计分析咨询(包括与IT领导和关键岗位负责人沟通确认软件交付度量指标、如何在交付过程收集保存各指标、针对不同的软件提供的统计视图等)。

6)培训咨询(包括人员技能调研、人员技能与持续交付要求差距分析、针对性的培训课程内容及培训计划)。

2. 项目交付全生命周期管理

持续发布平台管理涵盖软件项目的全生命周期管理,要求该平台具备与行内现有的项目跟踪管理、需求管理、代码仓库、统一在线接口管理、代码构建、测试用例、基于接口的自动化测试、测试缺陷管理、软件发布、上线审批等支撑系统进行集成,并提供项目交付全生命周期的管理和跟踪页面,以便直观查看和检视项目进展和健康状况。

3. 持续集成

通过Jenkins或其他自动化构建工具实现自定义脚本、流水线等交付过程的统一管理,具体包括如下几个方面。

1)支持多种编译语言:支持Java、Python、JS、Android、iOS等多种编译语言的构建环境。

2)支持多代码管理系统:支持行内现有的SVN和GitLab版本管理系统,支持代码管理与项目生命周期管理解决方案对接,实现从需求到编码的跟踪。

3)支持代码权限精细化管理:支持线上权限申请、审批、分配等;代码根据分支策略制定不同权限管理规范模板。

4)支持多种构建方法:支持MVN、Gradle、Xcode、NPM、静态File类型等多种构建方法。

5)构建集成:通过Jenkins等自动化构建工具进行代码构建,并将构建结果集成到项目交付周期管理中,实现从需求、编码到构建的全过程跟踪;通过各种检查规范确保从源码到交付物的一致性,实现可持续性交付并降低整个项目的风险。

6)支持编译参数:支持默认构建参数,允许自定义配置构建参数,满足个性化构建需求。

7)构建工件仓库:支持与行内Nexus构建工件仓库的集成及与提供构建工件仓库的迁移,实现代码二进制包的统一管理,包括(但不限于)二进制包的保存、包依赖分析等。

8)交付物安全管理:提供Java代码编码规范检查功能,支持静态代码扫描、技术债管理,提供代码审查工具或插件,支持漏洞扫描。

9)支持自动化测试:提供接口测试自动化、UI测试自动化、性能测试自动化执行及测试报告统一展现功能,支持自动化测试案例库的管理和维护。

10)构建日志展示:提供构建日志的实时同步界面并支持问题下钻,可以及时了解编译过程和定位问题。

11)支持Android和iOS的持续集成。

4. 持续发布

通过Jenkins或其他自动工具实现发布流水线的配置并保存流转指标数据,提供统一页面对发布过程进行可视化的展示,具体体现在如下几个方面。

1)支持应用配置管理:通过应用配置管理对代码和环境进行隔离,实现一次发布多个环境,提供基于ConfigMap的容器方案配置中心或独立的分布式应用配置中心方案。

2)依赖分析:支持基于二进制文件的依赖分析(如Jar或项目调用依赖),并提供交付二进制文件的版本管理(如版本列表和版本追溯)。

3)支持多种发布方式:支持基于二级制文件(WAR或Jar包)的发布或基于Docker容器的发布,支持蓝绿发布、灰度发布。

4)发布过程定制:支持自动化发布,支持配置人工审批环节的自动化发布,支持人工跳过某些步骤直接发布应对紧急发布流程。

5)发布日志及记录展示:提供构建日志的实时同步界面并支持问题下钻,可以及时了解编译过程和定位问题。

6)提供内网的类似fir、蒲公英的App发布系统,支持账号和权限管理、新建包、新建发布渠道,支持通过API或页面表单上传包,支持与Jekins集成或通过定制开发满足类似需求场景。

5. 容器化

容器是提供不可变环境的基础,基于容器可以解决持续发布环境自动化的问题,进而提升持续发布的效率。容器化具体体现在如下几个方面。

1)镜像库:支持高可靠、高可用镜像中心部署,如开发测试和生产环境的镜像同步,支持镜像管理,包括镜像信息、镜像搜索、镜像历史版本查询、镜像下载历史列表等,支持镜像仓库可用镜像的安全漏洞扫描。

2)支持多环境:基于容器技术实现开发环境、SIT测试环境、UAT测试环境、准生产环境的容器化基础平台,支持多个隔离的镜像中心之间的镜像同步。

3)集群管理:可以动态扩容、缩容;支持集群级别的弹性伸缩,支持集群操作和管控对接用户权限管理,所有操作可回溯。

4)网络管理:支持对接不同的网络方案,支持Docker原生host、bridge模式和扩展模式,支持集群内网络资源管理,如创建网络子网、网络IP管理,支持查看网络资源使用情况;应用发布时支持实例IP不变,也支持动态分配IP。

5)部署管理:支持应用基于容器的分批、分次、灰度等发布动作和自定义发布动作,支持应用回滚,支持部署过程跟踪、结果上报、应用状态守护等功能,支持对应用的配置文件进行管理。

6)需要乙方协助甲方完成完整项目的CI/CD及容器化改造。

7)应用商店(应用模板):支持常用公共组件的应用商店及不同版本的选择,包括Nginx、Oracle、Tomcat、WebLogic、MySQL、Jenkins、MongoDB、ELK、Redis、RocketMQ等,提供应用商店上下架、权限控制、使用情况统计等功能。

6. 统计分析

量化和可视化是持续改进的基础,具体体现在如下几个方面。

1)项目生命周期统计:支持项目进度、需求质量、开发质量、测试质量、发布质量、项目生产运行质量统计分析。

2)持续集成统计:支持基于部门、项目、人员的多维度的开发编码规范,Bug质量,构建次数,构建成功率,构建次数等统计分析。

3)持续发布统计:支持基于部门、项目、人员的多维度的发布成功率,发布持续时长,发布次数统计等统计分析。

4)容器统计:支持容器个数、容器类型、容器运行情况、系统资源使用情况等统计分析。

5)研发效率统计:支持研发人员代码提交总量、有效代码占比、项目生命周期耗时、项目投入人员数等统计分析。

3.2.2 项目实施内容与效果

S公司项目经过公开招标,最终选择红帽OpenShift作为容器云平台,并成功上线。需要指出的是,S公司在构建容器云之前就已经基于虚拟化环境构建了持续交付平台,其自身的IT水平也很高。因此在项目实施过程中,很大一部分工作是完善现有的持续交付平台,并将工具链容器化。

本项目整体实施进度如图3-3所示,可以看到实施周期大致为5个月。

073-1

图3-3 项目整体实施进度

我们将项目实施内容分为如下四类,具体实施目标和项目实施后的效果如表3-4所示。

表3-4 项目实施目标及实施后的效果

074-1

接下来,我们针对这四类实施内容进行说明。

1. 工作流程设计

在工作流程设计阶段,经过与各个负责人多轮的整体、单独讨论,确定流程及子流程场景,具体分为以下8个流程。

1)平台及系统创建流程:该流程为项目级流程,描述项目及项目整体计划的创建过程。

2)新增及变更流程:该流程描述了由业务发起的任务流程。

3)生产缺陷流程:该流程描述了系统上线后发现并处理生产缺陷的流程场景。

4)IT技术优化流程:该流程描述了由IT部门内部发起的任务流程。

5)报表、提数流程:该流程描述了数据报表相关需求的流程场景。

6)测试缺陷子流程:该流程描述了标准流程在SIT测试环节发现并处理测试缺陷的流程场景。

7)终止、暂停流程:该流程适用于各个流程各个节点出现终止、暂停的流程场景。

8)会议管理流程:该流程适用于各种会议的流程场景。

与8个流程相对应的是8个流程角色,角色定义如表3-5所示。在后续工作中,流程角色将与工具中的用户组和用户进行权限对应。

表3-5 流程角色与用户权限对应说明

075-1

由于篇幅有限,我们选取部分流程图为例进行说明。

平台及系统创建流程如图3-4所示,其中涉及如下几个方面。

075-2

图3-4 平台及系统创建流程示意图

报表、提数流程如图3-5所示,具体涉及如下几个方面。

076-1

图3-5 报表、提数流程示意图

终止、暂停流程如图3-6所示,具体涉及如下几个方面。

077-1

图3-6 终止、暂停流程示意图

会议管理流程如图3-7所示,具体涉及如下几个方面。

078-1

图3-7 会议管理流程示意图

2. PaaS平台及容器化

S公司使用红帽OpenShift容器云平台,其PaaS平台构建工作内容如表3-6所示。

表3-6 PaaS平台构建工作内容说明

078-2
3. 统计指标分析

项目内共设计了3个统计维度、7个角色展示目录,共实现42个仪表板,合计220张展示图表。这里我们仅选取几个统计指标为例进行展示。

统计指标展示实例1是重点项目情况表,它是从项目视角分析需求数量,如图3-8所示。

080-1

图3-8 重点项目情况表

统计指标展示实例2展示了项目负责人仪表板,从仪表板中我们可以看到项目组中每个人的工作时长,如图3-9所示。

080-2

图3-9 项目负责人仪表板

统计指标展示实例3是任务晴雨表,从表中我们可以看到某个项目的某个产品发布过程中每个环节的耗时,如图3-10所示。

081-1

图3-10 任务晴雨表

4. 持续交付

持续交付包含两部分工作:持续交付咨询和CI/CD的技术落地。具体工作内容如表3-7所示。

表3-7 持续交付工作内容

081-2
082-1
083-1

持续交付实施后,通过持续交付咨询生成持续交付全流程,并将CI/CD工具链在OpenShift上落地,如图3-11所示。

083-2

图3-11 CI/CD工具链在OpenShift上落地

通过容器云项目,S公司实现了整套DevOps工具链的容器化,大幅提升了应用发布的速度,有力地支撑了B客户的业务扩展。项目前后具体效果对比如表3-8所示。

表3-8 S公司容器云项目前后效果

083-3

至此,S公司的容器化实施案例就介绍完了。读者可以根据上述内容,对自身的项目进行评估。 uP8jWWIOUrPGmwI102texCjFlycq5V0cFGITwyVsdDJT/aDfxlylggvFl5kD5F1G

点击中间区域
呼出菜单
上一章
目录
下一章
×