by 拉胡尔·卡达姆
高效地处理支付交易是Agoda运营中的关键环节。面对众多支付网关、货币种类和法规,支付团队不断优化规则,以确保交易既顺畅又经济。传统上,这些规则存储在数据库中并通过手动流程进行修改,但这种方法逐渐变得复杂且容易出错。为了解决这些问题,Agoda的支付团队实施了一种创新方法:使用Git作为数据库。
可以观看以下完整视频了解更多详细讨论。
挑战:扩展到更大规模的支付规则管理在阿果达的每笔预订都涉及一个支付流程,该流程需要通过最高效的网关进行交易,并同时符合相关法规要求。拥有超过30个网关和250多种支付方式选项,并且不断进行优化,调整支付规则变得越来越复杂,需要一个更为系统的方法。即使是小的规则调整错误也可能导致交易失败、收入损失或违反法规。
最初,该过程涉及下载支付规则的CSV文件,进行修改,然后重新上传到数据库。虽然在较小的规模上可行,但随着规则数量的增加,这种方法在规则数量增加时带来了显著的风险。没有版本控制、回滚机制或审计功能的支持,这就需要一个更强大的解决方案来应对。
使用 Git 作为数据库的方案:Git 作为数据库意识到传统数据库在动态配置管理上的局限后,支付团队成员探索了用Git充当数据库的想法。Git已经提供了以下是一些关键功能:
- 版本控制 — 跟踪和回退更改。
- 可审计性 — 理解历史修改。
- 复制性 — 确保多个系统之间的一致性。
- 变更审批流程 — 确保结构化的审批流程。
我们将支付规则从数据库移到了GitLab仓库里,并按照类似数据库表的结构进行组织。
实施方案为了将 Git 无缝地集成到支付规则管理的工作流程中,我们将解决方案拆分为两个部分:
- GitLab 仓库用于规则存储
a. 规则采用基于 Git 的层级结构,模仿了传统数据库模式的结构。
b. 不同的分支代表不同的环境(生产环境、测试环境等)。
c. 逻辑映射确保规则易于访问,无需复杂的数据库查询。 - 后台管理门户用于规则管理
a. 用户友好的界面抽象了 Git 的复杂性,使产品负责人和非技术用户能够轻松管理规则。
b. 可以通过用户界面轻松添加、修改或删除规则,而无需直接操作 Git 命令。
c. 每次规则修改后,都会在 GitLab 中自动生成一个 合并请求(即 MR),触发审核和批准流程。
当需要变更时,流程会遵循以下步骤。
- 产品负责人请求修改规则 — 产品负责人访问后台门户并提交规则修改请求。
- 基于Git的版本控制与审批 — 系统创建一个带有提议更改的GitLab分支,确保这些更改被追踪和审查。
- 自动化验证与测试 — CI/CD流水线运行模拟以确保在部署前验证规则变更的影响。
- 合并与逐步部署 — 一旦获得批准,变更将逐步部署,以最小化风险。
- 如有必要可以回滚 — 如果出现问题,团队可以立即回滚到之前的版本。
我们把它用作数据库后发现了很多好处。
- 更佳的变更管理 — 每一次改动都会被记录版本,并在部署前审查。
- 增强的审计能力 — 团队可以追踪历史变更并分析其影响。
- 更快速且安全的部署 — 自动验证降低了人为错误。
- 可扩展性 — 系统能处理更多规则而不会影响性能。
将 Git 作为数据库实现需要在设计系统和确保与现有工作流的兼容性方面进行初始投资。一些挑战包括为非技术人员创建一个标准化的界面以及完善基于 Git 的权限管理。团队在持续改进系统的同时,也在将其扩展到管理动态配置的其他团队中。
结论.通过使用 Git 作为数据库,Agoda 将支付规则的管理转变为一个可扩展、可审计且高效的流程。这种方法不仅确保了交易的无缝性,还为利用 Git 进行创新设立了在软件开发之外的先例。