团队支持|无服务器
导致文艺复兴时期到云的洪水
Renaissance希望拥有无服务器经验的人员在整个过渡过程中与团队合作,并从一开始就指导他们采取最佳做法
GIA发明了4 C的钻石质量-切割,颜色,净度和克拉-他们仍然是全球评估宝石质量的领导者。
他们的专家团队每年为数百万颗宝石评级。通过其实验室的每颗宝石都会获得一份详细的质量报告,然后,全球的珠宝商,批发商和消费者都将使用该报告来验证其钻石和其他珍贵宝石的质量。
GIA希望将应用程序的关键部分作为高可用性API迁移到云中,供外部客户按需访问。
但是,该系统已在GIA的11个全球实验室中使用,他们必须有谨慎的策略来重新配置它。
为了帮助他们做出如此微妙的转变,GIA向Trek10伸出了援助之手。
GIA对其无服务器API的最初计划是可靠的,即AWS Lambda和API Gateway支持的端点,用于简化API维护的GraphQL以及DynamoDB后端:
但是,当针对整体构建无服务器服务时,有时可能会遇到有趣的挑战。
现有数以千万计的gem报告和TB的多媒体数据。数据在进入过程中需要进行验证,以确保报告引用的任何媒体都存在于云中,并且对于全球访问数据的用户来说,它必须具有高性能。
迷航10建议GIA的数据提取应是其自己的微服务。从面向客户端的API中分离出数据摄取和验证是一种很好的方法,不仅可以降低部署风险,而且可以更轻松,更快地在两个系统上进行迭代。
Kinesis事件流体系结构还将使系统具有可扩展性,使其对未来的需求和变更更具弹性。另外,数据可以作为常规备份存储在S3中。
“我们非常感谢能够将项目分成较小的阶段。我们一次只花一个块,花了几个月的时间,然后进行下一个阶段。 迷航10,让我惊讶的是你能把东西击倒有多快。 -- GIA应用架构师Sean Mare
本地GIA系统将生成报告数据到RawReports流中,然后Lambda函数将执行各种模式和数据验证。然后,该RawReports使用者会将所有已验证的报告事件放置到另一个通用流组件上:
流架构上这种分离的摄取使事情保持灵活和高效。有效的报告可以进入面向客户端API的数据存储中,或直接发送给其他订户。
GIA可以轻松地将此扩展到通过Webhooks与其他客户端进行接口,而不会干扰任何现有组件。
为了实现高可用性和高性能,Trek10和GIA决定为面向客户端的API实现主动-主动多区域设置。
客户端可以路由到两个区域,具体取决于地理位置或延迟。但是要进行此工作,需要在两个区域中同步数据,包括一些配额指标和检查。
在最终设计中,仅涉及两个面向客户端的Lambda函数,几乎没有余地可以打破。
所有这些都作为一个高可用性,低管理的系统组合在一起,具有极高的成本效益。 GIA系统的最大成本是带宽和S3存储成本。其他一切几乎可以忽略不计。
“在负载测试期间,我们对系统进行了测试。我们关闭了一个AWS区域,并在几秒钟内看到了故障转移。” -- 肖恩·马雷
正如Trek10和GIA最终确定其更新的架构设计一样,AWS AppSync进入了beta版。 AppSync是一项托管的GraphQL服务,它将使GIA进一步降低涉及运行API的业务逻辑复杂性。
他们决定改变方向,将AppSync纳入他们的计划。
这里的教训是:云计算快速移动。当您开始设计架构时,可能无法完成。不要害怕依靠最新,最佳的托管服务。
GIA的宝石质量报告系统日趋完善,每天都有珠宝商,珠宝制造商,批发商以及全球宝石和珠宝供应链中的其他人员使用。
目前,它在DynamoDB中拥有约4000万条记录,在S3中存储有56TB的数据。在性能和可用性方面,它的响应时间为0.3秒,到目前为止已达到100%的正常运行时间,并且GIA雇用了0名专门的支持工程师来对其进行管理。
“我们对事情的结果感到高兴。无论用户对系统有何需求,我们都将坚信它可以扩展。现在该退休我们的本地系统了。” -- 肖恩·马雷