公司 Capital One 地点 McLean, Virginia 行业 零售银行业

挑战

团队着手为部署在 AWS 上、使用流处理、大数据决策和机器学习的 Capital One 应用构建一个供应平台。其中一个应用每天处理数百万笔交易;有些处理关键功能,如欺诈检测和信用决策。关键考虑因素包括:弹性和速度——以及从基础 AMI 完全“再水合”(rehydration)集群的能力。

解决方案

Senior Director Software Engineering 的 John Swift 说,运行 Kubernetes 的决定“对我们来说具有非常重要的战略意义”。“我们将 Kubernetes 作为一个基底或操作系统来使用,如果你愿意这样说的话。这在我们的产品开发中存在一定程度的亲和性。”

影响

Lead Software Engineer Keith Gasser 说:“Kubernetes 显著提高了生产力。”他补充说,如果平台不运行 Kubernetes,“纯 AWS 成本很容易就会是我们现在的三倍甚至四倍。”产品上市时间也得到了改善:“现在,一个团队可以来找我们,我们在两周内就可以让他们用一个基本的决策应用启动并运行起来,而以前则需要整整一个季度,甚至更长时间。”部署量增加了几个数量级。此外,“再水合”/集群重建过程以前需要手动完成大半天,现在通过 Kubernetes 自动化和声明式配置只需几个小时。

作为美国排名前十的零售银行,Capital One 的应用每天处理数百万笔交易。大数据决策——用于欺诈检测、信用审批等——是其核心业务。为了支持为银行构建具有这些功能的应用的团队,由 Senior Director Software Engineering John Swift 领导的云团队在其供应平台中采用了 Kubernetes。“Kubernetes 及其整个生态系统对我们来说具有非常重要的战略意义,”Swift 说。“我们将 Kubernetes 作为一个基底或操作系统来使用,如果你愿意这样说的话。这在我们的产品开发中存在一定程度的亲和性。”

大约两年前,团队首先从 Docker 着手,踏上了这段旅程。随后引入了 Kubernetes。Lead Software Engineer Keith Gasser 说:“我们希望将流服务集成到 Kubernetes 中,作为快速决策工作负载的一个特性,并能同时进行批处理。”“一旦数据被流化和批处理,Flink 中有许多我们用于决策的工具集。我们希望在同一个生态系统中以一致的方式提供这些工具,而不是拥有一个庞大的定制‘雪花’生态系统,其中每个工具都需要自己的定制部署。Kubernetes 让我们能够将所有这些工具整合在一起,从而汇聚开源社区甚至许可社区在大数据领域的丰富资源。”

在第一年,影响已经非常显著。Gasser 说:“产品上市时间对我们来说至关重要。”“尤其是在欺诈领域,你必须非常灵活地应对市场上的威胁——能够添加和推送新规则,检测新的行为模式,检测账户和交易流程中的异常。”有了 Kubernetes,“一个团队可以来找我们,我们在两周内就可以让他们用一个基本的决策应用启动并运行起来,而以前则需要整整一个季度,甚至更长时间。Kubernetes 是一个巨大的生产力倍增器。”

团队现在有了在部署方面实现自主的工具,因此,部署量增加了两个数量级。Scrum Master Jamil Jadallah 说:“这只需要七个专门资源,而不需要一整个团队坐在那里监视一切。”“这是一个巨大的成本节约。有了可伸缩性、管理和协调,Kubernetes 确实赋予了我们能力,并比以前节省了更多时间。”

对于 Capital One 要求从基础 AMI 定期“再水合”集群的过程,Kubernetes 也大大节省了时间。为了最大限度地降低云中应用的攻击漏洞风险,Gasser 说:“我们的整个集群会定期从头重建,使用打上最新最好安全补丁的新实例和虚拟服务器镜像。”以前手动执行这个过程需要大半天和相关人员。现在,它是一个快速的 Kubernetes 作业。

节省体现在资本支出和运营支出两方面。Gasser 指出:“使用 Kubernetes 的门槛很低,因为它完全是开源的。”“我们自己动手(DIY)构建了集群,并且非常喜欢能够立即采用社区的最新成果,而无需等待下游公司来做。我们不必支付与这些许可相关的资本支出。此外,由于我们淘汰了特定领域的一些专有软件(sunset),这也为我们节省了资本支出。因此,这对我们的账本(ledger)来说也是积极的。”(其中一些开源技术包括 Prometheus、Fluentd、gRPC、Istio、CNI 和 Envoy。)

Gasser 说,在运营支出(opex)方面,节省也很显著。“我们运行着几十个服务,有数百个 Pod,许多 daemon sets,而且由于我们是数据驱动的,我们利用 EBS 支持的卷声明(volume claims)来处理所有有状态服务(stateful services)。如果我们在没有 Kubernetes 的情况下,在底层云服务上做所有这些事情,我很容易就能看到纯 AWS 成本达到现在水平的三倍或四倍。这还没有计入部署和维护所有额外基础设施所需的人力成本。”

团队相信效益将持续倍增——而且接触这项新技术的工程师学习曲线并不陡峭。Gasser 说:“随着我们将更多租户(tenants)引入这个生态系统,我认为人们理解 Kubernetes 的需求不一定会上升。事实上,我认为它会下降,这是好事。”“因为这真正体现了这项技术的可伸缩性。你开始获得收益,他们可以专注于构建业务所需的所有出色决策功能——欺诈决策、信用决策——而无需担心‘我的 AWS 服务器坏了吗?我的 Pod 没有在运行吗?’”