Arc XP 如何在 亚马逊云科技 上使用亚马逊 CloudFront 和 Lambda @Edge 每年将数据传输成本降低50万美元

美国日报公司 《华盛顿邮 报》使用 Arc XP 的数字体验平台提供数字新闻内容。Arc XP 起源于《邮报》,现已发展成为一家软件即服务 (SaaS) 企业,出版商、广播公司和品牌使用它为全球 1,500 多个网站创建、托管引人入胜的内容并从中获利。

Photo Center 是一款 Arc XP 产品,它使客户能够存储、调整大小、发布和交付图像二进制文件。照片中心完全基于 亚马逊云科技 构建,为每位客户预置了一个专用 Amazon S3 存储 桶来存储他们的内容。随着业务的扩展,Arc XP的存储桶数量和数据传输成本相应增长,他们寻求一种更具成本效益的架构来使用Amazon CloudFr on t交付内容。 但是,Photo Center要求维护数百个存储桶,这意味着要与每个来源配对相应数量的 CloudFront 发行版。这反过来又带来了配置和管理方面的挑战。因此,为了解决这个问题,Arc XP 加入了一项额外的 亚马逊云科技 边缘服务 Lambda @Edge

在这篇博客中,我们回顾了与 Amazon S3 相关的 亚马逊云科技 数据传输的关键成本注意事项,以及 Amazon CloudFront 如何帮助降低这些成本。我们描述了 Photo Center 之前和之后的架构,以了解 Arc XP 如何将 CloudFront 与 Lambda @Edge 相结合,以优化其数据传输成本,同时最大限度地减少配置开销。最后,我们将讨论该解决方案如何不仅降低了成本,还提高了Photo Center的图像传输性能。

Arc XP 照片中心的初始架构

Arc XP 的照片中心应用程序采用 Amazon S3 构建,可为全球客户管理图像。出于合规性、多区域和多租户方面的考虑,使用单个 Amazon S3 存储桶和每个客户端前缀的方法并不是最佳的设计选项。因此,Photo Center 旨在为每位客户提供一个专用 S3 存储桶来存储其内容。作为这种初始架构的一个方面,Arc XP 的客户通过 S3 网址检索了图像,以便在其 Web 应用程序中显示。

随着业务的扩大,Arc XP承担了数百个此类专用Amazon S3存储桶的管理,在取得业务成功的同时,他们向互联网传输的数据也相应增长。随着时间的推移,Arc XP的S3数据传输输出成为Photo Center应用程序的重要成本因素。

图 1 说明了照片中心的初始架构。每个客户的网站都由特定于 S3 的网址提供服务,用于从各自的 Amazon S3 存储桶下载数据。因此,由于这些图像是直接从S3下载到互联网的,因此产生了越来越多的数据传输成本。

Initial architecture with direct S3 access deployment

图 1:直接部署 S3 访问权限的初始架构

从性能的角度来看,检索到以下基于 S3 的 HTTP 请求中的示例图像的总时间为 0.106 秒。尽管这种性能在Arc XP可以接受的范围内,但我们将其包含在此处,以便稍后将其与通过Photo Center修订后的架构实现的检索时间进行比较。

% curl -w "@curl-format.txt" -o /dev/null -s "https://arc***.s3.amazonaws.com/public/SSTVFAY****.jpg"

time_namelookup:  0.028715s 
time_connect:  0.036250s 
time_appconnect:  0.063145s 
time_pretransfer:  0.063265s 
time_redirect:  0.000000s 
time_starttransfer:  0.096473s 
---------- 
time_total:  0.106519s

亚马逊云科技 数据传输注意事项

与 亚马逊云科技 云相关的数据传输有多种形式,每种形式都有特定的目的和含义。例如,可以在单个可用区 (AZ) 内、在单个区域中跨可用区、跨多个区域进行传输,也可以从一个区域传输到互联网。在设计 亚马逊云科技 工作负载时,请务必详细熟悉 亚马逊云科技 数据传输定价模型。 请参阅此处的完整定价信息

与Photo Center的使用相关的数据传输成本的一些关键架构考虑因素包括:

  • 从互联网向 Amazon S3 存储桶(数据上传)传输数据不收取任何费用。
  • 对于每月前 100 GB,您无需为所有 亚马逊云科技 服务和区域(中国和 GovCloud 除外)汇总的数据传输到互联网而收费。
  • 对于在同一 亚马逊云科技 区域内的 S3 存储桶之间传输的数据,您无需支付任何费用。
  • 对于从 S3 存储桶传输到与 S3 存储桶位于同一 亚马逊云科技 区域(包括到同一 亚马逊云科技 区域中的不同账户)内的任何 亚马逊云科技 服务的数据,您无需支付任何费用。
  • 传出(数据下载)到互联网的数据需要收费,但费率可能因地区和服务而异。
  • 从 Amazon CloudFront 到互联网的数据传输费用因地理区域而异,具体取决于提供内容的边缘站点。
  • 从亚马逊CloudFron t传输到互联网的数据比直接从亚马逊S3、亚马逊弹性计算云 (EC2) 、 亚马逊关系数据库 服务 (RDS) 等服务提供的数据要低。
  • 亚马逊云科技 提供免费数据从所有 亚马逊云科技 服务传输到亚马逊 CloudFront,这意味着从 Amazon S3 源传输到 CloudFront 的数据不收取任何费用。
  • 请求(上传、复制、发布、列出、获取、选择)、生命周期过渡和数据检索费用仍适用于 Amazon S3 数据移动。

Arc XP 照片中心经过修改的架构

当Arc XP寻求降低照片中心数据传输成本的解决方案时,他们首先将目光投向了Amazon CloudFront,这是一种低延迟、高传输速度的内容分发网络 (CDN),可以优化数据、应用程序、视频、API 和其他内容的交付。CloudFront 在 亚马逊云科技 的全球边缘站点网络中缓存内容,这使得 Photo Center 等应用程序特别有利于增强性能和最终用户体验。对于Arc XP来说,CloudFront是降低数据传输成本的有吸引力的选择,因为从CloudFront发行版提供的数据传输出比从Amazon S3直接进行互联网传输的费率要低。此外,从 S3 到 CloudFront 的数据传输是免费的,同时其缓存进一步最大限度地降低了底层存储桶的请求量成本。

尽管利用 CloudFront 作为降低成本的边缘缓存存储客户映像是一个简单的选择,但将数百个单独的存储分区用作源也带来了另一项挑战。Arc XP 最初面临着必须为每个存储桶创建 CloudFront 分发的前景,这会很复杂,而且最终无法在所需的规模上站不住脚。相反,他们需要的设计是只部署有限数量的发行版,以便有效地为全球客户预先部署所有的 S3 存储桶。

Lambda @Edge 解决了这个问题,它为 Arc XP 提供了一种在多个客户端之间共享 CloudFront 发行版的机制,同时该机制可以促进对任意数量的存储桶进行动态、代码驱动、有针对性的访问。Lambda @Edge 作为一项全球无服务器计算服务,可以在全球 400 多个 亚马逊云科技 边缘站点执行用户定义的函数。与 CloudFront 相结合,它使开发人员能够构建高度定制的低延迟应用程序和 API。借助 Lambda @Edge 函数,开发人员可以检查和操作请求和响应,以提高性能、安全性、添加动态内容生成,并且(以 Arc XP 为例)实现所有 S3 存储桶的自动来源独立性。

使用 Lambda @Edge OnClientRequest 事件处理程序,Arc XP 实现了轻量级代码,可以动态检查每个请求并帮助 CloudFront 将每个请求路由到调用客户端的相应亚马逊 S3 存储桶。由于 Lambda @Edge 现在充当动态源代理,Arc XP 可以将其客户端聚合到有限数量的 CloudFront 发行版中,从而在数百个 S3 存储桶上生成单个缓存层。

图 2 说明了修改后的照片中心架构。请注意,使用新解决方案,Amazon CloudFront 现在位于 S3 存储桶和终端客户端之间。

Revised architecture with Amazon CloudFront & Lambda@Edge deployment

图 2:部署亚马逊 CloudFront 和 Lambda @Edge 的修订架构

下图所示,照片中心的新数据流是:

  1. 客户对图像的请求会流向 CloudFront。
  2. 向 CloudFront 发出的每个请求都会调用 Lambda @Edge 函数。
  3. 该函数使用请求的客户特定 URL 上下文并确定相应的 Amazon S3 源路径。
  4. CloudFront 使用动态分配的路径来检索图像,然后对其进行缓存。

由于不产生从 Amazon S3 源到 CloudFront 的数据传输费用,因此可以节省成本。适用从 CloudFront 到互联网的较低成本传输费率。此外,CloudFront 还会缓存图像,这随后减少了从 S3 存储桶中检索同一图像的次数。这降低了 S3 GET 操作的总成本。

谈到性能,CloudFront 通过其缓存功能改善了最终用户的体验。对于 Photo Center,CloudFront 通过从距离最终用户更近的边缘位置提供缓存的客户端图像来提高交付速度。Lambda @Edge 进一步使 Photo Center 能够整合少量 CloudFront 发行版背后的多个来源,从而提高其缓存命中率。结果,照片中心的整体性能得到了显著改善。为了演示,现在检索到上一个示例中的相同图像的总时间仅为 0.064 秒。这比之前的初始架构实现的直接来自S3的时间0.106秒提高了40%。

% curl -w "@curl-format.txt" -o /dev/null -s "https://cloudfront-us-***.arcpublishing.com/***/SSTVFAY***.jpg"

time_namelookup:  0.009418s
time_connect:  0.016141s
time_appconnect:  0.038679s
time_pretransfer:  0.038954s
time_redirect:  0.000000s
time_starttransfer:  0.048977s
----------
time_total:  0.064193s

解决方案优势摘要

此后,Arc XP 从其修订后的架构中获得了多项重要好处:

  • 照片中心的亚马逊 S3 数据传输成本已被取消。Amazon CloudFront现在改为收取数据传输费用,从而使其年度数据传输成本减少了50万美元。
  • 利用 CloudFront 在边缘缓存图像,从客户端 S3 存储桶直接检索的延迟减少了 40%。
  • 管理数百个 S3 存储桶来源和 CloudFront 分配已得到简化。该解决方案可容纳由单个 CloudFront 发行版开头的多个存储桶,从而为 Photo Center 图像请求提供单层缓存。
  • 还简化了客户端计量,因为该解决方案允许创建单一访问日志来源。

结论

在这篇博客中,我们讨论了 Arc XP 如何将多个 亚马逊云科技 边缘服务整合到其 Photo Center 架构中,不仅可以节省大量成本,还可以改善最终用户体验。Arc XP 现在使用亚马逊 CloudFront 在高度优化的 CDN 架构中缓存和提供来自数百个 Amazon S3 存储桶的图像。通过进一步整合 Lambda @Edge 并利用其操作请求的能力,Arc XP 的 Photo Center 应用程序会自动将其客户的传入流量映射到相应的 Amazon S3 存储桶。最后,通过代码驱动的方法实现这种来源独立性,他们具有成本效益的解决方案也易于大规模配置和管理。

要审查您的架构并帮助优化数据传输成本,请立即联系您的 亚马逊云科技 账户团队开始使用。