【譯者的話】這篇文章介紹了無服務器架構與傳統架構相比的優點,與此同時,也指出了無服務器架構並不是適用於全部的應用,但瞭解這種架構模式對於開發者或者企業來講都是大有裨益的。web
無服務器架構並不適用於全部的app,但這篇文章將幫助您瞭解,若是使用這種架構,將會有哪些是值得您期待的。編程
現在談論無服務器架構,大多數都是關注其與function-as-service的集成、如何編排訪問請求,以及基於無服務器架構的故障排查工具等等。然而,沒有多少精力關注在爲何選擇無服務器架構,而不是傳統架構背後的深層次緣由,這是爲何呢?後端
使用無服務器架構(serverless)的首要緣由,正如其名字所代表的那樣,將服務器從咱們的關注項中移除。咱們不得不認可,並無真正的無服務器(無服務器僅僅只是對託管在雲端的服務器的另外一種說法)的應用,選擇一種無服務器架構的實現,得到的好處只是沒必要開發服務器端代碼罷了。安全
在傳統的客戶端 - 服務器應用程序中,基於數據的全部API和端點都須要由開發人員實現。開發方式包括經過使用像Rails這樣的框架本身編寫代碼,或者經過利用可將底層調用轉換爲可調用的REST API的第三方工具來實現。服務器
使用無服務器架構,您能夠將大量的後端技術工做交給第三方,從而無需關注將Web應用推向市場的複雜工做。這顯着下降了開發成本。您的開發人員能夠專一於用戶界面和用戶體驗,您的應用最具特點的地方將會更具備吸引力。網絡
涉及到應用的開發和託管Web應用的直接成本不少。其中包括開發人員薪酬,託管費用,域名註冊費用,數據傳輸費用等。此外,對於web應用程序,您一般須要保持服務器不間斷運行,以處理一天中任什麼時候間的訪問請求。這意味着對於訪問頻率低的應用程序,天天只能運行一個小時的計算時間,您仍然須要爲您的應用程序可用但還沒有使用的其餘二十三小時付費。架構
使用像AWS Lambda這樣的功能即服務實用程序,您能夠經過確保只有在應用程序處於活動狀態時付費,才能進一步下降成本。功能即服務運行在按執行次數計費的模式,因此您只須要在代碼實際被調用時支付託管和計算資源。許多Web應用程序一般是空閒的,所以能夠顯著節省成本。app
雖然您可使用Docker等產品在Heroku上託管容器來得到相似的收益,但您將沒法得到功能即服務的無服務器提供商容許的純粹級別,該服務器只提供一個實例, 實際上調用了一個單獨的函數。經過確保您的代碼僅在實際須要時處於活動狀態,這種間歇性安裝和卸載容器能夠減小託管和資源使用成本。框架
除了減小代碼量和運營成本外,還能夠減小交付時間。經過犧牲硬件和服務器端的靈活性,您能夠經過將複雜性移到客戶端來減小開發應用程序所需的時間,將您的努力專一到代碼庫中的單一語言中。
此外,您不須要找到提供商,運行起來服務器,配置Web服務器軟件,並讓您的應用程序在機器上運行,最終會是一個更簡單的問題。您還能夠得到更多的主機選擇,由於無服務器應用程序只須要一個能夠爲其終端用戶提供文件的CDN,而不是在處理來自網絡用戶的請求,運行編程語言的運行時的特定Web服務器。
最後,經過將您的應用程序的服務器端交給無服務器的提供商,您能夠經過容許第三方管理應用的安全來提高安全性。經過這種方式,能夠減小對web服務器、數據庫服務器的安全防禦,以及在傳統客戶端-服務器應用程序中相當重要的任何其餘後端安全性問題所需的工做。
雖然許多應用程序因爲特定的需求或者某些其餘緣由而沒法在無服務器環境中運行,但與其傳統的客戶端/服務器應用相比,支持無服務器架構的應用程序具備許多優點。經過使用無服務器的提供程序,您能夠減小所需的代碼量,讓第三方基於您的數據源構建API。
您還能夠經過容許您的代碼以更間歇的方式運行,僅在須要時才啓動(和終止)實例,從而下降運營成本。
基於這兩個好處,以及其餘還沒有被髮掘的優點,您能夠看到產品上市時間縮短,由於您能夠專一於外觀、感受、以及您的應用程序基本的交互行爲。雖然無服務器架構可能不適合您,但對於愈來愈多的公司來講,這是一個可行且明智的選擇。
原文連接:Why Go Serverless? (翻譯:付輝)