当前位置:网站首页>CODING DevSecOps 助力金融企业跑出数字加速度
CODING DevSecOps 助力金融企业跑出数字加速度
2022-07-05 14:46:00 【CODING】
金融数字化步履不停,研发效能升级不止
秉“双区”建设之势,怀服务大湾区之志,深圳某大型银行(以下简称“A 银行”)在 2022 年全面开启以数字化转型为方向的第二个五年发展战略规划新征程。“零售+科技+生态”动力齐驱,A 银行坚持以科技敏捷带动业务敏捷,不断纵深推进数字化转型与场景经营。
然而,随着 A 银行数字化转型逐渐深入,快速扩张的 IT 建设团队给多团队管理及跨团队协作带来了全新的挑战,而不断变化的业务需求,也对研发资产的安全管控及研发交付的效率、质量提出了更高的要求。
为了让 IT 建设团队以更敏捷的协作、更高效高质的交付应对数字时代的业务需求, A 银行最终从多家厂商中选择引入 CODING 一站式研效平台,从研发效能升级入手加快其数字化步伐。
CODING 灾备异构方案,保障银行业务连续性
对于金融行业来说,保障用户数据安全以及业务连续性是重中之重。为此, A 银行内部有严格的数据容灾要求:硬件层面满足一份数据三个副本存储,任意一物理节点宕机均不影响平台正常运行使用,同时还要满足不同平台的异构备份。
为了帮助 A 银行完成基础设施升级,实现其灾备要求,CODING 的专家团队深入客户现场,最终制定了以 CODING 为基座的容灾及异构备份建设方案。在应用层面上,采用罗湖(主)-武汉(备)两地每日定时同步增量数据,两地 K8S 集群主节点挂载独立备份存储实现连续 7 日平台全量数据备份。同时,行内原有 GitLab 通过 CODING 持续集成流水线,自动实现定时触发备份,达到异构诉求;备份结果每日推送上报 IM 通信平台,管理人员及时感知。
在为 A 银行制定灾备方案的过程中,如果选择实时同步,会存在以下两个尖锐问题:
- 实时同步会导致频繁读写,网络稳定性、平台稳定性难保障,且数据库易锁。
- 从容灾环境切换回生产环境之后,数据一致性难保障。
因此,CODING 专家团队最终决定选择为 A 银行定时同步备份,备份机每日全量与增量备份,增量同步容灾环境;切换至容灾环境时,全量数据及增量数据备份,再次切换生产环境刷回增量,同时容灾环境备份停止。
经过严密的切换演练及数据一致性验证,CODING 平台满足 A 银行的高可用建设要求,能够大大降低源码资产数据丢失的风险,保障极端情况下代码资产安全。这也为 A 银行开发中心推动各团队使用 CODING 平台托管源码打下坚实的基础。
CODING DevSecOps,实现持续安全交付流程闭环
除了满足银行严格的灾备要求,一站式 CODING 研发效能平台给 A 银行带来的价值远不止于此。 A 银行比较注重整体研发流程的体验,一直期望能更好地管控其研发过程,充分利用自动化带来的便利。通过 CODING, A 银行成功落地端到端的 DevSecOps 流程,实现代码的统一安全管控,打造了敏捷化、规范化、自动化的持续安全交付闭环,极大提升了软件交付质量与速度,降低研发成本,完成研发效能升级。
研发核心资产统一纳管
对于代码仓库的管理, A 银行原先使用了 Git、SVN 等代码版本控制管理工具,源代码分散在各个项目组,没有统一的管理入口。而 CODING 提供的代码仓库功能,不仅支持 Git、SVN 仓库类型,还支持导入 GitLab、GitHub 等主流类型代码仓库,并提供仓库分组、团队-项目-仓库级别的精细化权限管控、代码评审、版本管理等功能,有力支撑 A 银行顺利将散落在各个工具的代码全部迁至 CODING,实现组织代码资产的统一分布式管理。
除代码资产以外, A 银行还将不同业务线的文档、制品及构建资源统一接入 CODING 平台进行管理。CODING 打通了开发、测试、运维等各个研发环节的资产管理链路,利用一站式的优势成功帮助 A 银行实现资源整合,解决其面临的软件资产管理分散问题。
研发管理规范统一落地
在未使用 CODING 之前, A 银行内部缺乏分支管理规范,部分人员直接在主干分支开发,部分又会拉取分支开发,分支和版本管理混乱。在 CODING 团队的帮助下, A 银行先后制定适配行内传统单体应用和微服务应用的 Git 分支与标签管理策略,同时建立起统一的代码合并评审流程及追溯审计机制,最终形成 master 主干分支发布、feature 特性分支开发的过程分支管理模式。
主干环境:部署主干代码稳定版本,完整依赖,随时发版,持续保护和维护。 分支环境:包含某个迭代分支涉及的单个/多个服务,用于联调和测试(这里未单独体现出测试环境,不推荐维护测试分支,采用 master 主干进行 daily build,随时可部署环境,用于集成或联调测试环境,提前发现问题)
此外, A 银行发现研发规范很多时候依赖研发人员自觉遵守,缺乏一定的约束性。而 CODING 平台提供的研发规范机制实时反馈规范执行情况,自动拦截不符合要求的研发活动,“无感”地约束和督促研发人员遵循研发规范。结合行内实际研发诉求, A 银行在代码、分支、版本等方面均配置了对应的约束规则,并通过增加审核环节,实现质量管控并减少协作沟通成本。
安全活动融入自动化 CI/CD 流水线
A 银行的 IT 团队长期面临外部竞争与金融监管的双层压力,对业务诉求敏捷,对系统追求稳定。通过将代码扫描与制品扫描安全能力融入至自动化的 CI/CD 流水线,CODING 帮助 A 银行提升业务效率的同时还构建了代码安全质量护城河。
如下图所示,A 银行在 CODING CI 流水线中融合了一系列自动化安全活动。在代码检出时,系统会自动进行代码扫描,随后进行单元测试,在镜像被推送到 CODING 制品库之后,随之进行制品扫描。安全活动层层加持,消除了业务发布之前的绝大部分缺陷与风险。
CODING 代码扫描支持 16 种主流开发语言的扫描方案。在设置了扫描语言方案、质量门禁之后,代码检出时会自动对源代码进行扫描,自动生成问题列表,并附带修改建议。
通过问题概览大盘,研发人员可以清晰了解代码问题数量、代码圈复杂度、重复率等情况,极大地帮助 A 银行及时发现潜藏代码缺陷、安全漏洞以及不规范代码,提升代码的可维护性和稳定性。
在镜像构建并推送到制品库的环节,CODING 制品扫描能力会被自动触发。系统会对制品进行依赖分析,解析出制品引用的开源组件,再通过「腾讯安全开源组件漏洞特征库」识别出制品引用的开源组件存在的漏洞,输出漏洞报告与修复建议。 A 银行的研发人员可以通过预设的质量红线判断制品质量,也可在详情页查看具体扫描结果。
DevSecOps 流水线一键复用
DevSecOps 的快速推广,单靠重复的人工复制自然是行不通的。得益于 CODING 流水线的可配置、可复用优势, A 银行针对行内常用的研发语言,结合原有脚本,输出了团队内公用的流水线模板,大大降低存量系统接入 DevSecOps 的门槛。不同业务小组成员一键即可复用自动化流水线,提高日常研发过程中的构建与发布效率。
研发效能全面提升,助力推进银行数字化转型
一站式 CODING DevOps 平台的最大优势,是给 A 银行提供了统一的研发入口,为其打通从项目管理、代码托管、代码构建、测试、应用交付到系统运维的研发管理全链路,还同时满足了银行严格的灾备异构需求,为 A 银行高效、高质交付业务价值提供了强有力的基础保障。在未来, A 银行会在行内全面推广并应用全新的基于 DevSecOps 的一站式 CODING 平台,充分利用先进的 DevSecOps 理念让研发链路运转得更顺畅、更高效、更安全。 CODING DevSecOps 解决方案,作为 A 银行在数字化转型过程中的强力引擎,将会持续赋能 A 银行优化研发过程体验、专注研发效能提升,领跑数字化业务新赛道。
边栏推荐
- 两个BI开发,3000多张报表?如何做的到?
- [learning notes] stage test 1
- Install and configure Jenkins
- Thymeleaf th:classappend attribute append th:styleappend style append th:data- custom attribute
- C language -- structure and function
- Long list optimized virtual scrolling
- Niuke: intercepting missiles
- APR protocol and defense
- Talking about how dataset and dataloader call when loading data__ getitem__ () function
- 729. 我的日程安排表 I :「模拟」&「线段树(动态开点)」&「分块 + 位运算(分桶)」
猜你喜欢
浅谈Dataset和Dataloader在加载数据时如何调用到__getitem__()函数
MongDB学习笔记
Coding devsecops helps financial enterprises run out of digital acceleration
CPU design related notes
申请代码签名证书时如何选择合适的证书品牌?
Under the crisis of enterprise development, is digital transformation the future savior of enterprises
PHP - fatal error: allowed memory size of 314572800 bytes exhausted
基于TI DRV10970驱动直流无刷电机
freesurfer运行完recon-all怎么快速查看有没有报错?——核心命令tail重定向
计算中间件 Apache Linkis参数解读
随机推荐
Un week - end heureux
浅谈Dataset和Dataloader在加载数据时如何调用到__getitem__()函数
PostgreSQL 13 installation
PMP考试20天能通过吗?
mysql8.0JSON_CONTAINS的使用说明
注意!软件供应链安全挑战持续升级
网上电子元器件采购商城:打破采购环节信息不对称难题,赋能企业高效协同管理
【招聘岗位】软件工程师(全栈)- 公共安全方向
直播预告|如何借助自动化工具落地DevOps(文末福利)
面试突击62:group by 有哪些注意事项?
Thymeleaf th:with局部变量的使用
Using tensorboard to visualize the training process in pytoch
Under the crisis of enterprise development, is digital transformation the future savior of enterprises
Does maxcompute have SQL that can query the current storage capacity (KB) of the table?
Selection and use of bceloss, crossentropyloss, sigmoid, etc. in pytorch classification
Type declaration of all DOM elements in TS
Thymeleaf th:with use of local variables
手写promise与async await
裁员下的上海
Photoshop plug-in action related concepts actionlist actiondescriptor actionlist action execution load call delete PS plug-in development