广告

Forrester:这就是无服务器开发的最佳实践

  • 浏览(529)
  • 评论(0)
  • 译者:k8s

Forrester分析师Devin Dickerson研究了无服务器的趋势和最佳实践,他表示,无服务器开发正在迅速成熟。Dickerson是一份关于无服务器开发和交付最佳实践的新报告的主要作者,他介绍了开发人员需要了解的关于无服务器环境中的部署的种种。

Dickerson说,在许多方面,无服务器的发展可以追溯到DevOps运动,它将一些运维问题推回到了开发阶段。

“作为一个副产品,开发人员突然不得不比以前担心更多的运维问题。无服务器是有益的,因为它消除了开发人员的运维顾虑。”

当然,无服务器并不意味着字面上的无服务器,只是服务器是托管的和虚拟的。但对于开发人员来说,无服务器消除了许多运维上的麻烦,这可能解释了它的流行。在Forrester的2022年开发者调查中,2452名开发者中有33%表示他们目前正在使用无服务器架构,另有30%表示他们想使用它。

将服务设计为短暂的实例

无服务器的最大考虑因素之一是应用程序部署在仅在事件调用或触发时运行的功能中。

Dickerson说,对于传统的基于微服务的应用程序,甚至是单体应用程序,开发人员可以全面了解生产中的情况。但对于无服务器应用程序,情况并非如此,有些部分有时根本无法运行。

“当你设计一个无服务器应用程序时,你必须考虑到它不会一直运行。一旦不再运行,它就会离开。”

为此而设计意味着使微服务成为离散的、单一责任的功能。报告还指出,这还意味着设计要执行的功能,然后再执行。

“当无服务器开发人员为短期运行、独立的工作负载构建时,他们获得了自主水平扩展的好处,可以在很短的时间内完成,成本也很低。”该报告称。此外,功能有效载荷应较小,并减少依赖关系,以提供最佳性能。

报告指出,如果有独立的工作负载和零星的需求,则无服务器架构可以很好地工作,但如果有“难以并行处理的串行化工作单元”,它不是最佳方法。

将功能即服务与事件驱动的微服务配对

Forrester认为,虽然功能即服务平台(如AWS Lambda、Azure Functions和Google Cloud Functions)是开发的关键,但它们只是一个起点。作为最佳实践,开发人员还可以将功能与事件驱动的微服务配对。

Dickerson说:“有完全无服务器的无服务器应用程序,因此你可能已经开发了一种功能,在这种情况下,用例适合无服务器地完成整个工作。但更常见的是,你将看到微服务和无服务器功能以及整个云原生应用程序一起。”

报告指出,将微服务构建为使用和发出事件的离散功能可以让开发人员“充分利用功能化编程的短暂扩展优势”。它推荐将事件驱动的微服务实现为功能的四个步骤:

——设计事件和域的分类。GitHub Actions可以帮助将微服务实现为功能。

——使用事件队列驱动自动缩放性能。开发人员可以配置无服务器平台来监控事件队列的深度,并在性能开始下降时做出适当响应。

——设计为允许多个微服务响应同一事件。

——假设服务的多个版本可能响应同一事件。开发人员可以使用金丝雀和蓝/绿部署来评估生产中的新服务版本。无服务器框架和工具(如无服务器框架的金丝雀插件)支持这一功能。

设计功能时考虑到自动缩放

要设计自动缩放的功能,请将活动分解为可以单独部署的独立小任务。报告警告说,开发人员还应尽量减少功能等待部署的时间,因为执行时间是无服务器环境中最大的成本驱动因素。

此外,Forrester指出,由于紧耦合,传统的大型关系数据库管理系统在无服务器环境中无法很好地工作。“相反,无服务器开发人员使用更快的NoSQL方法和状态机工作流(如step功能)将状态从业务逻辑中分离出来。”

用容错服务拥抱变革

最后,Dickerson建议,通过发现关键故障点、降低集成风险和其他可预测故障线,提前计划故障,并通过混沌工程和测试测试应用程序的故障策略。

一个应用程序运行多个无服务器、功能,并在不同时间接收事件,需要一种更健壮的测试方法,开发人员尝试模拟生产中可能出错的情况。他补充说,Netflix使用这种混沌测试方法取得了巨大的效果。

Dickerson说:“混沌工程本质上是试图打破自己的系统,目的是创造更具弹性的应用程序。这不是无服务器独有的,但它是一种应用于无服务器的技术。”

原文链接:

https://thenewstack.io/forrester-identifies-best-practices-for-serverless-development/


  • 分享到:
  • icon
  • icon
  • icon
  • icon
箭头