秉“双区”建设之势,怀服务大湾区之志,深圳某大型银行(以下简称“A 银行”)在 2022 年全面开启以数字化转型为方向的第二个五年发展战略规划新征程。“零售+科技+生态”动力齐驱,A 银行坚持以科技敏捷带动业务敏捷,不断纵深推进数字化转型与场景经营。
然而,随着 A 银行数字化转型逐渐深入,快速扩张的 IT 建设团队给多团队管理及跨团队协作带来了全新的挑战,而不断变化的业务需求,也对研发资产的安全管控及研发交付的效率、质量提出了更高的要求。
为了让 IT 建设团队以更敏捷的协作、更高效高质的交付应对数字时代的业务需求,A 银行最终从多家厂商中选择引入 CODING 一站式研效平台,从研发效能升级入手加快其数字化步伐。
对于金融行业来说,保障用户数据安全以及业务连续性是重中之重。为此,A 银行内部有严格的数据容灾要求:硬件层面满足一份数据三个副本存储,任意一物理节点宕机均不影响平台正常运行使用,同时还要满足不同平台的异构备份。
为了帮助 A 银行完成基础设施升级,实现其灾备要求,CODING 的专家团队深入客户现场,最终制定了以 CODING 为基座的容灾及异构备份建设方案。在应用层面上,采用罗湖(主)-武汉(备)两地每日定时同步增量数据,两地 K8S 集群主节点挂载独立备份存储实现连续 7 日平台全量数据备份。同时,行内原有 GitLab 通过 CODING 持续集成流水线,自动实现定时触发备份,达到异构诉求;备份结果每日推送上报 IM 通信平台,管理人员及时感知。
CODING 为 A 银行制定的容灾及异构备份建设方案
在为 A 银行制定灾备方案的过程中,如果选择实时同步,会存在以下两个尖锐问题:
实时同步会导致频繁读写,网络稳定性、平台稳定性难保障,且数据库易锁。
从容灾环境切换回生产环境之后,数据一致性难保障。
因此,CODING 专家团队最终决定选择为 A 银行定时同步备份,备份机每日全量与增量备份,增量同步容灾环境;切换至容灾环境时,全量数据及增量数据备份,再次切换生产环境刷回增量,同时容灾环境备份停止。
经过严密的切换演练及数据一致性验证,CODING 平台满足 A 银行的高可用建设要求,能够大大降低源码资产数据丢失的风险,保障极端情况下代码资产安全。这也为 A 银行开发中心推动各团队使用 CODING 平台托管源码打下坚实的基础。
除了满足银行严格的灾备要求,一站式 CODING 研发效能平台给 A 银行带来的价值远不止于此。A 银行比较注重整体研发流程的体验,一直期望能更好地管控其研发过程,充分利用自动化带来的便利。通过 CODING ,A 银行成功落地端到端的 DevSecOps 流程,实现代码的统一安全管控,打造了敏捷化、规范化、自动化的持续安全交付闭环,极大提升了软件交付质量与速度,降低研发成本,完成研发效能升级。
A 银行基于 CODING 落地的 DevSecOps 研发工作流
对于代码仓库的管理,A 银行原先使用了 Git 、SVN 等代码版本控制管理工具,源代码分散在各个项目组,没有统一的管理入口。而 CODING 提供的代码仓库功能,不仅支持 Git 、SVN 仓库类型,还支持导入 GitLab 、GitHub 等主流类型代码仓库,并提供仓库分组、团队-项目-仓库级别的精细化权限管控、代码评审、版本管理等功能,有力支撑 A 银行顺利将散落在各个工具的代码全部迁至 CODING ,实现组织代码资产的统一分布式管理。
除代码资产以外,A 银行还将不同业务线的文档、制品及构建资源统一接入 CODING 平台进行管理。CODING 打通了开发、测试、运维等各个研发环节的资产管理链路,利用一站式的优势成功帮助 A 银行实现资源整合,解决其面临的软件资产管理分散问题。
在未使用 CODING 之前,A 银行内部缺乏分支管理规范,部分人员直接在主干分支开发,部分又会拉取分支开发,分支和版本管理混乱。在 CODING 团队的帮助下,A 银行先后制定适配行内传统单体应用和微服务应用的 Git 分支与标签管理策略,同时建立起统一的代码合并评审流程及追溯审计机制,最终形成 master 主干分支发布、feature 特性分支开发的过程分支管理模式。
A 银行通过主干-分支模型规范跨组织研发过程
主干环境:部署主干代码稳定版本,完整依赖,随时发版,持续保护和维护。
分支环境:包含某个迭代分支涉及的单个 /多个服务,用于联调和测试(这里未单独体现出测试环境,不推荐维护测试分支,采用 master 主干进行 daily build ,随时可部署环境,用于集成或联调测试环境,提前发现问题)
此外,A 银行发现研发规范很多时候依赖研发人员自觉遵守,缺乏一定的约束性。而 CODING 平台提供的研发规范机制实时反馈规范执行情况,自动拦截不符合要求的研发活动,“无感”地约束和督促研发人员遵循研发规范。结合行内实际研发诉求,A 银行在代码、分支、版本等方面均配置了对应的约束规则,并通过增加审核环节,实现质量管控并减少协作沟通成本。
A 银行的 IT 团队长期面临外部竞争与金融监管的双层压力,对业务诉求敏捷,对系统追求稳定。通过将代码扫描与制品扫描安全能力融入至自动化的 CI/CD 流水线,CODING 帮助 A 银行提升业务效率的同时还构建了代码安全质量护城河。
如下图所示,A 银行在 CODING CI 流水线中融合了一系列自动化安全活动。在代码检出时,系统会自动进行代码扫描,随后进行单元测试,在镜像被推送到 CODING 制品库之后,随之进行制品扫描。安全活动层层加持,消除了业务发布之前的绝大部分缺陷与风险。
CODING 代码扫描支持 16 种主流开发语言的扫描方案。在设置了扫描语言方案、质量门禁之后,代码检出时会自动对源代码进行扫描,自动生成问题列表,并附带修改建议。
通过问题概览大盘,研发人员可以清晰了解代码问题数量、代码圈复杂度、重复率等情况,极大地帮助 A 银行及时发现潜藏代码缺陷、安全漏洞以及不规范代码,提升代码的可维护性和稳定性。
在镜像构建并推送到制品库的环节,CODING 制品扫描能力会被自动触发。系统会对制品进行依赖分析,解析出制品引用的开源组件,再通过「腾讯安全开源组件漏洞特征库」识别出制品引用的开源组件存在的漏洞,输出漏洞报告与修复建议。A 银行的研发人员可以通过预设的质量红线判断制品质量,也可在详情页查看具体扫描结果。
DevSecOps 的快速推广,单靠重复的人工复制自然是行不通的。得益于 CODING 流水线的可配置、可复用优势,A 银行针对行内常用的研发语言,结合原有脚本,输出了团队内公用的流水线模板,大大降低存量系统接入 DevSecOps 的门槛。不同业务小组成员一键即可复用自动化流水线,提高日常研发过程中的构建与发布效率。
一站式 CODING DevOps 平台的最大优势,是给 A 银行提供了统一的研发入口,为其打通从项目管理、代码托管、代码构建、测试、应用交付到系统运维的研发管理全链路,还同时满足了银行严格的灾备异构需求,为 A 银行高效、高质交付业务价值提供了强有力的基础保障。在未来,A 银行会在行内全面推广并应用全新的基于 DevSecOps 的一站式 CODING 平台,充分利用先进的 DevSecOps 理念让研发链路运转得更顺畅、更高效、更安全。CODING DevSecOps 解决方案,作为 A 银行在数字化转型过程中的强力引擎,将会持续赋能 A 银行优化研发过程体验、专注研发效能提升,领跑数字化业务新赛道。