华为官网html源代码(华为developer网站)
来源:2023鑫智奖第四届中小金融机构数智化转型优秀案例评选
获奖单位:中泰证券
荣获奖项:专家好评TOP10优秀案例
一、项目背景及目标
DevOps因其先进性和全面性,已被认为是软件工程的第三次革命;由PUPPET和DORA联合发布的《2017 State of DevOps Report》报告中,故障恢复时间缩短了96倍,业务需求从提出到投产的周期从3个月到6个月缩短到3周甚至更短,使得企业更好适应市场变化。
DevOps已经被证实能在IT和商业两方面提升效率。
DevOps定义:DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。
图:敏捷迭代流程
特别是敏捷迭代已经成为金融行业研发团队的主流研发模式,这对开发、测试、运维提出了更高效的要求。
中泰证券互联网研发团队采用敏捷研发模式进行团队间的协作,敏捷的实施需要通过小迭代形式不断的交付应用产品。敏捷开发驱动开发人员更快的交付代码,新的代码需要被更快的测试,并需要频繁的被部署到开发、测试和生产,由于运维和测试不能尽快的参与到软件开发生命周期,导致交付流水线阻塞的情况,而通过DevOps的运用很好解决了这些问题。
在DevOps实施的过程中,涉及的角色主要包括开发、测试(质量)、运维三个角色,见下图:
展开全文
图:开发、测试(质量保证)、运维
其中研发主要关注产品研发的高效、稳定、快速的实现,以及对应的产品开发完成后,交付制品对应上线时间点能够可预期;运维则更多的关注如何通过自动化运维和持续监控等工具降低产品上线后的维护成本;测试(质量保障)角色则关注研发提交过来的产品能够尽快的得到测试,因此在提高质量保障效率的过程中,该角色更多的关注产品的持续自动化测试,以及产品交付质量的提升。而DevOps实现了将研发、运维和质量三个角色统一起来,实现了研发、运维和质量的一体化,同时通过持续集成和持续交付的能力,使运维人员更早的参与到产品的交付过程中区,减少了不同角色之间的交付壁垒。
综上所述,尽管新工具思想的推进在一定程度上能够提升产品的交付效率,但由于企业自动化程度低、软件开发流程的不规范导致的交付效率慢、交付流程不规范、线上故障反映不及时、运营数据获取困难等问题的存在,使企业在实际的产品交付过程中依然不能实现快速交付有价值的产品给用户。这就需要一个平台解决以上问题,但是目前市面上已有的相关产品存在不能和流程结合以及不支持混合制品(容器和非容器)的持续集成与持续交付,且不能获取实际场景的业务数据。因此,一个能够解决当前困境的统一自研DevOps平台变得尤为重要。
图:DevOps能力地图与实践落地
二、创新点
蜂鸟效能平台是国内首次认证发布管理工具,为行业首创,DevOps相关能力项达到了优秀级的标准。
主要创新性体现在以下方面:
2.1流水线CI/CD
为了提高研发人员效率,将自动化工具与流水线相结合,实现自动化的执行流水线相应节点功能。当开发人员进行代码提交或者进行代码合并时将触发静态代码扫描,安全扫描,接口自动化测试,混沌工程演练等并将结果反馈给对应研发人员,测试阶段可以自动触发测试环境部署,接口自动化测试,性能测试等。关键节点如下:
(1)与需求管理系统打通
蜂鸟效能平台实时同步蜂巢平台的需求受理数据,研发人员在蜂鸟效能平台进行提测时可以根据提示选择对应的需求受理编号,从而完成提测、上线与具体蜂巢需求进行绑定。
(2)静态代码扫描
静态代码扫描集成到流水线中,日常开发对于不断的代码提交采用自动增量扫描,便于快速发现新增代码中的缺陷,同时结合定时全量扫描和提测前全量扫描的方式,发现代码中所有的缺陷,只有当高危、中危、低危等级的缺陷全部修复完后才能由开发人员在蜂鸟效能平台上提测版本给测试人员,提升了开发人员提测版本的质量和安全性。
(3)安全扫描
蜂鸟效能平台CI流水线中,也集成了安全扫描,主要包含:网站安全检测,SCA开源组件扫描,IAST扫描。
(4)接口管理
蜂鸟效能平台集成了接口管理的功能,接口管理功能对于不同的研发角色作用不同,开发人员能够利用接口管理功能进行前后端接口调用、多项目接口统一管理、接口调试和多团队协同开发;测试人员能够基于接口管理功能中登记的接口进行简单接口测试、场景化接口测试;运维人员可以基于接口管理功能中登记的接口实现业务监控;产品人员可以快速进行数据统计。
(5)接口自动化
在蜂鸟效能平台上,测试人员能够看到研发人员提测的具体内容,并识别出具体的制品版本及唯一码,测试人员可以在蜂鸟效能平台上对开发人员提测的版本进行一键部署和一键自动化测试,最后测试的结果将以报告的方式反馈给研发人员。
(6)混沌工程演练
在持续部署流水线中,我们在开发环境、测试环境和仿真环境先后实施混沌演练,使用“自动故障注入”的方式来测试可靠性,以便及早发现问题并减少生产故障。
2.2发布管理
为了实现多云环境下的制品流转及发布部署,蜂鸟效能平台实现了一套基于混合云环境的发布管理功能,通过对混合云环境资源的整合,解决了混合云环境的CI/CD发布部署和系统监控问题。
蜂鸟平台的发布管理功能有如下两大特点:
(1)支持多种发布方式
发布方式支持灰度发布方式中的多种策略,如金丝雀发布和蓝绿发布等,同时能够对发布过程中的应用健康状态进行自动化检查,如发现问题能够实现自动化版本回退,极大避免了发布过程对业务的影响,保障了生产环境业务的连续性。
(2)自动部署
研发人员在平台上提测后,测试人员在任务待办里面可以实现一键部署到测试环境。
发起上线流程并经过运维负责人审批后,可以在平台上进行一键发布,查看实时日志,当出现问题时可以回滚到上次发布。
三、项目技术方案
蜂鸟效能平台是一个以DevOps相关理念为指导思想,结合证券行业安全、合规等需求特性实现的一个集多环境(开发、测试、预发布、生产)持续集成(CI)/持续发布(CD)、代码质量检测、自动化测试、上线流程审批、研发效能数据跟踪及报表统计的综合效能管理平台。通过蜂鸟效能平台在互联网研发过程中的应用,提升了互联网研发在市场快速变化的过程中实现产品应用的快速迭代,从而达到减少产品试错与迭代过程中的时间成本和技术人力成本,并为公司业务创收提供技术了保障的目标。
3.1系统架构
蜂鸟效能平台实现了具有持续集成、持续交付和持续运营能力的统一综合效能管理平台,各阶段详细技术如下图:
图:蜂鸟效能平台系统技术架构
蜂鸟效能平台整体技术架构划分为三层,最底层为基础设施层,该层主要为各混合云环境下的基础环境,如私有云、华为云、阿里云和行业云等环境下的开发、测试和生产环境,建立在基础层之上搭建了支撑平台的工具,形成了平台的工具层,如需求管理JIRA、代码管理Git、构建依赖工具、单元测试Junit、代码扫描工具、制品管理工具、自动化测试工具(接口、UI、安全)、配置管理工具、应用部署工具、容器管理kubernetes和监控工具等,通过工具层提供的能力,建立并实现了价值流层,价值流层对应的功能直接为对应的职能化人员赋能,主要为持续集成、持续交付和持续运营等功能。
3.2关键技术
3.2.1流水线CI/CD
蜂鸟效能平台依托DevOps相关理念,结合当前互联网技术中最前沿的容器化技术、容器编排管理kubernetes、微服务架构、配置中心、静态代码扫描、接口管理和自动化测试(UI、接口、安全、性能)等技术,蜂鸟效能平台实现了具有持续集成、持续交付和持续运营能力的统一综合效能管理平台。
图:研发运营一体化全生命周期
为了提高研发人员效率,将自动化工具与流水线相结合,实现自动化的执行流水线相应节点功能。当开发人员进行代码提交或者进行代码合并时将触发静态代码扫描,安全扫描,接口自动化测试,混沌工程演练等并将结果反馈给对应研发人员,测试阶段可以自动触发测试环境部署,UI自动化测试,性能测试等。关键节点如下:
(1)与需求管理JIRA打通
为了将具体需求与迭代上线进行对应,从而达到系统上线需求可追踪,同时也为后续对需求进行价值分析提供基石,因此需要对项目管理平台JIRA与蜂鸟效能平台持续交付进行打通。蜂鸟效能平台实时同步JIRA项目的STORY数据,研发人员在蜂鸟效能平台进行提测时可以根据提示选择对应的STORY,从而完成提测、上线与具体JIRA项目的STORY进行绑定。
(2)静态代码扫描
为了提高研发过程中的代码质量并尽快发现已有系统代码中存在的漏洞缺陷,蜂鸟效能平台提供了静态代码扫描功能,静态代码扫描功能可以对研发人员的代码进行分析并进一步提升编码规范。静态代码扫描功能需要能够识别代码中一些常见的漏洞,如资源类问题(资源释放、无效指针等)、安全性要求(数据污染、注入等)、潜在的缺陷(数组越界、初始化、除零错误、空指针引用等)、多线程和同步性(双重锁定、未释放的锁等)和异常处理(NullPointerException)等。静态代码扫描平台采用增量扫描和全面扫描相结合的方式,日常开发对于不断的代码提交采用自动增量扫描,便于快速发现新增代码中的缺陷,同时结合定时全量扫描和提测前全量扫描的方式,发现代码中所有的缺陷,只有当高危、中危、低危等级的缺陷全部修复完后才能由开发人员在蜂鸟效能平台上提测版本给测试人员,提升了开发人员提测版本的质量和安全性。代码扫描统计分析结果如下图:
图:静态代码扫描统计分析
(3)安全扫描
蜂鸟效能平台CI流水线中,也集成了安全扫描,主要包含:网站安全检测,SCA开源组件扫描,IAST扫描。
网站安全检测
蜂鸟效能平台流水线执行安全扫描包含网站安全检测.主要功能包括:Web漏洞扫描、数据库漏洞扫描、基线配置核查、主机扫描四大扫描功能。
图:网站安全检测
此外还有SCA开源组件扫描,IAST扫描(通过在服务端部署agent程序,收集、监控Web应用程序运行时函数执行、数据传输,并与扫描器端进行实时交互,高效、准确的识别安全缺陷及漏洞)等。
SCA开源组件扫描
与DevOps流程无缝结合,在流水线的相应阶段自动发现应用程序中的开源组件。监控众多开源软件漏洞情报来源,让用户及时获取影响其安全的最新开源软件漏洞和许可证风险情报,下图为SCA的扫描结果。
图:开源组件扫描
IAST扫描
IAST扫描通过在服务端部署agent程序,收集、监控Web应用程序运行时函数执行、数据传输,并与扫描器端进行实时交互,高效、准确的识别安全缺陷及漏洞。
IAST扫描的过程如下:
图:IAST扫描
① 被测试服务器的Web中间件或微服务组件中部署轻量级插桩探针。
② 插桩探针在应用运行时实时捕获请求上下文和代码数据流、代码控制流及函数调用栈等敏感情境信息,动态污点追踪引擎进入工作状态;通过实时监控程序的污点数据在系统程序中的传播,来检测数据能否从污点源传播到污点汇聚点。
③ 当定位到具体漏洞信息,插桩探针将获取的信息发送给管理控制台,控制台展示应用安全测试结果。正常测试流量就可以实时触发漏洞检测,没有额外重放的测试流量也不会产生脏数据。
(4)自动化测试
接口管理
蜂鸟效能平台集成了接口管理的功能,接口管理功能对于不同的研发角色作用不同,开发人员能够利用接口管理功能进行前后端接口调用、多项目接口统一管理、接口调试和多团队协同开发;测试人员能够基于接口管理功能中登记的接口进行简单接口测试、场景化接口测试;运维人员可以基于接口管理功能中登记的接口实现业务监控;产品人员可以快速进行数据统计。
图:接口项目维度管理
图:接口服务维度管理
通过蜂鸟效能平台的接口管理功能与自动化测试功能的集成。目前已经支持UI及接口自动化测试。
UI自动化
UI自动化基于Appium实现,Appium要能真正自动化手机上的应用必须依赖于各个移动平台所带的自动化框架;IOS平台目前依赖于XCUITest实现,安卓目前主要依赖于Uiautomator。框架提供的是运行库,运行库运行在移动设备上。
AppiumServer服务起来后会在移动设备上安装一个帮助自动化的应用,可理解为“控制许可”或者“代理”应用,通过这样应用可以编译我们自动化给出的指令,然后按指令测试移动设备上的应用。
图:UI自动化流程
接口自动化
蜂鸟效能平台的接口自动化功能基于接口分层测试设计的思想,采用python+unittest+ddt框架自研实现。把测试数据与测试代码完全分离,将数据操作、用例配置、日志记录、接口请求等公用方法封装成单独类,使用DDT数据驱动工具管理每个接口的多种测试场景,使用unittest组织、执行多个接口的测试用例集合,通过添加多种断言形式,如接口的状态码、返回值、差异化(diff)对比等对接口测试结果进行判断,最后通过HtmlTestRunner生成测试报告,把返回的测试结果用图形和文本形式形象的展现出来。
图:接口自动化体系
接口自动化测试功能是DevOps实践中不可或缺的一部分,具备持续测试能力,大大提升测试效率,使测试人员快速适应敏捷开发工作模式,从而减少了产品迭代过程中的时间成本和技术人力成本,为产品快速迭代和发布提供了质量保障。
图:接口自动化流程
蜂鸟效能平台的自动化测试功能实现了互联网研发团队测试人员的效率飞跃,通过将自动化测试平台与持续交付的流程进行结合大大提升了测试效率。在蜂鸟效能平台上,测试人员能够看到研发人员提测的具体内容,并识别出具体的制品版本及唯一码,测试人员可以在蜂鸟效能平台上对开发人员提测的版本进行一键部署和一键自动化测试,最后测试的结果将以报告的方式反馈给研发人员。
(5)混沌工程演练
在持续部署流水线中,我们在开发环境、测试环境和仿真环境先后实施混沌演练,使用“自动故障注入”的方式来测试可靠性,以便及早发现问题并减少生产故障。混沌工程主要负责故障注入,具体的演练原子能力如下图所示:
图:混沌工程原子能力
3.2.2混合云管理及生产发布
中泰证券互联网应用系统的部署环境为混合云,为了实现多云环境下的制品流转及发布部署,蜂鸟效能平台实现了一套基于混合云环境的发布管理功能,通过对混合云环境资源的整合,解决了混合云环境的CI/CD发布部署和系统监控问题,具体方案如下图:
图:混合云多云环境部署
对于容器化应用各环境流转发布部署细节如下:
(1)开发环境镜像生成与发布
在Gitlab上创建工程后,研发人员可以自助在平台上对该Gitlab工程绑定自动构建和部署模块,当该工程主分支发生branch合并时触发自动构建,镜像创建后,会将对应的镜像推送到镜像仓库,然后再触发自动化部署脚本将该镜像自动部署到开发环境。
(2)测试环境下的镜像流转与发布
在开发人员将对应的需求开发完后,在蜂鸟效能平台上进行应用产品提测,提测后测试组能够在蜂鸟效能平台上的测试模块看到提测的具体镜像内容,根据提测详情,可以实现一键自动部署,然后再对测试环境的镜像进行自动化功能、接口、性能和UI测试。
(3)生产环境下的镜像流转与发布
在走完产品上线流程审批后,运维人员能够在蜂鸟效能平台上看到具体的上线流程信息,根据实际情况进行自动化发布部署、回滚和复核。
图:制品流转
通过混合云多云环境部署与CI/CD制品流转设计相结合,使研发人员交付的应用制品可以通过蜂鸟效能平台实现多环境流转,最终发布部署到混合云的环境中去。
研发人员在平台上提测后,测试人员在任务待办里面可以实现一键部署到测试环境。
图:测试部署
发起上线流程并经过运维负责人审批后,可以在平台上进行一键发布,查看实时日志,当出现问题时可以回滚到上次发布。
图:生产部署
3.2.3效能指标跟踪及改善
效能指标能够体现研发过程的实施情况,客观的效能数据可以对我们研发改进起到指导效果,没有客观数据和成功标准就无法做到持续反馈和持续改进。蜂鸟效能平台中关键效能指标见下图:
图:效能数据
研发效能数据多维度展示产品交付各阶段的数据,如开发阶段的代码数据统计、测试阶段的自动化测试数据统计、运维上线后的故障数据统计等;其中流水线指标从交付效率和吞吐率两方面主要反映研发过程整体效能情况;项目/需求指标能够从需求的成本和上线后的价值两个角度对需求进行价值数据衡量;研发指标反映了当前研发人员的工作负荷以及产出及质量情况;测试指标对产品质量保证具有关键指导的作用;运维指标能够反映运维工作效率的情况,如线上故障情况及功能上线发布效率。
四、项目过程管理
蜂鸟效能平台由科技研发部牵头,上研二部负责实施。主要经历了以下几个阶段:
4.1需求分析和概要设计阶段
此阶段时间为2022年3月,其间主要完成了业务需求分析、业务功能和技术构架的高层设计。提交了现状需求分析报告、各功能模块的高层设计、技术构架和接口的高层设计等文档。
4.2系统详细设计阶段
此阶段时间为2022年4月,其间主要完成了系统详细设计工作,提交了蜂鸟效能平台系统详细设计说明书等文档。
4.3系统编码、测试和上线准备阶段
此阶段时间为2022年5月-2022年8月,其间完成了蜂鸟效能平台系统的开发、测试以及试点行上线准备工作,提交了蜂鸟效能平台系统测试报告、上线方案、系统设置等文档。
4.4试点行上线阶段
此阶段时间为2022年9月,其间完成了试点运行的情况,为推广实施提出了优化需求。
4.5推广实施阶段
此阶段起始时间为2022年10月,推广上线。
4.6功能迭代优化阶段
此阶段起始时间为2022年11月至今。
五、运营情况
基于DevOps思想构建的蜂鸟效能平台上线以来,已经覆盖到多个业务线使用,经过累计54万+次的CI/CD(持续集成/持续交付),目前平台在公司内部覆盖互联网全部项目,带来金融科技水平能力的极大提升。在行业内,平台也获得多个奖项,并在行业多个期刊发表,获得了行业好评。
六、项目成效
6.1经济效益
(1)降低技术工具采购成本
目前市面上的DevOps平台价格普遍在百万以上并且功能不完善,通过自研,为企业减少了直接采购成本。
(2)提高研发效率,间接降低研发成本
蜂鸟效能平台自动化CI/CD次数自上线以来减少了大量研发人员的时间成本,整体应用交付效率提升60%,对应的发布部署效率提升10倍以上。
(3)节约人力成本投入
在传统企业进行IT架构转型,或者说转向微服务架构后,带来的一个关键问题就是微服务模块会越来越多,原来传统模式下部署一个业务系统可能感觉不到大的工作量,但是实施微服务架构后一个业务系统可能已经被拆分为了10多个微服务模块,那么要部署这些微服务模块,要准备应用服务器,要进行打包部署工作量都会指数级增长。这就导致我们在进行模块构建,模块部署,单元测试等工作的时候耗费大量的人力。而蜂鸟效能平台本身就集成了持续交付和集成各种关键工具集,通过平台可以高效自动化的完成代码检查,编译,构建,打包,部署,环境迁移等各类工作。极大的节约人力投入并提升过程效率,而且在执行过程中可以做到完全可视,可管控。
6.2社会效益
(1)企业研发管理过程的标准化和规范化:
DevOps的实施能够协助企业进行研发管理过程的规范化和流程化,不论是传统的研发过程管理模式,还是敏捷开发思路,都需要对研发过程进行标准化和流程化,再进一步的自动化。这里面涉及到最基本的开发框架,开发规范,配置管理,变更和缺陷管理,测试管理,版本发布等诸多关键过程域,而这些在我们进行DevOps支撑平台实施的时候会协助企业进行这方面的优化和改进。
(2)企业客户群体更快享受到新产品特性:
企业的新功能更快的上线,使用户能够尽快享受到新功能带来的便利;完善的流程质量保证,减少了线上系统故障的数量,使用户获得了更好的使用体验。
七、经验总结
通过对蜂鸟效能平台的建设,实现了以下目标。
(1)建立持续交付流水线平台
蜂鸟效能平台打造端到端的 DevOps 持续交付流水线平台,使之具备较好的组织级能力。提高交付效率,减少人员投入,加快版本迭代频率。
在蜂鸟效能平台系统的建设过程中,建立了统一的上线审批流程,以及制品管理和维护流程。
(2)提高团队研发效率,增强协作能力
通过建设蜂鸟效能平台,研发效能流程/规范/实践内建/固化到DevOps平台,促进开发、测试、运维更紧密高效的协作。
更多金融科技案例和金融数据智能优秀解决方案,请登录数字金融创新知识服务平台-金科创新社案例库、选型库查看。