We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode #108: Lambda on Rust with James Eastham

#108: Lambda on Rust with James Eastham

2024/9/20
logo of podcast Real World Serverless with theburningmonk

Real World Serverless with theburningmonk

AI Deep Dive AI Chapters Transcript
People
J
James Eastham
Topics
James Eastham: 我最初接触 Rust 是为了提升 Lambda 函数的性能,特别是解决冷启动问题。.NET 和 Java 等语言在 Lambda 中的冷启动问题比较突出,虽然近年来有所改善,但 Rust 的原生编译特性使其在性能方面具有显著优势。起初,我关注的是性能,但后来发现 Rust 的其他特性也令人满意,例如其严格的编译器能够帮助我编写更高质量的代码,减少错误。虽然在 Lambda 的单请求环境中,Rust 的并发优势不那么明显,但编译器的严格性仍然能促使我编写更好的代码。 我参与编写了一本关于 Rust 在 Lambda 中应用的书籍,原因在于 Rust 在速度、性能、资源消耗和可持续性方面都具有优势。此外,目前市面上关于如何使用 Rust 构建实际应用的资料相对匮乏,我们的书籍旨在填补这一空白,帮助 Rust 开发者学习 Lambda 及相关 AWS 服务,也帮助不熟悉 Rust 的开发者学习如何在无服务器环境中使用 Rust。 Datadog 的 Lambda 层的重写就是一个很好的例子。之前用 Go 编写的版本已经很不错,但用 Rust 重写后,性能得到了显著提升,二进制文件也更小。这主要得益于 Rust 的性能优势以及针对 Lambda 环境的优化,包括减少依赖项和使用自定义包装器来访问 Secrets Manager,而不是使用完整的 SDK。 关于内存安全,我参考过一个由多个国家安全机构联合发布的报告,该报告建议使用内存安全的语言来提高安全性。Rust 的所有权模型和缺乏垃圾回收机制使其成为一种非常安全的语言,可以有效避免内存泄漏和缓冲区溢出等问题。 目前,我对容器和函数的结合很感兴趣,希望探索如何构建结合两者优势的现代系统。这包括研究如何在 Fargate 容器中部署轻量级 Web 层,并将后端功能迁移到 Lambda 函数中,以及如何有效地监控和管理这种混合架构。 Jan: 我认同 James 关于 Rust 性能和内存安全的观点。Rust 编译器的严格性确实能提高代码质量,减少 bug。此外,我还关注 Erlang 语言,它是一种基于消息传递的异步语言,其设计理念与 Lambda 的执行模型非常相似,这使得它非常适合构建事件驱动的系统。尽管 Erlang 本身有一些缺点,例如语法和工具不够友好,但其核心概念值得借鉴。 关于 Lambda 扩展和层,我理解它们的作用是为 Lambda 函数提供额外的功能,例如 Datadog 的监控功能。之前,由于扩展层包含了较大的依赖项,导致冷启动时间较长,而使用 Rust 重写后,这个问题得到了显著改善。 关于安全方面,我同意将敏感信息存储在环境变量中存在风险,最好使用更安全的存储方式,例如 AWS Secrets Manager 或 SSM。攻击者可以通过各种方式,例如恶意 NPM 包,来获取环境变量中的敏感信息。 最后,关于“无服务器”这个概念,我认为它已经逐渐演变,不再仅仅指 Lambda 函数,而是指一种更广泛的云原生架构模式,其中包含了容器、函数等多种技术。我们需要更准确地描述这些技术,而不是简单地用“无服务器”一词概括。

Deep Dive

Chapters
James Eastham, a developer advocate at Datadog, discusses his transition from .NET and AWS to Datadog and his focus on Rust for Lambda. He highlights the performance benefits and the enjoyable development experience Rust offers.
  • James Eastham transitioned from AWS to Datadog.
  • He's a long-time listener of the Real World Serverless podcast.
  • James is an advocate for using Rust with Lambda functions.

Shownotes Transcript

Thank you to Hookdeck for sponsoring this episode. If you're looking to level-up your event-driven architecture, then check out their serverless event gateway at hookdeck.com/theburningmonk) and help support this channel.James Eastham is a developer advocate at Datadog and co-author of "Crafting Lambda Functions in Rust". In this episode, we dive into writing Lambda functions in Rust and why you should invest in learning Rust.Links from the episode:

  • NSA whitepaper on memory safety)
  • Julian Wood’s Lambda internals talk at re:Invent 2022)
  • Jame's YouTube channel)
  • Crafting Lambda Functions in Rust)
  • Ep106 on middy with Luciano Mammino)
  • Ep97 on LLRT) (the superfast JavaScript runtime for Lambda)

Opening theme song:Cheery Monday by Kevin MacLeodLink: https://incompetech.filmmusic.io/song/3495-cheery-mondayLicense: http://creativecommons.org/licenses/by/4.)