任何与金融产品合作的机构所需的基础作品。无论是银行还是金融科技公司。
这篇文章是series of posts中的第三部分。我不得不说这部分是我最兴奋的一部分。在我建立金融科技公司的旅程中,这部分是最有趣的。我认为,在最艰难的时期,建立核心银行业务的兴奋使我继续前进。
让我们首先回答为什么银行和金融科技公司需要核心银行业务的问题。
为什么要核心银行业务?
作为人类,我们有多种处理资金的方式。我们从使用物理对象并转变为代表金钱的更抽象的方式。现代经济在我们的设备上有多种版本的货币,实物现金,卡以及最近的移动 /数字钱包。< / p>
现金是进行会计的一种方式。它正在使用物理表示来计算一个人在钱包中具有物理形式的价值。钱包的存在只是为了持有实物现金。想象一下,您的物理钱包里有10美元的笔记,您可以以500美元的价格购买商品,您将亲自交出5美元的笔记,并留下5美元的笔记,而您的钱包中的总余额为500美元。我想说实物现金是“会计”抽象概念的代表。
现在,让我们想象上述购买物品的交易,每次都有不同的价值观和不同的人,同时发生。这基本上就是我们的经济运作方式!当您进行购买时,您只对自己的花费负责,商人对她的收集量负责。交易中的每个方都在进行自己的会计。
鉴于我们现在正在过渡到更“数字”的经济。金钱将再次成为一个更加“抽象”的概念。您只会以数字形式体验金钱。实际上没有钱包。数字钱包的概念仅存在于您的设备上,以使用户容易理解。自然,如果您想拥有数字系统来跟踪所有交易以及经济中所有成员的分类帐,那么一切都需要数字化!这是核心银行系统背后的目的。数字化资金可以实现更多的可能性!您的钱是无形的,无形的。可以在您的任何设备上访问它们,无论距离多远,您都可以向任何人汇款!您可以用钱在在线商店购买商品,为您全部使用的服务付费而不离开房屋。
核心银行如何工作?
核心银行业务最基本的组成部分之一是处理交易的能力。交易代表将资金从一个地方转移到另一个地方的意图。仅此而已。在上述示例中购买商品。您所要做的就是将$ 500从钱包转移到商人的收银机中。最终,商人将“移动”资金收集到某种“银行帐户”中,以确保保存。
现在我们已经确定了交易是什么。这意味着您将需要某种“来源”和“目的地”来跟踪这种资金流。这也意味着核心银行业务中必须有某种分类帐系统。让我们花点时间了解交易和总分类帐的工作方式。
让我们从存款开始
让我们想象您有1000美元的实物现金,并且想数字化。在现代时代,您将去银行开设一个帐户并存入现金。存入现金后,您可以使用智能手机甚至手表获取钱。让我们看看从存入现金开始的分步。
您可能可以理解上面的图像。问题可能是“数字上看起来如何?”。通常,银行会使用某种集中式数据库来存储此信息。让我们看一下数据库中的外观。请注意,这是一个简化的示例来说明一个点。实际上,设计可能要复杂得多。
我们将仅从帐户开头开始。在这种情况下,帐户开放意味着余额将开始为零。 “存款”交易必须单独表示。我们将调用具有“持有“持有人”的“持有人”的实体表。保持余额的实际记录称为“帐户”。鉴于1个持有人可能有很多帐户,最好拥有这种结构。
接下来,我们将研究如何表示交易。鉴于我们已经确定交易是基金从来源到目的地的“移动”。现金必须以某种方式代表我们的系统。必须在我们的系统中以某种方式创建从物理到数字的过渡。让我们看一下它将如何工作。
我们能做的就是用自己的“帐户”添加“系统”条目。余额为零,但我们将使“最小值”无穷大,因为我们不知道现金的限制。在系统中,您可以在许多方面表示无限。但是,我不会在这篇文章中参与其中。我们现在有一个系统级“持有人”,并且具有零余额但无限的“ minumim_balance”的帐户。
我们现在要做的就是创建一项代表“现金”转向“约翰”帐户的交易。我们将新的表介绍给混合物中,我们将其称为“交易”和“更改”。
我们将“事务”记录用作“封装” 2个帐户上2个更改的主要记录。每个帐户的更改分别记录。如果我们愿意,我们还可以使用“交易”表来记录“ Maker_id”,但是在这种情况下,我们将关注实际资金移动。
。您可以看到,在这种情况下,我们从“现金”帐户中删除了$ 1000。两种更改均由相同的“ TransAction_ID”分组。这意味着1个交易将能够确切显示发生的事情。
在这种情况下,我们从包含account_id 2的“现金”帐户的“现金”帐户转移到具有帐户_id1。
的“现金”帐户。数据库中的所有条目都应代表您在核心银行系统中打开帐户时如何发生的押金的完整图片。这只是一种设计。
可能还有许多其他设计。此时可能会想知道:“这如何在我的设备上显示?”。这是一个很好的问题。这是API进来的地方!
什么是API?
API的完整形式是“应用程序编程接口”。在这篇文章中,我不会详细介绍,但是API本质上是将某些系统功能暴露于外界的一种方法。他们通常可以通过一些身份验证来确保。这就是为什么当您使用移动银行应用程序时,必须使用密码和某种OTP令牌登录。
API启用您的移动设备或Web界面,以安全的方式与核心银行交谈,并使您的设备能够从核心银行系统中检索信息。
进行转移
现在,我们了解了API和核心银行业务以及它们如何跟踪系统内的资金移动,我们现在可以将其提升到一个新的水平。
让我们想象您有一个朋友,他也恰好在同一银行拥有一个帐户并已存入。数据库看起来像这样。
我还添加了maker_id字段,以跟踪给定交易的“制造商”是谁。
让我们假设约翰想将500美元转移给戴夫。您可以假设某种UI这样。
最后,在数据库中,将创建新的交易,而更改将500从John的帐户移至Dave的帐户。
这是一个简单的示例,说明了核心银行系统主要组成部分的核心力学。根据要求,有很多可能性。
复杂性
通常,当建立核心银行业务时,尽管实际上可能看起来很简单,但仍有许多挑战在开发这种系统时会造成困难。例如。由于创建这些交易可能需要时间才能完全执行,因此您总是不能负担“一次完成所有操作”。想象一下,您进行了1000次交易,您必须确保系统可以异步运行。这意味着您将操作分为小部分,然后将它们放入某种队列中并分配工作量。
还有其他问题,例如种族条件。这意味着您将必须考虑到转移进行进行锁定帐户之类的事情,因此不会发生双重扣除。对于帐户持有人来说,拥有$ 1000是可怕的,但是由于缺乏适当的操作,使持有人意外地花费了2000美元。
您还需要使用支持某种交易的数据库,以确保在单个数据库事务中发生所有必要的更新和插入。如果其中一个条目失败,则应回滚。
也有处理双交易的问题。您如何阻止客户意外创建2项相同的交易。
这些只是可以在核心银行系统中出现的常见问题列表的开始。需要进行适当的工程和正当程序以确保系统的完整性。
确保事情安全是另一个重要因素。由于所有内容都存储在集中式数据库中,因此确保有适当的过程限制数据库访问至关重要。想象一下,黑客入侵数据库,并将帐户的价值从1000到1,000,000。那不是很好!
结论
有很多方法来建立核心银行业务。相同的机制可用于为贷款产品,跨境支付,数字钱包系统和许多其他类型的金融产品供电。在很多年前,使用此类技术将非常困难。有类似的平台待售,但是它们非常昂贵,并且由于它是货架产品,因此很难自定义以满足独特的业务需求。
具有建立和维护可靠的核心银行系统的能力对于任何提供金融服务的组织都是巨大的优势。
核心银行业务的概念还有更多的事情要探索。在这篇文章中,我们仅涵盖了同一银行内的帐户转帐。这将如何在跨银行转移中起作用。我们将在以后的帖子中探索此类主题和更多内容!
如果您有兴趣了解更多please subscribe。在构建这样的复杂系统方面,我也非常通用。如果您有兴趣与我合作,我在各个行业都有经验