為什麼我們要使用無伺服器架構

Docker精選發表於2019-01-18

【譯者的話】這篇文章介紹了無伺服器架構與傳統架構相比的優勢,與此同時,也指出了無伺服器架構並非適用於所有的應用,但瞭解這種架構模式對於開發者或者企業來說都是大有裨益的。

【3 天燒腦式基於Docker的CI/CD實戰訓練營 | 北京站】本次培訓圍繞基於Docker的CI/CD實戰展開,具體內容包括:持續整合與持續交付(CI/CD)概覽;持續整合系統介紹;客戶端與服務端的 CI/CD 實踐;開發流程中引入 CI、CD;Gitlab 和 CI、CD 工具;Gitlab CI、Drone 的使用以及實踐經驗分享。

無伺服器架構並不適用於所有的app,但這篇文章將幫助您瞭解,如果使用這種架構,將會有哪些是值得您期待的。

如今談論無伺服器架構,大多數都是關注其與function-as-service的整合、如何編排訪問請求,以及基於無伺服器架構的故障排查工具等等。然而,沒有多少精力關注在為什麼選擇無伺服器架構,而不是傳統架構背後的深層次原因,這是為什麼呢?

降低開發成本

使用無伺服器架構(serverless)的首要原因,正如其名字所表明的那樣,將伺服器從我們的關注項中移除。我們不得不承認,並沒有真正的無伺服器(無伺服器僅僅只是對託管在雲端的伺服器的另一種說法)的應用,選擇一種無伺服器架構的實現,獲得的好處只是不必開發伺服器端程式碼罷了。

在傳統的客戶端 – 伺服器應用程式中,基於資料的所有API和端點都需要由開發人員實現。開發方式包括通過使用像Rails這樣的框架自己編寫程式碼,或者通過利用可將底層呼叫轉換為可呼叫的REST API的第三方工具來實現。

使用無伺服器架構,您可以將大量的後端技術工作交給第三方,從而無需關注將Web應用推向市場的複雜工作。這顯著降低了開發成本。您的開發人員可以專注於使用者介面和使用者體驗,您的應用最具特色的地方將會更具有吸引力。

減少DevOps和維護成本

涉及到應用的開發和託管Web應用的直接成本很多。其中包括開發人員薪酬,託管費用,域名註冊費用,資料傳輸費用等。此外,對於web應用程式,您通常需要保持伺服器不間斷執行,以處理一天中任何時間的訪問請求。這意味著對於訪問頻率低的應用程式,每天只能執行一個小時的計算時間,您仍然需要為您的應用程式可用但尚未使用的其他二十三小時付費。

使用像AWS Lambda這樣的功能即服務實用程式,您可以通過確保只有在應用程式處於活動狀態時付費,才能進一步降低成本。功能即服務執行在按執行次數計費的模式,所以您只需要在程式碼實際被呼叫時支付託管和計算資源。許多Web應用程式通常是空閒的,因此可以顯著節省成本。

雖然您可以使用Docker等產品在Heroku上託管容器來獲得類似的收益,但您將無法獲得功能即服務的無伺服器提供商允許的純粹級別,該伺服器只提供一個例項, 實際上呼叫了一個單獨的函式。通過確保您的程式碼僅在實際需要時處於活動狀態,這種間歇性安裝和解除安裝容器可以減少託管和資源使用成本。

減少面市時間

除了減少程式碼量和運營成本外,還可以減少交付時間。通過犧牲硬體和伺服器端的靈活性,您可以通過將複雜性移到客戶端來減少開發應用程式所需的時間,將您的努力專注到程式碼庫中的單一語言中。

此外,您不需要找到提供商,執行起來伺服器,配置Web伺服器軟體,並讓您的應用程式在機器上執行,最終會是一個更簡單的問題。您還可以獲得更多的主機選擇,因為無伺服器應用程式只需要一個可以為其終端使用者提供檔案的CDN,而不是在處理來自網路使用者的請求,執行程式語言的執行時的特定Web伺服器。

最後,通過將您的應用程式的伺服器端交給無伺服器的提供商,您可以通過允許第三方管理應用的安全來提升安全性。通過這種方式,可以減少對web伺服器、資料庫伺服器的安全防護,以及在傳統客戶端-伺服器應用程式中至關重要的任何其他後端安全性問題所需的工作。

結論

雖然許多應用程式由於特定的需求或者某些其他原因而無法在無伺服器環境中執行,但與其傳統的客戶端/伺服器應用相比,支援無伺服器架構的應用程式具有許多優勢。通過使用無伺服器的提供程式,您可以減少所需的程式碼量,讓第三方基於您的資料來源構建API。

您還可以通過允許您的程式碼以更間歇的方式執行,僅在需要時才啟動(和終止)例項,從而降低運營成本。

基於這兩個好處,以及其他尚未被髮掘的優勢,您可以看到產品上市時間縮短,因為您可以專注於外觀、感覺、以及您的應用程式基本的互動行為。雖然無伺服器架構可能不適合您,但對於越來越多的公司來說,這是一個可行且明智的選擇。

原文連結:Why Go Serverless? (翻譯:付輝)

相關文章