挑战
Thomson Reuters 有数百种产品和服务,面向从法律事务所、银行到消费者等各行各业的客户。2016 年,Thomson Reuters 决定构建一种解决方案来捕获、分析和可视化其产品/服务生成的分析数据,从而提供洞察意见来帮助产品团队持续提升用户体验。
市场上有很多现成的商用使用情况分析服务。然而,Thomson Reuters 决定构建自己的分析服务,以便管理成本、掌握分析数据所有权,并通过文件元数据之类的其他信息丰富分析数据。
该公司清楚自己希望在云中构建这种解决方案,并且知道底层平台的诸多要求。首先,需要利用动态和静态加密保护信息。还需要每秒处理数千事件,并需要弹性扩展以适应突发新闻时双倍或三倍增长的流量。而且,由于负责构建该解决方案的小组规模相当小,公司需要最大程度缩减行政和管理任务,以便他们能专注于构建新功能和支持产品团队。最后,Thomson Reuters 希望解决方案能快速上线,他们只有五个月的时间。
为什么选择 Amazon Web Services
Thomson Reuters 很快就意识到 Amazon Web Services (AWS) 是能够满足其所有需求的唯一平台。该公司已然在众多功能中使用 AWS,很熟悉它的能力和规模。Thomson Reuters 构建的分析解决方案 Product Insight 依赖于多种 AWS 服务。
初始事件摄取层由 Elastic Load Balancing 以及 Auto Scaling 组中的自定义 NGINX Web 服务器组成。在 SSL/TLS 结束后,摄取层使用元数据增加事件并使用 AWS Key Management Service (KMS) 将它们加密。
摄取层将受保护的数据传递到由 Amazon Kinesis Streams、Amazon Kinesis Firehose 和 AWS Lambda 无服务器计算构成的流式数据管道。Thomson Reuters 评估了包括 Apache Kafka 在内的其他流式数据工具,但发现它们难以管理和扩展。该公司不希望在管理软件堆栈和服务器队列上殚精竭虑,因此选择了完全托管的 Amazon Kinesis。
Amazon Kinesis 流式处理数据管道能够自动批处理数据并以经济高效的方式将其传递到主要数据集,从而永久存储到支持跨区域复制的 Amazon Simple Storage Service (Amazon S3) 存储桶内。通过主要数据集,Thomson Reuters 可以应用额外转换步骤、在系统处于丢失状态时恢复事件中的数据,并支持新的业务案例。如果事件无法即时从摄取层分派到数据管道,故障转移机制会将它们传递到 Amazon S3,以待系统恢复正常运行时重新执行相应操作。
在 AWS Lambda 的帮助下,Thomson Reuters 能够以经济高效的方式加载和处理流式数据,而无需预置或管理任何服务器。Lambda 会从 Kinesis 管道收集数据并将其加载到 Amazon S3 中的主要数据集。另外,每当有新数据存储时,Amazon S3 的数据通知会触发 Lambda,从而对主要数据集执行额外转换。仅当数据通过集成 Kinesis 和 Amazon S3 触发 Lambda 时,Lambda 才会运行代码;并且仅当代码运行时,才需要对计算处理付费。
附加到 Amazon Kinesis 流的并行实时管道会通过连接到 Thomson Reuters Services 平台的自定义提取、转换和加载 (ETL) 服务器将事件传递到安全的多租户 Elasticsearch 集群。所有环节均在 AWS 中托管。Kibana 这个开源的数据分析和可视化工具会将实时数据提供给经授权的 Thomson Reuters 产品团队。
另外,Thomson Reuters Services 平台使用 AWS Identity and Access Management (IAM) 和 Amazon S3 跨账户访问功能提供身份验证和授权层。为监控解决方案,该公司使用了 Amazon CloudWatch。
效益
Product Insight 早于计划时间两个月发布,超出了技术性预期。“我们最初的目标是每秒处理 2000 个事件。”Thomson Reuters 产品创新高级经理 Anders Fritz 说道,“我们的测试显示 AWS 上的 Product Insight 可以每秒处理多达 4000 个事件,并且预期可以在一年内提升到每秒处理 10000 多个事件。” 这意味着每个月可以处理超过 250 亿次事件。
即便是这么高的吞吐量,系统从始至终都没有丢失任何数据。“因为强大的故障转移架构和 AWS 的技术能力,我们从开始收集数据起就没有丢失过一次事件。”Fritz 说。
这期间还发生了美国总统大选和英国脱欧之类的新闻事件,遭遇过使用量暴增。“即使每日事件数量双倍增加,摄取管道也能平稳扩展和收缩,没有丝毫问题。”Thomson Reuters 首席软件工程师 Marco Pierleoni 说道。
内部产品团队很快采纳了 Product Insight,并快速且轻松地将它们加入系统中。“我们可以快速建立团队,时间从几小时到几天不等。”Fritz 说道,“大多数时间都用来计划团队想要分析的数据。在后端,我们可以设置系统,在几分钟内接收产品收据。” 上手过程在 SDK 和标准化数据架构的作用下获得了加速。
由于 Product Insight 是使用 Amazon Kinesis 在流式数据架构上创建,因此产品团队几乎可以实时访问数据。“使用 Amazon Kinesis,我们的解决方案可以在 10 秒内将新事件传递到用户控制面板。”Fritz 说道,“我们的产品团队可以即时了解并响应使用模式,而我们的运营专业人员可以监控表现以便及时检测并缓解异常情况,以免影响客户体验。”
因为 Product Insight 要求最小化行政参与,所以工程师可以集中精力与产品团队合作增加业务价值,而不是花时间管理基础设施。而且,AWS Key Management Service 实现的安全性可以帮助确保解决方案满足内外合规性要求。