簡體   English   中英

本機無服務器與無服務器 Express

[英]Native Serverless vs Serverless Express

現在,我正在遵循Serverless Stack Team編寫的指南。 他們正在使用React和許多AWS功能,例如lambdaAPI getaway 為了實踐它,我正在使用無服務器堆棧重寫我的舊Express示例之一。

我還看到了一個名為aws-serverless-express庫或工具 這個庫或工具允許你以serverless形式運行你的express應用程序。

這將是一個奇怪的問題,但我想知道native serverless build 和serverless express之間的區別。

Cold start已經是劣勢。 我知道。 除此之外,無服務器快遞的消極或積極方面是什么?
本機無服務器的負面或正面是什么?

無服務器快遞的缺點

  1. 這些額外的依賴可能導致額外的冷啟動時間
  2. 無法為每個路由設置單獨的細粒度權限(例如,一個路由訪問 S3,另一個訪問 DynamoDB)

優點

  1. 更少的樣板
  2. 避免 CloudFormation 堆棧中的資源限制

更多信息:

https://github.com/jeremydaly/lambda-api#why-another-web-framework

https://www.jeremydaly.com/build-serverless-api-serverless-aws-lambda-lambda-api/#comment-19036

什么構成“本機”無服務器可能有待討論,並構成了一個范圍。 有一些方法可以利用托管服務,從而最大限度地減少 lambda 函數的使用,但有很多用例需要自定義邏輯,例如與第三方服務集成。

我首先會問自己您現有的應用程序是做什么的,以及為了重構為盡可能“無服務器”,您將投入多少時間。 如果這是一個純粹用於學習目的的項目,您可能需要進行完全轉換以最大限度地提高學習效果。 如果這是一個企業的創收應用程序,這可能是對資源的不當使用以獲得回報。

也就是說,當前無服務器最佳實踐與無服務器快遞的使用之間的主要區別是:

  • 存在其他依賴項。 這將需要一些額外的時間在運行時解決 [1],需要在部署時正確管理(打包),並且需要額外的工作來更新/修補/審計(安全)。
  • 權限粒度 - 由於所有路由管理都委托給 express,您將無法在基礎設施級別為每個路由粒度設置權限。
  • 您將無法在每個路由的基礎上設置資源限制

另一方面:

  • 您將避免大型雲形成模板
  • 利用您現有的工具和 Express 知識

盡管它確實取決於應用程序是/做什么,但您不太可能注意到單用途 lambda 函數的冷啟動懲罰,並且可能是過早優化的情況。 無服務器思維的一部分是關注價值 - 所以如果是我這樣做,我會盡可能少地讓應用程序在 lambda 中運行 - 開始使用 X-Ray 和 CloudWatch [2] 檢測路由,然后優化需要它的路由。

從學習的角度來看,如果您確實選擇使用 serverless-express,您可能會錯過更多了解服務集成、VTL 轉換、請求/響應映射等的機會分段方法。 您可以僅使用 API Gateway 和 DynamoDB 構建一些非常酷的東西 - 甚至無需接觸 lambda 函數。

這並不是說以這種方式使用 express 是一件壞事——AWS 自己指出,這是構建無服務器應用程序的有效方式,而 API Gateway [3] 的 HTTP API 功能等新功能對此有所幫助。 事實上,AWS 發布的 [real world serverless application [4] 示例遵循單一功能原則,盡管是針對 Java 而不是快速應用程序。

[1] https://www.freecodecamp.org/news/just-how-expensive-is-the-full-aws-sdk-3713fed4fe70/

[2] https://theburningmonk.com/2019/11/check-list-for-going-live-with-api-gateway-and-lambda/

[3] https://aws.amazon.com/blogs/compute/annoucing-http-apis-for-amazon-api-gateway/

[4] https://github.com/awslabs/realworld-serverless-application

最好使無服務器代碼盡可能簡單,lambda 應該只運行您的業務邏輯,這應該只是一個函數。

如上所述,冷啟動是無服務器的主要限制。

在 serverless 上運行 express 是沒有用的,因為它運行一個節點服務器並監聽某個端口,這不是必需的。 Lambda 並不總是在運行時可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM