隨着雲、大數據、容器等技術的成熟,無服務器架構(Serverless)正在成爲軟件架構領域的熱門話題。web
通常來講,Serverless架構分爲 Backend as a Service(BaaS,後端即服務) 和 Functions as a Service(FaaS,函數即服務) 兩種技術。Baas的應用架構由大量第三方雲服務器和API組成的,應用中關於服務器的邏輯和狀態都由服務提供方來管理。FaaS指開發者能夠直接將服務業務邏輯代碼部署,運行在第三方提供的無狀態計算容器中,開發者只須要編寫業務代碼便可,無需關注服務器,而且代碼的執行它是由事件觸發的。其中AWS Lambda是目前最佳的FaaS實現之一。數據庫
Serverless架構受到普遍歡迎,主要是由於它有如下特色:後端
(1)不須要管理服務:不須要提供或維護任何的服務器,不須要安裝任何的軟件或運行時。安全
(2)彈性擴縮:應用程序擴縮能自動完成或是經過調整其資源使用量來調整容量,而不是經過增減服務器的數量。服務器
(3)高可用:無服務器應用程序內置高可用和容錯。無需考慮高可用,運行應用的服務默認提供高可用。架構
(4)沒有閒置損耗:不須要對計算和存儲之類的服務預留容量。若是代碼沒有運行,就不會收費。less
構建無服務器應用程序意味着開發者能夠專一在產品代碼上,而無須管理和操做雲端或本地的服務器或運行時。所以,對於企業來講,應用Serverless架構具備明顯的優點:函數
(1)下降公司啓動成本、運營成本微服務
一般狀況下,創業公司啓動web服務須要準備:版本管理服務器、持續集成服務器、測試服務器、應用版本管理倉庫、數據庫服務器等等IT基礎設施。採用雲服務,創業公司不須要本身去搭建服務器,所以會有更多的時間去開發業務功能。而採用函數計算的serverless與雲服務器最大的區別是:雲服務器須要一直運行,好比說月費或年費要多少錢租,可是serverless是按需計費的,若是有請求到來的時候,才運行函數,不然的話,是不須要錢的。測試
(2)下降開發成本,實現快速上線
serverless會提供一系列的配套服務,而且會提供一系列的函數計算模板,咱們只須要寫好咱們的配置便可,那麼這一系列的東西均可以自動,高效的完成任務。serverless內部還有至關於有內建自動化部署功能,每次咱們寫完業務代碼後,咱們只須要運行下便可,很輕鬆的實現快速上線。好比,在AWS Lambda 函數計算裏面,函數通常在上傳後幾秒鐘內,就能作好調用準備。
(3)系統安全性更高
要保持服務器一直運行不是件容易的事情,而且還須要考慮黑客不一樣類型的攻擊,可是有serverless後,咱們不須要考慮這些問題了,這些問題第三方供應商已經會幫我解決這些問題的。
(4)能適應微服務架構、擴展能力強
對於傳統應用來講,要應對更多的請求的方式,就是部署更多的實例。然而,這個時候每每已經來不及了。而對於 FaaS 來講,咱們並不須要這麼作,FaaS 會自動的擴展。它能夠在須要時儘量多地啓動實例副本,而不會發生冗長的部署和配置延遲。
以AWS Lambda爲案例,Lambda能讓咱們不用思考任何服務器,也就是說,不用咱們處理服務器上的部署,服務器的容量和服務器的擴展和失敗容錯,還有服務器上選擇什麼OS操做系統,語言的更新,日誌等等問題。你的應用程序只須要和多個第三方的API或服務打交道,也能夠自我建立一個無服務器的API。
基於以上優勢,無服務架構獲得了開發人員的積極響應。在以資源有效的方式交付應用程序時,它提供了更多的選項和可能性。不少大型的企業,好比Netflix,已經在探索無服務器計算,但願解放開發人員的時間。隨着雲計算的興起,雲應用正在進入一個無服務器的世界,這將對軟件和應用的建立和發佈帶來巨大的空間。
11月13日下午社羣裏請了一個大神分享AWS 的無服務架構話題,到時候能夠看看。我會記錄一些要點和截圖,後續再分享出來。