一、背景:A产品是平安集团为金融机构客户提供集中信息服务、跨平台登陆、统一账户管理等多种服务的互联网金融平台,其致力于汇集集团内外部的金融产品和服务,依托互联网技术提供丰富的增值项目,帮助金融机构解决资产负债余缺,改善资产流动性,提升交易效率,降低操作风险。
二、现状:产品线刚成立时200多人,并快速从直销银行切入,打造出产品交付给中小银行客户。从2016年开始,随着签约银行项目增多,交付压力陡增,挑战也越来越大,开始进入混沌状态…
1、 产品标准化严重不足,与银行定制矛盾,近70%的人力投入定制开发,甚至一般先做交付。
2、 需求脱节不一致,不透明,跨地域、跨部门。
3、 基于组件化开发,首次新上线一家银行,100+配置文件,300+SQL文件,近百个jar包,一堆的war包,随着版本演进,版本配套混乱,不敢轻易升级。
4、 手动移交,部署过程经常出错,追溯困难,上线周期漫长,首次上线达8天。
5、 代码分支蔓延,分支再拉分支,缺陷修复及收编导致维护成本持续增长。
6、 满负荷运作,为了交付,加班再加班应对,通宵也是常见的,专业公司经常被要求周末远程支持。
7、 质量问题聚集,长时期积压600多个。
8、 银行监管难满足,不同职责人员权限未做有效分离,研发效率低。
9、 士气低下,一年时间人员流失变动近半。
……
三、措施:基于目前这种状况,敏捷教练应邀入场,开始进行系统化思考、分析,以业界Devops方法为基础,开始着手从需求及构架解耦、持续部署、组织协作等方面进行渐进改进。
1、 架构解耦、定制与标准产品需求分离,并引导价值客户回归产品规划主航道,做强标准,统一需求,分层、分级管理;进一步进行可扩展设计,架构解耦,进行组件化、插件化。
2、 流程现状梳理,分别讨论制定标版流程及Site实施流程
a、 标版流程:规划需求及银行标准需求承载,迭代开发后经验证,进入制品库。
b、 Site应邀实施流程:需求匹配组件,大部分从制品库中选择,少量进入标准需求开发团队,少量定制实施开发承载
3、 基础设施及代码,结构化配置规范梳理
一切设施都进行版本控制
分别讨论制定标准组件代码规范、PAPP业务配置规范、基础设施配置规范、数据库脚本配置规范,所有设施都通过SVN进行配置管理,其中敏感信息如密码等,采用通配符方式在CMDB中配置。并开始基于一个Site进行规范整改试点,逐步调整推动新site完成代码、结构规范化整改
4、 代码分支收编回主干整改
我们梳理其中一个新site试点实施时,发现约60%的组件基于分支进行演进开发,如下图标黄部分,主干收编困难,维护成本持续增长
痛定思痛,决定做一次整改,首先从试点项目涉及的组件开始,推动架构组与产品一起进行,经过一周多的时间,基本完成试点Site的整改,并开始推动其他组件分支收编回主干,如下其中已做整改的site。
5、 持续交付部署流程整理
a、 标准产品需求,进入模块标准产品团队,组件开发测试后,发布进入制品库
b、 银行实施产品,从制品库选择对应组件和版本,以及从SVN上取出对应的配置文件和war包、DB脚本,一键部署到测试、生产环境
6、 神兵Wizard工具方案设计应用
建立两层工作空间,产品层、子项目组件层。各子项目组件层进行需求、版本、部署管理,发布归档制品库。产品银行层,建立需求、版本,选择制品库组件版本,进行部署发布
7、 质量内建,自动化测试inner接入
通过持续集成平台部署完成后,调起自动化接口测试,保障高效质量
8、 组织协作
a、全功能团队:一旦交付项目立项,则组建跨领域PM、前端、后台、测试、运维一体化团队。
b、交付项目总体规划、清晰里程碑
c、相互承诺:Team对PO的承诺纳入迭代能按时完成,PO对Team的承诺迭代中不轻易增加变更需求,PM对团队的承诺,排除项目外干扰,保障项目高效运作。每个迭代开始前,发出明确的迭代计划。
d、保持稳定的版本节奏,测试前置,及时参与测试验收反馈,及时修改。
e、透明化,进度、质量、风险等,通过早会、自动化、持续集成、周报,每日下班前问题风险同步等,及时可视化出来。
四、应用状况:通过以上措施,经历了近半年时间的不断迭代试点应用,根据反馈不断调整渐进改变,在产品中开始应用起来。
1、 模块接收主动规划需求,以及由银行site分配过来的需求,实现需求协作管理backlog管理、看板进度可视化管理。需求分层分级管理,实现全量需求池。银行需求与模块开发组件协作管理。
2、 银行Site与组件版本配套协作高效管理,实现各版本演进可追溯
3、 特性需求看板,以精益看板的方法为特性的端到端交付建立可视化价值流,驱动交付过程的持续优化,现实小批量快速流程为目标
4、 银行Site自动化构建,部署流水线,为从代码提交到发布至生产整个过程建立可视化、可追溯的受控流水线,整合持续集成、环境配置、数据库变更、应用部署等所有自动化过程。一键高效发布部署测试及生产,并可进行回滚。
5、 复杂产品多流水构建情况全景浏览
6、 研发与生产分离,部署计划提前知道
运维部署确认后,一键部署到生产环境。以具有版本控制的脚步来自动化管理所有应用构建,环境配置、数据库等,保证所有基础设施的建立和变更都以抑制的方式进行。
五、效果:目前整体方案已经在新Site中推广应用,并取得一定的效果:
• 规模化应用:银行site上线10家,60+条部署流水线持续运转中,新Site逐步实施中。
• 标准化产品增强,成本降低:通过需求引导、定制与标准分离、以及架构解耦,需求定制降至10%左右,100+组件按版本规范化制品库管理,研发成本大幅降低。
• 研发效率大幅提升:一天多发,增量版本按需交付;标版组件部署从约半小时提升到秒级;新site部署上线从近一周缩减到小时级。
• 基础设施及流程规范化管理:所有设施进入版本控制管理,代码分支蔓延遏制,版本配套混乱、版本升级风险有效解决,实现部署记录可追溯,质量大幅提升,有效满足银行监管。
• 影响:为首家基于Pafa5研发模式管理试点落地,为其他专业公司提供借鉴参考,多个专业公司产品已开始参照该研发管理模式改进。
• 开放平台建设进一步探索中,后台平台化,前台通过接口接入,甚至开放前台给客户自己开发。