[Coinbase] 我们如何在Coinbase建立支付系统

探索支付系统完整性的高级组件 朱丽安和莎莉妮·欧鲁甘蒂 背景 Coinbase的使命是为世界创建一个开放的金融系统。 Coinbase Payments团队的使命是使客户能够以令人愉悦且完美无缺的体验使

探索支付系统完整性的高级组件
[Coinbase] 我们如何在Coinbase建立支付系统

朱丽安和莎莉妮·欧鲁甘蒂

背景

Coinbase的使命是为世界创建一个开放的金融系统。 Coinbase Payments团队的使命是使客户能够以令人愉悦且完美无缺的体验使钱币进出加密货币经济。 Coinbase目前在30多个国家/地区支持10多种不同的付款方式,我们正在建立更多的付款方式。 在此博客中,我们将从工程角度分享支付系统的一些主要挑战和最佳实践。

正确性

付款是对任何错误零容忍的领域之一。 确保产品流和功能按预期工作至关重要。 与正确性有关的任何付款错误都将导致不可接受的客户体验。 发生错误时,需要立即进行纠正。 此外,纠正此类错误的过程非常耗时,并且由于各种法律和合规性约束,通常很复杂。

在我们的系统中,我们建立了多层以确保正确性。 这些范围包括实施中的单元测试,针对任何功能更新或流程更改的生产测试/错误重击,监视各种错误率,授权率和成功率; 设置异常检测和警报,以捕获由于新更改而可能导致回归的错误。 产品循环的密切支持还有助于发现任何与正确性相关的问题。

除了逻辑正确性之外,系统行为的正确性还可以扩展到如何处理异常。 我们将在以下各节中讨论其中一些概念。

弹性

正确性的第二个重要方面是系统对外部问题和错误的恢复能力。 例如,支付领域中最重要的概念之一被称为幂等。 这是必要的,因为如果任何失败的交易都有重试计划,我们必须确保重试不会导致任何形式的重复收费。

通常,端到端支付系统将跨越客户端,后端服务以及外部合作伙伴,在该外部伙伴中进行支付交易。 所有交易必须尽可能保持原子性。 但是某些客户端到服务或内部到外部的请求可能会很长,尤其是在超时或失败的情况下,我们只能在几分钟或几小时后才能确认最终结果(成功/失败)。 因此,在某些情况下,我们将从上游向下游重试。 如果整个端到端未正确处理重试,即系统是幂等的,则不可避免地会陷入两次处理同一笔交易的情况,从而导致重复收费或双重支付。

一旦确定了幂等质量,我们还需要确保具有正确的设计以进行自动重试和用户消息传递等。

可恢复性和可追溯性

从上游到下游具有多层时,要考虑的另一重要事项是数据记录。 即,我们如何设计数据模型,数据记录和传播以确保是否出现任何问题,我们将尽最大努力恢复系统状态并跟踪发生的情况。

付款始终同时使用缓存的数据来提高速度,并始终使用持久性的数据来??恢复。 每当有缓存时,重要的是要有正确的策略来指导何时写入哪个数据层。 也就是说,当出现暂时性分歧时,我们如何进行数据传播;如何确定真相的来源;以及我们如何设计整个恢复过程以确保最终的一致性。

正确捕获数据的另一个关键是保持可靠的记录,以便我们始终可以跟踪到底发生了什么。 在不同的情况下需要这样做,包括财务审计,事件记录,问题调查需求等。

可用性和集成速度

在客户体验方面,用户首先关心的是该服务是否可供他们使用。 但是支付系统的技术堆栈由多层组成。 因此,我们尝试通过复制关键组件来增加尽可能多的冗余,以提高系统的可靠性。

国际支付系统的另一个重要方面是地理覆盖范围。 我们向新的司法管辖区添加新的付款方式的速度至关重要。 为了加快集成速度,拥有正确的选择非常重要抽象和抽象层来捕获但也隐藏特定的细节。 例如,设计良好的抽象是指它既可以处理推式付款又可以处理拉式付款。 用于表示付款和付款; 收费和退款; 同步付款和异步付款等。

系统可维护性和可扩展性

保持支付系统的可维护性和可扩展性至关重要。 KISS原则指出:“在任何可能的情况下,都应避免系统中的复杂性,因为简单性可以确保最大程度的用户接受和交互。” 当涉及支付系统设计时,这一原则尤其重要。 将来,任何过于复杂的逻辑或棘手的代码都可能导致神秘的错误。

我们还倾向于维护高质量的运行手册和文档,以获取所有设计注意事项和权衡取舍。 根据我们的经验,相同的设计选择将来可能会引起争议,因此,文档非常宝贵。 我们系统中的大多数设计模式都是相互依赖的,并且相互影响。 这些组件中的每一个对于完成系统都是至关重要的。 拥有完整的文档资料可帮助新人们理解,扩展并与总体设计方法保持一致。

超越

尽管精度对于构建可靠的支付系统很重要,但我们还必须超越。 使客户拥有愉悦的体验来转移资金,不仅使交易安全且正确。 端到端支付系统很复杂,需要考虑法规遵从性,安全性,欺诈和其他因素。 该博客仅涉及一些基本概念和高级概念。 但是,将来我们将分享更多文章,讨论我们的支付系统的深入组成部分。

如果您有兴趣解决诸如此类的复杂技术难题,那么Coinbase正在招聘

[Coinbase] 我们如何在Coinbase建立支付系统

我们在Coinbase上建立付款系统的方式最初发表在Medium上的Coinbase博客上,人们在其中通过突出并响应这个故事来继续对话。

>>在Coinbase上查看

加入我们的电报

在推特上关注我们

在Facebook上关注我们

帖子 [Coinbase] 我们在Coinbase建立付款系统的方式首先出现在AZCoin新闻上。

[Coinbase] 我们如何在Coinbase建立支付系统

—-

原文链接:https://azcoinnews.com/coinbase-how-we-build-payments-systems-at-coinbase.html

原文作者:Coinbase News

编译者/作者:wanbizu AI

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。