Coinbase 利用 AWS Step Functions 在几秒钟内安全地部署到 AWS

600x400_Coinbase_Logo resize

加密货币让用户能够以分散的方式使用资金,并且支持类似现金、不能被资金接收方之外的任何人逆转的交易。这些特征让加密货币受到了越来越多的人的欢迎,这里面既有守法的投资者,也有不法分子。随着加密货币得到更广泛的使用,不法分子盗窃加密货币的动机只会越来越强,机会也只会越来越多。美国联邦调查局的网络犯罪投诉中心收到的加密货币盗窃报告显示,2018 年被盗取的加密货币总价值为 1820 万美元,比 2017 年增加了 212%,而这可能只是全球因加密货币骗局而造成的实际损失的一小部分。

“入侵加密货币交易所是黑客世界中最大的夺旗游戏,”Coinbase 的高级基础设施工程师 Graham Jenson 说道。Coinbase 是一个数字货币钱包和平台,在全球拥有 3000 万客户,交易总额达 2200 亿美元。“作为最大的交易所之一,Coinbas 也是一个最大的入侵目标。”

Coinbase 本着成为安全、可靠、合法的加密货币中心的目标,力争在安全性、合规性、技术、客户支持和设计等方面达到世界一流水平。所以,Coinbase 自 2015 年以来一直将 Amazon Web Services (AWS) 作为其主要基础设施提供商,近期使用其他 AWS 技术来改善其软件部署流程。

要保护客户免受攻击,Coinbase 的工程师必须能够快速、可靠、安全地在所有公司系统中部署更新和新功能,而有些软件部署流程需要 20 小时或更长时间才能完成。为了简化和完善各项流程,Coinbase 使用 AWS Step FunctionsAWS Lambda 针对部署工具的临时产品组合构建可以重复使用的通用框架。(AWS Lambda 是一个无服务器平台,可以运行代码来响应事件,AWS Step Functions 可以将多个 AWS 服务协调为无服务器工作流。)

“借助 AWS Step Functions 和 AWS Lambda,我们的任务关键型部署的成功率从 90% 提高到了 97%,”Jenson 说道。

“故障报告显著减少。这是因为 AWS Step Functions 能够为我们的工程师提供信息。”

Graham Jenson,Coinbase 高级基础设施工程师

  • 关于 Coinbase
  • 好处
  • 使用的 AWS 服务
  • 关于 Coinbase
  • Coinbase 是一个数字货币钱包和平台,总部位于旧金山。公司拥有 3000 万客户,处理了超过 2200 亿美元的数字货币交易,其中包括比特币、以太坊和莱特币交易。

  • 好处
    • 部署成功率从 90% 提高到了 97%
    • 添加新的 AWS 账户需要的时间从几天缩短到了几秒钟
    • 解决的用户问题的数量大大增加
  • 使用的 AWS 服务

AWS Step Functions:“正是我们所需要的”

在寻求进一步加强 Coinbase 安全性的方法的过程中,Jenson 找到了完善公司自动化部署管道的方法。“我们有很多部署工具,每个部署工具都有不同的接口,复杂程度也不同,”Jenson 说道。“我们希望有一个通用的框架,让我们能够快速构建部署工具来验证用户输入、安全地将代码发布到 AWS,并且不会对工程师产生阻碍。”

在研究各种解决方案的过程中,Jenson 了解到了 AWS Step Functions。“当我查看相关文档时,我意识到 Step Functions 正是我们所需要的,”Jenson 说道。“Step Functions 可以保持状态长达一年、高度可扩展,并且让我们能够轻松地说明在发生特定错误后怎样处理并重试。”

利用基于 AWS Lambda 和 AWS Step Functions 的框架来构建新的部署工具,并利用 AWS Identity and Access Management (AWS IAM) 和 Amazon Simple Storage Service (Amazon S3),让 Coinbase 能够实现快速实施,只需要在开始时进行简单培训即可。Jenson 的团队构建的第一个部署工具是一款叫做 Odin 的开源 AWS 部署工具,这一工具可以使用 Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling 组安全地将项目版本部署到 AWS 中。

“从想法到实现再到将 Odin 迁移到解决方案中,也就是从概念到生产,总共用了 6 个月时间,”Jenson 说道。“但是,因为代码和构建 Odin 所基于的框架都可以重复使用,所以将后续的两个部署工具投入到生产中只用了几周时间。以后速度会越来越快。”

基于 Step Functions 的简单架构

新的方法大大降低了 Coinbase 的架构的复杂性,让 Jenson 团队能够更好地获得信息。

“我们以前的部署工具都具有不同的网络钩子、回调、Amazon S3 设计、存储桶和 AWS IAM 角色,并且使用不同的通信和轮询方式。要获得我们需要的信息非常难,”Jenson 说道。“现在,我们所有的部署工具都基于相同的 AWS Lambda 和 AWS Step Functions 构建,其操作和交互方式完全相同。我们现在可以看着数据流经 Step Functions、发现特定路径上的问题,并采取措施解决问题。”

这种简单性可以加快添加 AWS 账户的速度,并提高安全性。“利用 AWS Lambda 和 AWS IAM 角色,我们可以为一个 AWS 账户指定一个 AWS IAM 角色,而不是向其开放具有单独配置的整个服务,”Jenson 说道。“利用 AWS Lambda 和 AWS IAM,添加新的 AWS 账户需要的时间从几天缩短到了几秒钟。”

新的解决方案还简化了审核工作。“我们可以让多个账户使用一项 Step Functions 服务,因此我们可以一次审核所有部署,”Jenson 说。“这让我们能够轻松了解所有账户的情况,并且能够在不重新进行审核的情况下启用新的账户,同时确保较高的安全性。”

解决方案让工程师能够独立克服障碍,从而也减少了对基础设施团队的需求。“有关部署失败的问题报告也显著减少,”Jenson 说道。“这是因为 AWS Step Functions 能够为我们的工程师提供信息,以便诊断和解决自己遇到的问题。”

在内部实现的这些技术优势提高了安全性,加快了响应客户请求的速度。“利用基于 AWS Step Functions 和 AWS Lambda 构建的部署工具,我们的工程师可以安全地将代码投入生产,”Jenson 说道。“结果是,我们可以更频繁地发布新功能、更快地响应安全威胁事件,并更轻松地达到 SLA 的要求。这可以帮助我们提供更好、更好全的客户体验。”


了解更多

了解有关 AWS Step Functions 的更多信息。