使用Amazon CloudFront进行迁移和现代化
关键字: [Amazon Web Services re:Invent 2024, 亚马逊云科技, CloudFront, Dynamic Content Acceleration, Edge Compute Capabilities, Cloud Native Services, Web Workloads Migration, Persistent Connections Optimization]
导读
迁移到亚马逊云科技为提升您的网络应用的安全性、性能和可用性提供了重要机会。虽然将应用从数据中心迁移可能是一个漫长的过程,但利用亚马逊云科技的全球网络来交付这些应用是快速实现云价值的方法之一。在本次讨论中,我们深入探讨了使用Amazon CloudFront、Amazon Route 53和Amazon Global Accelerator等服务来迁移和现代化网络应用的策略。同时了解Booking.com将其100%的网络流量迁移到Amazon CloudFront的历程,在此过程中淘汰了多个数据中心。
演讲精华
以下是小编为您整理的本次演讲的精华。
Tino Tran和Ali来自Booking.com的演讲者开始了他们的演讲,阐述了亚马逊CloudFront(亚马逊云科技的内容交付网络(CDN)服务)在促进Web工作负载迁移和现代化方面的能力。Tino Tran是亚马逊云科技边缘服务的全球技术领导者,他将CloudFront介绍为一项旨在加速Web工作负载并保护其免受互联网威胁的服务。他阐述了CloudFront的分层架构,包括在全球主要城市战略部署的边缘位置(PoP),在亚马逊云科技区域内部署的区域边缘缓存以增加缓存容量,以及一个私有管理的亚马逊云科技骨干网络将这些组件互连。Tino解释说,这个骨干网络使CloudFront能够绕过公共互联网路由流量,从而优化连接并减少公共互联网路由固有的不一致性。
此外,Tino阐明了最近推出的嵌入式PoP的概念,这是一种直接部署在全球互联网服务提供商(ISP)网络中的新型边缘位置。这些嵌入式PoP专门设计用于满足高度可缓存的尖峰流量模式,如实时视频传输工作负载或热门软件下载,从而提高此类工作负载的终端用户体验。Tino强调亚马逊云科技不断投资扩展和现代化CloudFront的基础设施堆栈,并强调该服务多年来的发展。
随后,负责Booking.com全球流量分配的Ali向观众讲述了Booking.com使用CloudFront迁移和现代化其边缘服务的非凡历程。他通过强调Booking.com自2010年以来在175个国家服务超过45亿次客人入住的巨大规模,为观众提供了背景信息。Booking.com的产品包括各种住宿类型,包括酒店、房屋、公寓,甚至独特的住所,如平房、igloo和树屋。此外,他们的服务还包括共享乘车、租车、景点、体验和全球主要机场之间的航班,产生了数十PB的数据,必须穿过他们的边缘基础设施和亚马逊云科技区域。
Ali阐述了Booking.com的生态系统非常多样化,包含了三十年的工程创新成果。自1996年成立以来,Booking.com的才华横溢的工程师们构建了各种基础设施和架构范例,从单体到微服务和容器化应用程序。他们的基础设施包括内部数据中心、私有云以及采用公有云服务用于众多工作负载。
最初,Booking.com采用硬件设备作为第7层(L7)负载均衡器。虽然这些设备运行良好,但手动配置和垂直扩展的局限性随着Booking.com的增长加速而带来了挑战。因此,Booking.com开发了自己的负载均衡器,利用了NGINX、Proxy、多路径、等成本路由和Anycast等开源技术的组合。这个被称为“分布式负载均衡器”的解决方案部署在他们的数据中心并集中配置,在很长一段时间内非常有效。
然而,随着Booking.com的全球业务和流量量持续呈指数级增长,他们的数据中心负载均衡器变得不够用。为了解决这个问题,他们构建了所谓的“迷你PoP”(最小点存在),这些迷你PoP被战略性地部署在世界各地,并通过租用线路和专用连接与他们的主数据中心相连。这些迷你PoP充当内部内容交付网络或反向代理,扩展了他们的全球覆盖范围,并为各个地区的客户群提供服务。
尽管如此,管理这些众多的迷你PoP在运营上仍然是一个负担,需要在全球范围内采购数据中心空间并确保连接的可靠性和冗余。运营开销和投资回报率的下降促使Booking.com重新评估他们的方法。
在这一重新评估的过程中,Booking.com注意到公有云服务的兴起。因此,他们为新解决方案制定了一系列要求:加速云运营、减轻运营负担、可衡量的性能改进、遵守严格的合规性和安全标准,以及快速可靠的全球骨干网络。
在评估了亚马逊CloudFront之后,Booking.com认为它完全符合他们的要求。CloudFront提供了几个令人信服的优势,包括反向代理功能、源不可知性(能够将流量路由到任何源,无论是托管在亚马逊云科技上还是其他地方),以及通过Lambda@Edge和CloudFront Functions的边缘计算功能。这些功能使Booking.com能够在更靠近终端用户的地方执行逻辑,模拟他们的迷你PoP的功能,同时利用CloudFront广泛的全球基础设施和强大的骨干网络。
在将工作负载迁移到CloudFront之前,Booking.com建立了一个基础框架以确保顺利过渡。这个基础的第一个支柱是可观察性和故障排查工具。认识到对Web流量的可见性的重要性,他们实施了标准日志记录和访问日志记录,并将日志直接部署到Amazon S3。此外,他们引入了实时日志,通过Amazon Data Firehose传递,实现实时分析和与日志分析引擎集成。关键的是,实时日志提供了额外的字段,如源延迟指标和客户端ASN(自治系统号)信息。
对于边缘功能的故障排查,Booking.com利用了CloudFront Function Logging和Lambda@Edge Logging通过Amazon CloudWatch Logs,以便执行查询和获取见解。他们还实施了全面的监控和警报功能,使用CloudWatch创建自定义仪表板和警报,并利用CloudFront控制台中提供的标准仪表板。
Booking.com基础的第二个支柱是确保客户端与CloudFront之间以及CloudFront与他们的源之间的通信安全。他们使用Amazon Secrets Manager注入一个秘密头值,然后由Amazon WAF(Web应用程序防火墙)针对亚马逊云科技生态系统内的源(如API网关或应用程序负载均衡器)验证该头值。对于他们在数据中心的分布式负载均衡器,他们采用了两层安全方法:IP地址白名单用于CloudFront,并验证秘密头的存在。客户端与CloudFront之间的通信通过在亚马逊云科技证书管理器(ACM)中存储SSL证书并为他们的CloudFront分发添加别名来确保安全。
第三个支柱涉及测量性能改进并遵守Booking.com的数据驱动文化。Booking.com进行了一项全面的实验,在他们的遗留迷你PoP解决方案(变体A)和CloudFront(变体B)之间每四小时轮换一次100%的流量。为确保统计学意义上的显著性,他们每天轮换流量转移窗口,并维持实验两周。令人惊讶的是,他们在世界各地的所有地区都观察到了性能改进,一些偏远国家的加载时间甚至比使用CloudFront快30%。
第四个支柱解决了云中的路由配置问题。Booking.com在CloudFront后面负载均衡跨多个源的流量时遇到了挑战,因为CloudFront本身缺乏本地负载均衡功能。他们的解决方案是利用Amazon Route 53的加权路由策略,将所有源作为具有相等权重的条目添加,并配置健康检查以在源失败时自动重新分配流量。
最初,加权路由策略似乎按预期运行,承诺在源之间平均分配流量。然而,实际上,Booking.com遇到了尖峰和不稳定的流量模式,源之间的请求在几分钟内就会波动高达40%。这种波动性带来了容量管理挑战和亚马逊云科技内资源分配的复杂性。
经过进一步调查,Booking.com发现,虽然单个客户的DNS查询到Route 53会导致客户均匀分布到各个源,但CloudFront的边缘位置会在指定的生存时间(TTL)期间缓存DNS解析结果。因此,在同一边缘位置后面的客户群集体被路由到单个源,从而导致了观察到的流量尖峰。
为了缓解这个问题,Booking.com通过微调DNS TTL和连接超时来优化他们的连接重用。这种优化使连接与请求的比率显著提高了6倍,这是减少与TCP和TLS终止开销相关的延迟的关键因素。
在建立了基础支柱之后,Booking.com开始了迁移到CloudFront的过程。他们采用了渐进式方法,利用Route 53的路由策略逐步增加CloudFront的流量份额,从1%的金丝雀部署开始。这种谨慎的部署揭示了各种经验教训和挑战,促使偶尔回滚和调整。
在整个迁移过程中,Booking.com对CloudFront遵守Web标准和局限性有了宝贵的认识。例如,他们遇到了CloudFront严格执行RFC规定的最大URL长度为8KB的情况,而Booking.com的一些服务生成的URL长度超过30,000个字符。这一发现促使Booking.com识别并纠正递归错误,并使受影响的服务现代化以符合CloudFront的标准。
另一个学习经验涉及CloudFront默认的30秒连接超时时间,这与Booking.com的长轮询用例存在冲突,后者的请求可能保持打开长达5分钟。通过与亚马逊云科技解决方案架构师和内部团队密切合作,Booking.com调整了服务配置以适应这些延长的超时时间。
此外,作为一项多租户服务,CloudFront并不提供专用IP地址。这对于一些依赖IP白名单来保护流量的Booking.com合作伙伴来说构成了挑战,需要采用更现代的安全方法。
为了解决在边缘异步执行多个模块的复杂性,Booking.com开发了一个名为“H Function”的框架,使用TypeScript编写。该框架有助于执行各种子模块,如身份验证、指纹识别、A/B测试、可寻址ID、本地上下文丰富和机器人缓解。该框架包含了权限控制、全局配置管理和延迟目标等功能,确保了边缘逻辑的高效和安全执行。
Booking.com最初利用DynamoDB全局表来管理其全局配置对象,实现了配置更改在其边缘基础设施中的实时传播。然而,通过实验,他们发现将配置存储在S3存储桶中并使用CloudFront进行缓存可以获得更快的性能和更高的成本效益。
虽然CloudFront适用于Booking.com的大部分工作负载,但他们遇到了一些需要扩展“边缘”定义超出CloudFront范围的用例。其中一个例子是Booking.com的联盟计划,包括数千个域名和子域名,通过CNAME指向其负载均衡器。由于Booking.com无法控制大多数这些域名的DNS区域,他们需要一种提供全球低延迟、通过多区域部署实现弹性并符合Booking.com安全标准(包括Amazon WAF和Amazon Shield保护)的解决方案。
解决方案涉及使用具有捕获所有重定向规则的应用程序负载均衡器,并由WAF和Shield进行保护。Booking.com然后利用Amazon Global Accelerator(一种anycast服务)来附加在所有边缘位置公布的静态IP地址,从而实现其联盟流量的低延迟重定向。
在总结时,Ali和Tino概述了Booking.com的发展历程,从硬件设备过渡到分布式负载均衡器,最终采用CloudFront作为其边缘解决方案。他们强调建立安全、可观察性和数据驱动决策的坚实基础的重要性,并通过实验来实现这一目标。
Tino强调了CloudFront与源之间持久连接的重要性,这有助于降低反向代理和动态流量工作负载的延迟。他建议与会者了解CloudFront的标准和限制,并强调在迁移过程中进行金丝雀部署以发现潜在问题的必要性。
Ali分享了Booking.com的边缘计算框架“H Function”以及他们使用S3和CloudFront缓存管理全局配置的方法。他还强调了对于不适合CloudFront架构的工作负载,使用应用程序负载均衡器和Amazon Global Accelerator的做法。
在结束语中,Tino重申了关键要点,强调了CloudFront作为动态内容加速的反向代理的适用性,以及它提高性能、可用性和安全态势的能力,并强调在迁移过程中构建云原生体验的重要性。他鼓励与会者测试、衡量、评估并适应服务细节,同时利用CloudFront的功能来推进现代化工作。
Tino最后提供了资源,包括一个开发者门户页面和一个二维码,亚马逊云科技的解决方案架构团队在这里发布与客户的迁移和现代化之旅相关的内容和用例。
下面是一些演讲现场的精彩瞬间:
在reInvent2024演讲期间,边缘服务的全球技术领导者Tino Tran在台上介绍了Ali这一重要的服务客户。
他强调了该公司庞大的规模和多元化的生态系统,包括网约车、旅游业,以及几十年来在各种架构和云平台上的工程创新。
亚马逊云科技优化了最后一英里的通信,并构建了关键指标来遵守CloudFront的可观察性和弹性标准。
演讲者解释了他们如何利用CloudFront为客户提供跨多个数据中心和地区的一致体验。
CloudFront严格遵守RFC标准,解决了诸如来自恶意行为者的过长URL等问题,以确保最佳性能和安全性。
演讲者阐述了处理CloudFront之外的各种工作负载所面临的挑战,包括处理拥有数千个域名和子域名的预订关联公司,以及全球低延迟和多区域弹性的需求。
演讲者鼓励观众访问开发者门户网页,扫描二维码以获取解决方案架构团队分享的宝贵资源和用例。
总结
在这个引人入胜的叙述中,Tino Tran是亚马逊云科技边缘服务的全球技术领导者,Ali是Booking.com的代表。他们分享了使用Amazon CloudFront迁移和现代化Web工作负载的深入见解。他们深入探讨了可观察性、安全性和性能测量的基础支柱,重点介绍了Booking.com评估CloudFront影响的数据驱动方法。
通过全面的实验,他们发现利用CloudFront的全球边缘网络和优化路由,在偏远地区的性能有时可提高30%。Ali详细介绍了他们如何创新性地使用Route 53在多个源之间进行负载均衡,以及他们遇到的挑战,如突发的流量峰值,这让他们对连接重用和DNS缓存有了宝贵的了解。
该演示还展示了CloudFront边缘计算功能的强大作用,包括Lambda@Edge和CloudFront Functions,使Booking.com能够集中应用程序逻辑并提高敏捷性。Ali分享了他们的“H Function”框架,用于在边缘异步执行多个模块,确保低延迟和精细控制。
Tino强调在迁移过程中测试、测量和适应的重要性,因为往往会出现意料之外的挑战。他强调了CloudFront遵守Web标准、与Amazon WAF集成等安全功能,以及最近推出的Anycast静态IP地址。本次会议最后总结了关键要点,强调了CloudFront作为反向代理的多功能性,提高性能、可用性和安全态势的能力,以及促进现代化努力的潜力。
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。做为全球生成式AI前行者,亚马逊云科技正在携手广泛的客户和合作伙伴,缔造可见的商业价值 – 汇集全球40余款大模型,亚马逊云科技为10万家全球企业提供AI及机器学习服务,守护3/4中国企业出海。