BOA201 | 创造云:发明者的故事
关键字: [Amazon Web Services re:Invent 2023, Rust, Rust Programming Language, Rust Safety Features, Rust Performance Benefits, Rust Use Cases, Rust Learning Curve]
本文字数: 1800, 阅读完需: 9 分钟
视频
导读
参加本次分享,聆听杰出的工程师 Ames Hamilton分享他在亚马逊任职期间的轶事和见解,他是亚马逊云科技背后最有影响力的技术创造者之一。亚马逊云科技开发者关系总监 Felipe LeMaitre 采访了 James,讲述了他传奇的职业生涯、亚马逊云科技的早期以及云的过去、现在和未来。这是一个从当事人那里了解历史的独特机会。
演讲精华
以下是小编为您整理的本次演讲的精华,共1500字,阅读时间大约是8分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。
《发明者的故事》中进一步详细介绍了亚马逊云科技的软件工程师Tim McNamara对编程语言Rust的探讨。Rust由Mozilla开发,自2016年至2022年,已连续七年被Stack Overflow评为最受喜爱的编程语言。
他指出,正确编写软件非常具有挑战性,这使得不稳定的和不安全的代码被部署到了生产环境中。据估计,在大公司中,大约60-90%的关键安全漏洞源于内存安全问题。软件错误和安全漏洞如此普遍,以至于开发人员和用户都已经习惯了定期的数据泄露、服务中断和性能问题成为无法避免的事实。这个行业还经常使用比严格所需更多的计算资源,如CPU、内存和能源,以获得微小的收益。
Rust的主要目标是解决这些内在的软件问题,通过提供安全性控制,而无需依赖垃圾回收器或运行时。该语言在编译时而非运行时执行严格的检查,从而能够防止诸如空指针异常、竞赛条件等一类的问题。Rust能够在提供这些好处的同时,没有因为管理运行时或虚拟机而降低执行速度。
为了展示Rust的功能式编程风格和简单的并行化,McNamara给出了一个使用Rayon库作为例子的演示。通过额外的几行代码,可以在多个核心上并发地对数字的平方进行求和。他强调了Rust的严谨性,这种严谨性可以预防常见的错误,例如在if语句中使用=而不是==。Rust的模式匹配使得一些任务(如FizzBuzz)变得更加简单且简洁。
接着,McNamara详细阐述了Rust的最大优势——它通过设计确保了内存安全和线程安全。研究表明,大约60-90%的安全漏洞源于内存安全问题,如缓冲区溢出或悬垂指针。通过消除这一类错误,Rust防止了数据损坏、系统崩溃和安全漏洞的发生。在像C/C++这样的语言中,手动内存管理非常容易出错,而在Rust中,这些操作在编译时自动执行,避免了这些问题。
麦纳马拉详细阐述了Rust如何帮助团队在充满信心的前提下构建创新的解决方案。由于编译器的强大功能,它能够捕捉到边缘情况和确保正确处理内存等资源,这使得开发人员能够专注于解决问题而非陷入调试。此外,Rust还通过消除了垃圾回收等运行时的开销,从而提高了性能。编译器强制实施零成本抽象,使得在保证安全性的同时不影响速度。
然而,Rust的学习曲线较为陡峭,这是因为其严格的规范性迫使开发人员处理那些他们之前可能忽略的边缘情况。例如,像循环数据结构这样的特定编程技巧很难安全地实现。然而,麦纳马拉表示,随着时间的推移,开发者会逐渐习惯Rust的特性并高效地进行工作。
为了展示Rust的优势,麦纳马拉列举了一些实际应用案例:
- Tenable公司将其代理服务器从500个减少到200个CPU,性能提高了5倍,同时通过用Rust重写代码,减少了计算的使用。
- 亚马逊云科技的Rust匿名函数使用了比Go或Node.js匿名函数少25%的内存,为客户节省了成本。Rust匿名函数的启动时间与Go相当。
- Tilda通过将其监控守护程序重写成Rust,将客户端的内存使用从100MB减少到8MB(减少了12.5倍),服务器上的内存使用从5GB减少到50MB(减少了100倍)。
在内部,Rust在亚马逊云科技中被广泛应用于Firecracker、s2n和CloudFront等项目。对于S3,存储团队将部分后端重新构建为Rust,实现了两倍的处理量,延迟减少了3倍。他们利用Rust代码的形式验证进行了数学证明,充分发挥了Rust在这一领域的优势。
根据亚马逊云科技团队的实践经验,麦纳马拉建议首先对非关键服务尝试使用Rust。从小规模的项目开始,在Rust中实现原型设计。如果取得成功,再逐步扩大应用范围。虽然初期可能会有学习曲线,但坚持下去,因为随着时间的推移,你将收获巨大收益。
总的来说,Rust提供了可靠的内存和线程安全性,同时保持了高性能且没有运行时开销。它能有效预防一类安全错误,并支持创新。尽管它有一个陡峭的学习曲线,但对于愿意接受初始学习曲线的人来说,其潜在收益是巨大的。
下面是一些演讲现场的精彩瞬间:
亚马逊的软件工程师Tim McNamarra分享了他自己在亚马逊应用Rust的经历,旨在帮助其他开发者了解是否应该选择Rust。
通过一些简单的调整,领导者们展示了如何实现并行处理,以便更好地利用多核处理器。
Rust能够编译出无bug的代码,例如避免在条件语句中使用等于符号而改用赋值,从而减少错误的发生。
Rust的主要优势在于它解决了导致大部分安全漏洞的内存安全问题,使得开发人员可以更加自信地构建创新性的系统。
尽管Rust的安全特性增加了开发和维护的难度,但演讲者认为这种投入对于客户来说是非常有价值的。
作为一家初创公司,Tilda在将客户端迁移至Rust后,成功将内存占用从超过100MB降低到了8MB,而在服务器端则从5GB降到了50MB。
总结
re:Invent的一场演讲主要探讨了Rust这个系统编程语言的特性,该语言在不损失性能的前提下提供了内存安全保证。演讲者首先强调了软件错误和安全漏洞在业界普遍存在的问题,这些问题通常源于内存的不安全性。Rust的目标是通过在不依赖垃圾回收器或运行时的条件下实现对内存布局的全面控制,从而解决这一问题,同时保持绝对的安全性。
Rust的一个重要优势在于它能够通过设计消除一类类的错误和漏洞。研究表明,大约60-90%的关键安全问题源于内存的不安全性,而Rust通过其严格的编译时检查防止了这种情况的发生。除了安全性之外,与其他语言(如Java和JavaScript)相比,Rust还能实现更高的性能和更低的资源使用。
演讲者提供了一些关于Rust在实际应用中为公司带来实际益处的例子,例如显著降低延迟和内存使用。在内部分,亚马逊和亚马逊云科技的团队正在将Rust应用于需要高性能和安全的各种场景,如亚马逊云科技Lambda和亚马逊Prime视频。
然而,Rust的学习曲线仍然是一个挑战。它的严格性迫使开发人员以不同的方式思考所有权和生命周期。但是只要有耐心,开发人员可以克服这一初始困难并享受长期的好处。演讲者建议团队在引入Rust时采取逐步的方法,通过有针对性的原型验证其价值,然后再扩大使用范围。
演讲原文
想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站!
2023亚马逊云科技re:Invent全球大会 - 官方网站
点击此处,一键获取亚马逊云科技全球最新产品/服务资讯!
点击此处,一键获取亚马逊云科技中国区最新产品/服务资讯!
即刻注册亚马逊云科技账户,开启云端之旅!
【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”
亚马逊云科技是谁?
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者,自 2006 年以来一直以不断创新、技术领先、服务丰富、应用广泛而享誉业界。亚马逊云科技可以支持几乎云上任意工作负载。亚马逊云科技目前提供超过 200 项全功能的服务,涵盖计算、存储、网络、数据库、数据分析、机器人、机器学习与人工智能、物联网、移动、安全、混合云、虚拟现实与增强现实、媒体,以及应用开发、部署与管理等方面;基础设施遍及 31 个地理区域的 99 个可用区,并计划新建 4 个区域和 12 个可用区。全球数百万客户,从初创公司、中小企业,到大型企业和政府机构都信赖亚马逊云科技,通过亚马逊云科技的服务强化其基础设施,提高敏捷性,降低成本,加快创新,提升竞争力,实现业务成长和成功。