640.png

效能平台整体功能规划

蜂鸟效能平台整体技术架构划分为三层,最底层为基础设施层,该层主要为各混合云环境下的基础环境,如 私有云、华为云和行业云等环境下的开发、测试和生产环境,建立在基础层之上搭建了支撑平台的工具,形成了平台的工具层,如需求管理jira、代码管理Git、容器管理k8s和监控工具等,通过工具层提供的能力,建立并实现了价值流层,价值流层对应的功能直接为对应的职能化人员赋能,主要为持续集成、持续交付和持续运营。

1、与项目管理平台JIRA集成

为了将具体需求与迭代上线进行对应,从而达到系统上线需求可追踪,同时也为后续对需求进行价值分析提供基础数据,因此需要将项目管理平台JIRA与蜂鸟效能平台持续交付进行打通。研发人员在蜂鸟效能平台进行提测和发布上线时可以根据提示选择对应的STORY,从而完成提测、上线与JIRA项目的关联打通。

2、CI/CD流水线整体设计

蜂鸟效能平台CI/CD功能主要包括静态代码扫描、开发环境CI/CD、测试环境CI/CD和自动化测试、上线流程审批、生产环境CI/CD、交付制品的环境流转等功能。其中应用产品的制品在各环境中详细流转逻辑图如下:
640.png

从上图可知,制品在多环境CI/CD流转的过程中,主要包括三个环境的流转,分别为开发环境、测试环境和生产环境,其中开发环境采用自动构建、自动集成和自动部署的方案,测试环境的流转与发布根据技术经理在蜂鸟效能平台上的提测,测试组人员可以根据自身需要进行按需自动化发布部署,发布部署完成后,可以对相应的功能模块进行自动化测试。制品在生产环境的流转与发布方式和测试环境的发布部署方式类似,在蜂鸟效能平台上走完审批流程后根据实际需要,运维人员按需自动化发布部署。蜂鸟效能平台实现了线上审批流程和测试、发布操作的关联控制,保证每次提测和发布上线都有严格的流程把控。

其中对于容器化应用各环境流转发布部署细节如下:
1)开发环境镜像生成与发布:
在Gitlab上创建工程后,研发人员可以自助在平台上对该Gitlab工程绑定自动构建和部署模块,当该工程主分支发生branch合并时触发自动构建,镜像创建后,会将对应的镜像推送到镜像仓库,然后再触发自动化部署脚本将该镜像自动部署到开发环境。

2)测试环境下的镜像流转与发布:
在开发人员将对应的需求开发完后,在蜂鸟效能平台上进行应用产品提测,提测后测试组能够在蜂鸟效能平台上的测试模块看到提测的具体镜像内容,根据提测详情,可以实现一键自动部署,然后再对测试环境的镜像进行自动化功能、接口、性能和UI测试。

3)生产环境下的镜像流转与发布:
在走完产品上线流程审批后,运维人员能够在蜂鸟效能平台上看到具体的上线流程信息,根据实际情况进行自动化发布部署、回滚和复核。

通过CI/CD流水线,使产品、UED、研发、测试、运维和合规等职能化角色可以在其对应职责的权限下完成产品上线过程中对应的具体操作,如测试人员完成自动化测试操作、运维人员完成自动化部署操作和合规人员完成合规审核操作等,最终达到产品交付的目的。同时蜂鸟效能平台隔离了开发、测试、生产环境,对应的角色只能在对应的环境进行操作,操作环境的隔离符合《证券基金经营机构信息技术管理办法》的相关要求。

3、代码管理及构建

代码的科学管理对团队高效协作以及流程规范具有特别重要的作用,蜂鸟效能平台采用Git作为代码管理工具。GitFlow模式是若干模式的集大成者,包含一个主干分支、一个开发分支、许多的特性分支、许多的发布发布分支和Hotfix分支,以及许多的合并规则,通过GitFlow模式的运用,能够解决开发过程中大部分代码协作的问题。同时通过分支的管理,也为后续开发环境的CI/CD奠定了基础。

4、制品库管理

蜂鸟效能平台的制品仓库在持续交付的过程中扮演着中转站的作用,如何结合制品仓库实现制品在不同环境中的流转对保持制品交付前后的一致性与可追溯性有着重要的作用。对于当前的制品主要分为Docker镜像类和非镜像类制品,为了能够对Docker镜像类进行管理,镜像仓库采用开源Harbor进行管理,对于非镜像类制品采用Artifactory进行管理,为了能够达到环境流转的效果,采用基于仓库的不同账号之间的权限管理方案,具体见关键模块方案。对于唯一性问题,容器类制品采用镜像id非容器类制品采用MD5码保证制品的唯一性。

5、接口管理

蜂鸟效能平台接口管理功能对于不同的研发角色作用不同,开发人员能够利用接口管理功能进行前后端接口调用、多项目接口统一管理、接口调试和多团队协同开发;测试人员能够基于接口管理功能中登记的接口进行简单接口测试、场景化接口测试;运维人员可以基于接口管理功能中登记的接口实现业务监控;产品人员可以快速进行数据统计。

6、配置中心

蜂鸟效能平台的配置中心能够实现对不同环境、多云环境的系统参数配置进行管理,同时配置中心也是多环境(开发、测试、仿真、生产)CI/CD的关键。蜂鸟效能平台的配置中心基于Apollo实现,Apollo是一个开源的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。配置中心实现了开发、测试、生产多环境的系统参数配置功能,同时支持多云架构下的分布式系统配置管理。配置中心为CI、CD的平滑交付提供了技术保障。

640.png

7、单元测试、静态代码扫描及开发环境CI/CD

单元测试能够让开发人员在提测前发现新增变动对系统可能造成的不利影响,并通过将单元测试与开发环境CI/CD进行结合,当开发人员进行代码提交或者进行代码merge时将触发自动单元测试并将结果反馈给对应研发人员。

为了提高研发过程中的代码质量并尽快发现已有系统代码中存在的漏洞缺陷,蜂鸟效能平台提供了静态代码扫描功能,静态代码扫描功能可以对研发人员的代码进行分析并进一步提升编码规范。静态代码扫描功能需要能够识别代码中一些常见的漏洞,如资源类问题(资源释放、无效指针等)、安全性要求(数据污染、注入等)、潜在的缺陷(数组越界、初始化、除零错误、空指针引用等)、多线程和同步性(双重锁定、未释放的锁等)和异常处理(NullPointerException)等。

静态代码扫描平台采用增量扫描和全面扫描相结合的方式,日常开发对于不断的代码提交采用自动增量扫描,便于快速发现新增代码中的缺陷,同时结合定时全量扫描和提测前全量扫描的方式,发现代码中所有的缺陷,只有当高危、中危、低危等级的缺陷全部修复完后才能由开发人员在蜂鸟效能平台上提测版本给测试人员,提升了开发人员提测版本的质量和安全性。

8、自动化测试及测试环境CI/CD

蜂鸟效能平台的自动化测试功能实现了互联网研发团队测试人员的效率飞跃,通过将自动化测试平台与持续交付的流程进行结合大大提升了测试效率。在蜂鸟效能平台上,测试人员能够看到研发人员提测的具体内容,并识别出具体的制品版本及唯一码,测试人员可以在蜂鸟效能平台上对开发人员提测的版本进行一键部署和一键自动化测试,最后测试的结果将以报告的方式反馈给研发人员。

通过蜂鸟效能平台的接口管理功能与自动化测试功能的集成。目前已经支持UI及接口自动化测试。UI自动化基于Appium实现,Appium要能真正自动化手机上的应用必须依赖于各个移动平台所带的自动化框架;IOS平台目前依赖于XCUITest实现,安卓目前主要依赖于Uiautomator。框架提供的是运行库,运行库运行在移动设备上。

AppiumServer服务起来后会在移动设备上安装一个帮助自动化的应用,可理解为“控制许可”或者“代理”应用,通过这样应用可以编译我们自动化给出的指令,然后按指令测试移动设备上的应用。
640.png
蜂鸟效能平台的接口自动化功能基于接口分层测试设计的思想,采用python+unittest+ddt框架自研实现。把测试数据与测试代码完全分离,将数据操作、用例配置、日志记录、接口请求等公用方法封装成单独类,使用DDT数据驱动工具管理每个接口的多种测试场景,使用unittest组织、执行多个接口的测试用例集合,通过添加多种断言形式,如接口的状态码、返回值、差异化(diff)对比等对接口测试结果进行判断,最后通过HtmlTestRunner生成测试报告,把返回的测试结果用图形和文本形式形象的展现出来。
640.png

接口自动化测试功能是Devops实践中不可或缺的一部分,具备持续测试能力,大大提升测试效率,使测试人员快速适应敏捷开发工作模式,从而减少了产品迭代过程中的时间成本和技术人力成本,为产品快速迭代和发布提供了质量保障。

640.png

9、混合云管理及生产发布

在真实的部署环境中,经常涉及多云环境下的发布管理,为了实现多云环境下的制品流转及发布部署,蜂鸟效能平台实现了一套混合云环境的发布管理功能。

中泰证券互联网应用系统的部署环境为一个混合云场景,蜂鸟效能平台通过对混合云环境资源的整合,解决了混合云环境的CI/CD发布部署和系统监控问题,具体方案如下图:
640.png
通过该方案与CI/CD制品流转设计相结合,使研发人员交付的应用制品可以通过蜂鸟效能平台实现多环境流转,最终发布部署到混合云的环境中去。

10、自动化监控及技术运营

为提升线上问题和故障的发现、反馈效率,蜂鸟效能平台集成了自动化监控功能,自动化监控能够提高运维的效率,并能够满足频繁发布部署过程中的应用监控问题,通过对应用服务的自动化监控与故障自愈相结合能够在用户无感知的情况下修复线上故障,同时在蜂鸟效能平台上对线上故障数据进行跟踪收集分析,达到尽快反馈给研发人员并能够对故障回溯具有参考作用。

11、效能指标跟踪及改善

效能指标能够体现研发过程的实施情况,客观的效能数据可以对我们研发改进起到指导效果,没有客观数据和成功标准就无法做到持续反馈和持续改进。蜂鸟效能平台中关键效能指标见下图:
640.png
研发效能数据多维度展示产品交付各阶段的数据,如开发阶段的代码数据统计、测试阶段的自动化测试数据统计、运维上线后的故障数据统计等;其中流水线指标从交付效率和吞吐率两方面主要反映研发过程整体效能情况;项目/需求指标能够从需求的成本和上线后的价值两个角度对需求进行价值数据衡量;研发指标反映了当前研发人员的工作负荷以及产出及质量情况;测试指标对产品质量保证具有关键指导的作用;运维指标能够反映运维工作效率的情况,如线上故障情况及功能上线发布效率。

效能平台关键功能截图

目前蜂鸟效能平台已经覆盖中泰证券互联网金融全部业务,接入项目模块180多个,支持容器及非容器应用,累计CI/CD(持续集成/持续交付)次数6万+。

1、产品关键截图一:提测及上线流程跟踪如下:
image.png
图13

该图为一个完整提测、上线发布流程图,各职能化角色都有参与到该流程中,开发人员提测、测试人员执行测试、技术经理确认上线发布、产品经理发布前验收、产品及技术负责人确认上线、合规确认发布流程、运维人员A执行发布、运维人员B复核发布、业务部门生产验收。

2、产品关键截图二:提测详情页关键截图如下:
image.png
图14

该图为提测详情图,技术经理可以通过该提测详情页完成容器或者非容器化的提测。

3、产品关键截图三:蜂鸟效能数据截图如下:

image.png

该图为效能数据对研发阶段的某一场景进行展示。蜂鸟效能平台通过多维度对不同交付阶段进行数据跟踪并绘制全面的图表对全过程进行效能分析。

4、产品关键截图四:自动化测试结果关键截图如下:

image.png

通过自动化测试报告能够详细完整的查看具体的功能模块测试详情。

5、产品关键截图五:静态代码扫描关键截图如下:
image.png
图17

通过静态代码扫描的报告详情,能够查看当前项目的缺陷情况,同时通过缺陷展示快速定位缺陷位置。

总结

中泰证券互联网研发团队基于DevOps思想构建的蜂鸟效能平台上线以来,经过累计6万+次的CI/CD(持续集成/持续交付),已经成为目前互联网研发过程中不可或缺的核心研发工具平台。带来的价值如下:

1、规范研发过程,实现安全可控

蜂鸟效能平台将开发、测试、生产环境进行了有效隔离,实现了各环节操作的安全可控及合规。所有的发布操作均通过蜂鸟效能平台留痕并且操作绑定流程制度,做到了问题可追溯、减少了误操作、操作符合公司IT管理规定。

2、提升交付效率,缩短交付时间

蜂鸟效能平台旨在缩短开发人员完成功能代码编写到生产发布过程中的时间消耗,提升研发交付效率。

缩短了开发时间周期,通过静态代码扫描可以在10~20分钟内实现对一个应用系统的代码检查,提升了开发人员CodeReview的效率。每个迭代的时间缩短0.5~1天。

缩短了测试时间周期,全功能回归测试从2~3天人工测试降低到自动化测试6~8小时。每个迭代的时间缩短2天左右。

缩短了各环节流转的时间,蜂鸟效能平台自动化CI/CD次数自上线以来达到几万次,已经实现了从开发人员提交代码到生产发布过程中的自动化,节约了大量的人力成本。其中各环境下的发布部署改造前后具体参考图如下:
image.png
从上图可知,通蜂鸟效能平台的实现与应用,使应用制品在开发、测试和运维阶段的发布部署过程中,对应的发布部署效率提升10倍以上。

3、提升交付质量,减少线上故障

静态代码扫描可以识别一定的代码逻辑设计、编码缺陷及安全漏洞,减少了程序问题导致的生产问题。

应用发布过程中,应用包在开发、测试和生产的环境流转过程中,应用包不用重新编译打包,实现了同一应用包多环境流转,系统、业务配置参数通过配置中心读取,减少了因为应用包变更和参数配置问题导致的生产发布问题。

通过容器化技术实现了各环境对应用的隔离性和封装性,减少了因为开发、测试、生产环境的差异性导致的生产发布问题。