一、背景:A产品是平安集团为金融机构客户提供集中信息服务、跨平台登陆、统一账户管理等多种服务的互联网金融平台,其致力于汇集集团内外部的金融产品和服务,依托互联网技术提供丰富的增值项目,帮助金融机构解决资产负债余缺,改善资产流动性,提升交易效率,降低操作风险。
二、现状:产品线刚成立时200多人,并快速从直销银行切入,打造出产品交付给中小银行客户。从2016年开始,随着签约银行项目增多,交付压力陡增,挑战也越来越大,开始进入混沌状态…
产品标准化严重不足,与银行定制矛盾,近70%的人力投入定制开发,甚至一般先做交付。
需求脱节不一致,不透明,跨地域、跨部门。
基于组件化开发,首次新上线一家银行,100+配置文件,300+SQL文件,近百个jar包,一堆的war包,随着版本演进,版本配套混乱,不敢轻易升级。
手动移交,部署过程经常出错,追溯困难,上线周期漫长,首次上线达8天。
代码分支蔓延,分支再拉分支,缺陷修复及收编导致维护成本持续增长。
满负荷运作,为了交付,加班再加班应对,通宵也是常见的,专业公司经常被要求周末远程支持。
质量问题聚集,长时期积压600多个。
银行监管难满足,不同职责人员权限未做有效分离,研发效率低。
士气低下,一年时间人员流失变动近半。
……
三、措施:基于目前这种状况,敏捷教练应邀入场,开始进行系统化思考、分析,以业界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. 模