观察无服务器应用(由Cloudflare赞助)
关键字: [Amazon Web Services re:Invent 2024, 亚马逊云科技, Depot, Serverless Applications, Observability Challenges, High Cardinality Data, High Dimensionality Data, Generative Ai Observability]
导读
对于无服务器架构,传统的监控方法不足以找出问题的根本原因。可能会出现挑战,因为你不拥有该架构,无服务器应用本质上是短暂和无状态的,而且通信通常通过事件代理进行。然而,转向无服务器架构并不意味着你应该失去对应用的可见性。在本次讨论中,学习无服务器可观察性的最佳实践,以及OpenTelemetry的分布式追踪、日志和指标如何提供帮助。了解如何使用具有高基数和多维度的工具来搜索和查询所有内容,从而帮助你高效地确定问题所在。本演讲由亚马逊云科技合作伙伴Cloudflare为您带来。
演讲精华
以下是小编为您整理的本次演讲的精华。
Boris在加入Cloudflare约8个月后,他的初创公司Baseline于4月份被该公司收购。他深入探讨了观察无服务器架构的挑战。他强调,在无服务器环境中,应用程序通常由多个函数组成,这些函数与多个数据库交互、向多个队列推送事件,并利用多个事件总线进行协调,而不是单个服务器。这种复杂的相互关联组件网络使得追踪用户请求和理解系统中的相应副作用变得极其困难。
传统的监控工具,如Amazon CloudWatch,将日志呈现为分散在多个日志组中的字符串,从而阻碍了在函数和数据库之间关联事件的能力。尽管存在结构化日志和基本查询功能,但它们在提供应用程序行为的整体视图方面仍然有限。Boris演示了他CloudWatch Lambda仪表板的一个示例,其中日志分散在不同的日志组中,使得理解函数和数据库之间的交互变得具有挑战性。
Metrics作为可观察性的另一个支柱,可以揭示异常情况,如错误或延迟的峰值,但缺乏上下文无法确定根本原因。在一个示例中,Boris在他的Amazon Lambda仪表板上观察到大约在950时出现错误峰值,大约5分钟后执行持续时间出现峰值。虽然这些指标表明存在问题,但他无法验证一个假设,即Kinesis流中的格式错误的消息导致了错误和随后的处理延迟。
分布式跟踪虽然提供了跨服务请求流程的可视化,但无法提供全面的视图。Boris演示了一个来自Amazon X-Ray的示例,其中他可以看到涉及SQS队列和多个DynamoDB调用的单个请求。虽然对于重现特定问题很有用,但分布式跟踪在观察生产环境中的应用程序时变得具有挑战性,因为它缺乏跨请求的关联,并且需要打开多个选项卡来调查单个跟踪。
为了解决这些限制,Boris提倡在可观察性数据中采用高基数和高维度的原则。高基数是指数据值的独特性,例如每秒可能有数十万种可能值的唯一请求ID。另一方面,高维度是指数据集中的字段或列的数量,高维度数据包含数百甚至数千个字段。
Boris通过演示如何利用捕获请求每个细节的宽、高维度事件来实现高级查询、动态仪表板和与分布式跟踪的关联,从而阐释了高基数和高维度数据的强大功能。例如,在一个电子商务应用程序中,开发人员可以按状态码对事件进行分组、检查原始数据以识别与用户代理或部署版本(由Git哈希标识)相关的模式,并与分布式跟踪关联以快速确定问题的根本原因。他提供了一个来自Baseline(他公司构建的工具)的屏幕截图,该工具允许开发人员对高维度数据执行此类高级查询和可视化。
认识到生成式人工智能的潜力,Boris探索了语言模型如何从复杂数据中综合见解,自动呈现异常并提出修复建议。他设想了一个未来,人工智能将持续监控请求、跟踪和事件,主动向开发人员发出潜在问题的警报,并提出补救策略,包括根据对单个跟踪的分析建议代码更改。
Cloudflare的开发人员平台旨在通过捕获高基数事件并与人工智能功能集成,简化无服务器应用程序的开发和部署。该平台提供了一系列服务,包括Cloudflare Workers(在320多个城市提供计算能力)、Workers AI、CDN、R2(与S3兼容的块存储)、D1(SQLite数据库)、KV(全球延迟低于10毫秒的快速键值存储)、Vectorized(向量数据库)、Cloudflare Queues和Durable Objects(具有共置SQLite数据库的有状态无服务器原语)。一个值得注意的特性是能够用额外的上下文(如函数名、队列名、HTTP头和响应状态码)来丰富控制台日志,确保开发人员在无需额外努力的情况下也能从高基数和高维度事件中获益。
来自Depot的Kyle Galbraith分享了他们公司在亚马逊云科技和Cloudflare上观察无服务器组件的方法。Depot专注于加速软件构建,利用无服务器和传统计算资源的组合,包括EC2实例、Fargate、Lambda、SQS、Cloudflare Workers和Cloudflare R2。Kyle强调了监控性能、跟踪跨分布式服务的请求以及获得整个系统统一视图的挑战。
Depot采用可观察性工具、OpenTelemetry和警报机制来检测瓶颈、冷启动和跨多供应商架构的性能回归。通过监控整体延迟并为不同组件设置内部服务级别协议(SLA),Depot可以主动识别和解决性能问题。例如,Depot密切监控冷启动延迟,以确保它们没有意外增加,否则可能会破坏对给定函数执行时间的假设。
在一个示例中,Kyle描述了Depot如何利用可观察性来确保其GitHub Actions Runner产品的性能。当启动GitHub Actions作业时,Depot必须在10到30秒的严格时间窗口内为runner启动基础设施。通过监控为runner分配基础设施所涉及的任务持续时间,Depot可以检测到违反其性能假设的异常值,例如50秒的异常值,并使用OpenTelemetry数据深入研究根本原因。在这个特定实例中,异常值是由另一个作业窃取了基础设施堆栈造成的,这促使Depot实施了严格的排序,使用SQS FIFO队列来减少此类情况发生的可能性。
在整个视频中,Boris和Kyle都强调了在无服务器架构中采用高基数和高维度数据原则进行有效可观察性的重要性。通过捕获丰富的上下文数据,并利用高级查询、关联和人工智能功能,开发人员可以摆脱猜测和模式匹配,而是清楚地了解他们的应用程序在生产环境中的行为,从而确保优化性能和无缝用户体验。
下面是一些演讲现场的精彩瞬间:
Kyle Galbraith,Depot 的联合创始人兼首席执行官,介绍了他自己和公司加速软件构建的使命。
演讲者强调了理解复杂系统的挑战以及传统监控工具如 Nagios 的局限性,后者依赖于指标、日志和跟踪,为引入更先进的解决方案做了铺垫。
演讲者解释了分布式跟踪,它允许可视化跨多个微服务的请求流程,提供了对现代架构中复杂交互的洞见。
Amazon Lambda 函数会将所有请求详细信息、服务调用和响应保存在内存中,将它们字符串化并打印出来以实现可观察性。
Depot 是一种加速软件构建高达 40 倍的解决方案,提供远程容器构建服务,具有即时共享层缓存和针对 Intel 和 ARM 的原生多平台镜像构建功能,以及针对 Docker 镜像构建的优化和洞察。
幻灯片展示了快速启动 EC2 实例以响应构建请求所涉及的 亚马逊云科技 组件的简化架构,其中控制平面位于 Fargate,编排在 Lambda 中进行,消息传递通过 SQS,使实例能够在 5 分钟内启动。
演讲者指示观众将注意力转移到 Boris 那里,以听取总结陈词。
总结
在不断演进的无服务器架构领域,可观测性仍然是一个关键挑战。本文探讨了观察无服务器应用程序的复杂性,并探索了克服这些挑战的创新解决方案。
无服务器应用程序由无数相互关联的函数、数据库和事件总线构建而成,给可观测性带来了独特的障碍。传统的监控方法,依赖于指标、日志和跟踪,往往无法为这些复杂系统提供全面的可见性。无服务器事件的高基数和高维度需要一种新的可观测性方法。
采用生成式人工智能并利用高维度事件(其中捕获了每个请求的所有细节)为前进提供了一条有前景的道路。通过保留丰富的上下文数据,开发人员可以获得前所未有的洞察力,了解应用程序的新兴行为,从而可以回答几乎任何问题并迅速发现问题。
Cloudflare的开发者平台处于这一革命的前沿,将可观测性能力无缝集成到无服务器架构中。通过用上下文数据丰富控制台日志,开发人员可以毫不费力地利用高质量、高维度事件的优势。
本文以Depot公司的真实案例作为结束,Depot公司专注于加速软件构建。Depot的无服务器组件跨越多个提供商,需要统一的可观测性解决方案。通过利用OpenTelemetry和Baseline等工具,Depot可以监控性能、跟踪跨服务的瓶颈,并维护严格的内部SLA,确保出色的开发人员体验。
总之,释放无服务器架构全部潜力的关键在于采用超越传统方法的创新可观测性方法。通过利用高维度事件的力量和利用前沿工具,开发人员可以获得前所未有的对无服务器应用程序的可见性,从而能够提供卓越的性能和可靠性。
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。做为全球生成式AI前行者,亚马逊云科技正在携手广泛的客户和合作伙伴,缔造可见的商业价值 – 汇集全球40余款大模型,亚马逊云科技为10万家全球企业提供AI及机器学习服务,守护3/4中国企业出海。