金融领域DevOps发展背景

在新一轮科技革命和产业变革的背景下,全球经济和商业模式发生着深刻的变化,金融行业的数字化也步入了深度变革转型时代。随着大量互联网企业,特别是移动互联网企业的冲击,大型金融企业提出了业务模式的加快创新诉求,这要求IT团队加快开发节奏,快速推出满足业务发展需求的产品。当前金融行业的科技发展正在迈入VUCA时代-“易变性(Volatility)、不确定性(Uncertainty)、复杂性(Complexity)和模糊性(Ambiguity)”,导致新型金融业务有大量的不确定性和复杂性,要驱动金融科技向敏捷化发展,金融行业的应用开发和运维必须要关联起来,是金融科技发展到一个成熟阶段后的必然结果。

在DevOps实际应用场景的CI/CD流水线方案中,GitOps被称为软件开发及运维过程的“圣杯”。金融行业在实际应用中为了完成流水线所需的全部工作,需要根据实际场景选择开源工具、闭源工具或二者结合体。不管如何选择,将Git的GitOps最佳实践应用在CI/CD流水线中都是一个不二选择。不过创建流水线最困难的部分是将所有部件粘合在一起,在本文中,将基于金融行业的双态模式的实践经验,重点阐述GitOps在DevOps中工作流程的原理和模式。

什么是GitOps

GitOps是一种实现持续交付的模型,它的核心思想是将声明式的基础架构和应用的投产逻辑存放在Git的版本控制库中。

核心理念:DevOps引入GitOps,把由对活动的跟踪,转换为对直接结果的跟踪,提升管控的透明化与数据化。

//GitOps原则

//

  1. 整个系统都采用声明式描述

  2. 最权威的预期系统状态用Git做版本控制

  3. 变更必须证明可靠,且可以自动在系统上应用

  4. 使用软件守护程序确保系统正确以及对偏差进行报警


GitOps在DevOps领域中的最佳实践

GitOps在DevOps领域更侧重于CD部署的环节,将版本控制、历史记录、评审、回滚、流程跟踪等特性以一种更普适的方式体现在运维投产领域。这些特性早已在开发领域大规模落地运用,在云计算数字转型的大时代下,金融行业的运维投产领域也开始尝试推行运维兼顾开发、数字驱动运维等创新行为,GitOps可以完美契合这股转型创新浪潮的趋势,在加速创新落地的同时驱动内部人才能力的提升。我们通过不断借鉴、学习和验证,总结出如下最佳实践:


分支优于分库

尽管使用多代码库方式具有不少优点,但当维护规模扩大时,会导致不必要的复杂性。此外,如果每个团队的开发、测试、预投产、生产库都是分离的,就很难看清楚整个系统的整体。当每个团队都只关注单一的服务,具备整个平台的知识的人就会稀缺。缩减分库数量不仅能节省时间,还让共享代码、调试、进行反馈等工作更加便捷。

光大科技基于GitOps的最佳实践实现每个团队一个库,如果遇到多库的需要,使用分支来替代。当然,分库的数量没有一刀切的法则,但基于这个最佳实践能给每个团队自己的库,从而对开发人员赋能。同时,使用分支可以确保不会导致分库泛滥。

拉式优于推式

GitOps使用拉取请求进行新代码的发布。拉取请求是指发布的一份带有大量支持信息的申请,目的是让此前所做的变更进入到流程中。这些信息指明了变更原因、变更人,这让调试和解决问题的过程变得非常容易。

光大科技的最佳实践是禁止将任何不必要变动直接推入主干,并对拉取请求进行标准化。推送请求会在网络上暴露集群凭据,而拉取请求则是让生产集群在内部进行部署。运维部署机器人程序观察配置参数的变更,一旦发现变更就会开始驱动“修复”。

GitOps在金融行业DevOps领域中的最佳实践_javaGitOps在金融行业DevOps领域中的最佳实践_java_02GitOps在金融行业DevOps领域中的最佳实践_java_03

使用多模部署机器人程序模式

光大科技云系列产品采用部署机器人程序来替代临时的、手动的脚本。这主要是因为管理有状态的应用和其他复杂的服务非常有挑战性,需要从经验中提取大量的知识。

多模部署机器人使用定制化资源定义(CRD),通过复用各种应用官方程序及光大科技云系列产品自定义的部署机器人程序,就能将已具备的经验复制到正在部署的环境中。比如,要部署某关系型数据库,相比完全从零写脚本处理部署过程,使用该关系型数据库部署机器人程序在集群中部署要更好。

GitOps在金融行业DevOps领域中的最佳实践_java_04GitOps在金融行业DevOps领域中的最佳实践_java_05GitOps在金融行业DevOps领域中的最佳实践_java_06

可观测性+GitOps

通过对系统、集群和应用状态的异常进行监控,并将这些异常数据与Git的触发器流程(比如发生了故障、遇到了性能瓶颈或其他事故)打通,可以自动对生产问题作出应对,并加速问题修复,必要的时候可以进行自动回退。

GitOps在DevOps领域中的展望

进入云计算时代后,项目涉及的基础设施、系统架构和运维方式都发生了很大变化。

GitOps对DevOps理念进行了扩展,它吸收了DevOps文化中协作、试验、快速反馈、持续改进等思想,并以Git作为事实的来源和连接的桥梁,旨在简化云原生时代基础设施和应用程序的部署与管理方式,实现产品更快、更频繁、更稳定的交付。

GitOps结合最流行的分布式版本控制工具和多云声明式编排平台,明确地指出了开发、测试和运维间协作方式,加快了运维开发转型速度,提高了基础设施API化的程度,为自动化、智能化运维提供了殷实的发展契机,随着不可变基础设施和微服务等新型技术的落地,GitOps会进一步发挥更大的价值。