一千萬個為什麽

搜索

什麽是無服務器?



所有的雲供應商都在推銷他們的“無服務器”解決方案。這個承諾是無服務器將取代開發人員目前開發他們的軟件的方式,並且運營在生產中進行管理。

什麽是“無服務器”? 在哪裏可以了解更多信息,以及今天如何使用它?

轉載註明原文: 什麽是無服務器?

一共有 5 個回答:

維基百科有關無服務器計算的文章提供了一個體面的主題介紹:

無服務器計算也稱為功能即服務(FaaS),是一種雲計算代碼執行模型,在該模型中,雲提供程序根據需要完全管理函數的容器平臺作為服務(PaaS)的啟動和停止,以服務請求,並且通過對滿足請求所需的資源進行抽象度量而不是每個虛擬機每小時對請求進行計費。

這個想法是,開發者根本不需要關心服務器基礎設施。雲提供商管理物理服務器,使用的操作系統以及與運行服務器有關的所有傳統難題。

無服務器計算會改變您的體系結構,從而不必考慮機器功能的作用。 AWS Lambda 就是您想到的例子 - 您付費並運行功能,沒有提及下面運行什麽類型的物理基礎架構。還有一些競爭無服務器的主機,例如 Azure Functions (或者您可以簡單搜索如果你對這兩者都不感興趣)。

無服務器有很多優點(盡管在某些情況下,您確實需要以與以往不同的方式編寫,因為它是完全不同的體系結構):

    可擴展性本質上是免費的 - 因為您只是為了運行一項功能付費,雲提供商可以根據需要輕松地投入更多硬件來運行您的代碼。您還可以隨著需求的增長而擴大規模,而不是支付固定費率,無論您的應用程序是使用一次還是一百萬次。
  • 服務器軟件和硬件不再需要由開發人員進行管理 - 雲提供商可以處理該問題。如果你曾經在服務器上使用過類似Arch的東西,那麽你會知道消滅一個關鍵軟件包並破壞所有內容是多麽容易!

  • 它讓開發人員可以將精力集中在他們擅長的領域 - 代碼。大多數開發人員在服務器基礎架構編程方面可能都不會很好 - 無需服務器只會帶來一個問題。

Martin Fowler has a good overview:
https://martinfowler.com/articles/serverless.html

TL;DR
"Serverless" describes application development and architecture that designs applications in which the infrastructure is ephemeral, meaning that they tend to be container-based and can "come and go" based on a dynamic scaling mechanism. This prescribes the use of stateless architectures that depend on distributed technologies (such as key/value stores.)

'無服務器'與我們的空間中的許多事物一樣,正在成為一個超載的術語......但通常意味著“在功能上,我們的架構不依賴於服務器的配置或持續維護”

首先想到的是單頁JavaScript應用程序,它使用本地存儲,並存儲在諸如Amazon S#或Github Pages(或任何靜態網站 - 這些只是常見示例)之類的東西上。想象一下,像'todo'或'讓事情做完'式的應用程序完全在瀏覽器中運行。您的瀏覽器像S3一樣提供服務來下載代碼,並且您存儲的項目都存儲在瀏覽器的本地存儲中。沒有你為此維護的服務器。

第二種情況,並且稍微復雜一點(也是普遍使用“無服務器”的術語),它使用AWS Lambda這樣的服務。讓我通過介紹它解決的問題來解釋這一點:

在我的職業生涯中,很多次我都為一個客戶解決了一個業務問題,只用一些ruby代碼來執行定期提取,轉換和加載(通常寫為rake任務)。一旦解決,我通常會用cron自動化它。那麽問題就變成'我在哪裏托管這個每小時運行一次的東西?'對於一些客戶,我們會在他們現有的基礎設施中建立一個服務器。對於其他人,我們會設置一個EC2實例,盡管它在99%的時間裏處於閑置狀態。無論哪種情況,都有一臺服務器需要配置,修補,監控,更新等。

借助Amazon Lambda,我可以將這個耙子任務作為純粹的“功能”運行在他們的服務上。我甚至可以安排它。客戶不再需要這樣一個簡單的每小時一次的基礎設施。

“無服務器”還有一臺服務器,就像'雲'一樣,還有一臺電腦。在它之上只是一個抽象層次,需要你承擔一些環境責任。

所有偉大的答案已經。我正在閱讀博客文章 Thinking Serverless - HighScalability中的新方法如何滿足現代數據處理需求,在這裏我已經遇到了無服務器意味著什麽的優秀解釋:

“無服務器”這個短語並不意味著服務器不再涉及。   這僅僅意味著開發人員不再需要考慮那麽多   關於他們。計算資源可用作服務而無需使用   管理身體能力或限制。服務供應商   越來越承擔管理服務器,數據的責任   商店和其他基礎設施資源...走向無服務器讓   開發人員將重點從服務器級轉移到任務級。   無服務器解決方案讓開發人員專註於他們的應用或   系統需要通過消除後端的復雜性來完成   基礎設施。

而且,從我在構建無服務器基礎架構方面的個人經驗中學習更多:

  • 無服務器數據管道並不僅僅是實時的。可以通過AWS的CloudWatch警報機制構建高效的批處理無服務器管道,從而允許監控工具並引發(AWS)Lambda的警報進行計算。

例如:將文件存儲在AWS SQS隊列中。一旦隊列中的消息數量達到10,將事件發送到Lambda。

Beside simply explaining the definition of the term Serverless, the origins of the term and it’s history give some insight as well into its meaning. The concept originated with the JAWS framework by Austen Collins, which got later renamed as Serverless. I've learned of it first in AWS re:Invent 2015 session, which can be helped to date the concept. This is what actually coined the term Serverless, which then spread quickly to other cloud systems: