運用無伺服器架構
目前無伺服器計算,也被稱作無伺服器架構,或無伺服器,在計算領域是很熱的話題。亞馬遜,谷歌和微軟(雲端計算的三巨頭)都在無伺服器架構領域做了大量投資,以提高對各類業務服務的持續整合能力。無伺服器架構,跟普通的程式設計和網路書一樣,日漸成為書架上常見的的主題。
不過,即使你之前接觸過無伺服器架構,還是要再花些時間仔細想想,以正確理解它的概念。許多人想知道無伺服器架構是什麼,以及它目前有哪些最佳實踐。
什麼是無伺服器架構?
跟許多革命性技術趨勢一樣,無伺服器架構很難用簡要的一兩句話概括。它是一個正變得日益重要,並且在未來的雲端計算,特別是企業系統,會扮演重要角色的技術。
無伺服器架構是雲服務提供商動態管理伺服器資源分配的雲端計算技術。當某個條件或事件觸發時,業務程序會被隔離執行。而執行業務程序需要的資源通常會由雲服務商管理。通過將多樣的觸發器與第三方雲服務、客戶端邏輯和呼叫雲服務的能力整合起來,無伺服器架構可交付通常我們稱為“函式即服務”(FaaS)。
開發者為何使用無伺服器架構?
開發者採用無伺服器架構有幾個原因。但事實上,一些場景下使用傳統伺服器方式會有更好的效果。
不需要關心維護工作
傳統伺服器驅動的方式一直有本質上的業務問題和挑戰。例如,應用和執行環境所在的遠端伺服器需要維護。維護工作包括應用補丁、安全更新和儘快糾正影響可用性的任何問題。而如果使用無伺服器架構,你只需要將這些工作交給雲服務商。所有的雲服務商目前都提供大量的冗餘或其它措施,來保證極高的可用率。
成本
對許多業務來說,無伺服器架構最大的賣點是成本。與租用物理機和長期維護它們相比,無伺服器架構非常節省。事實上,無伺服器技術採用了與傳統伺服器架構完全不同的計費方式。
如果租用物理機,你要為相應配置的伺服器及其可用資源的佔用買單。 相反的,無伺服器提供商是基於執行次數收費,即按資源計費。雲服務商會按你選的套餐分配一定的時間。如果你要做更多執行,那段時間裡可使用的記憶體也是可配的。每毫秒需求的記憶體越多,套餐也就越貴。
環境
無伺服器雲的配置很簡單,配置多個不同環境跟配置一個一樣容易。因為無伺服器計算以每次執行為基礎,在不同架構下使用不同執行呼叫就很容易。這也意味著你完全不需要擔心不同環境的配置和狀態監控。
缺點有什麼?
沒有一種技術是完美的。當然會有一些條件和場景下,傳統伺服器架構會比無伺服器方案效果更好。
網路
在網路應用領域,無伺服器架構有一個缺陷——即無伺服器函式一般只能通過私有API來訪問,那麼就需要配置API閘道器。如果是無伺服器環境,你不能通過普通的IP訪問到這些服務。對於需要傳統網路能力的應用,傳統伺服器架構無疑是正確的選擇。
超時限制
無伺服器架構中的超時限制指的是你可以執行函式的時長。大部分無伺服器架構提供商給的最大時長是300秒。任何需要執行更久或可能執行更久的應用都不適合使用該架構。
使用場景
UI驅動的應用
想象一個連線線上零售商的電商應用,例如一個衣店。如果使用傳統伺服器架構,使用者要使用其聯網裝置,連到該商店的伺服器上,然後再訪問部署在上面的資料庫。該資料庫會包含業務和產品等相關的所有信息。部署在伺服器上的應用,會提供給使用者一個訪問伺服器和下單的使用介面。
如果使用無伺服器架構,結構會變得很不同。購買和搜尋功能可被API閘道器分開來訪問隔離的不同的函式,而不是由使用者訪問衣店的物理伺服器。
APIs
無伺服器計算的一個簡單應用是配置給單頁應用或其它服務提供資料的REST APIs.
REST APIs一般不難建立。往往你只需使用簡單的web框架,將資料轉換為你需求格式(一般是JSON)的庫和提供後端資料訪問的膠水程式碼。而如果使用無伺服器架構,開發者只需關注API程式碼的編寫和部署,而非其他。
在REST API裡一般要人工配置的功能,如自動擴容以滿足業務需求,在無伺服器架構下可以被自動化地完成。而且,已成為雲端計算特徵的按資源付費模式,意味著幾乎接近與無部署的最小的API獲取成本。
最佳實踐
像其它任何技術應用,當你採用一些最佳實踐時,才能從無伺服器架構中獲得最大的收益。以下是當考慮怎樣設計和實現無伺服器架構時,你應當瞭解的忠告。
1、使用一個計算服務,以實現按需部署。成為真正的無服務,你要確保你選的雲服務提供商有可實現你目標的計算服務。只要你必須依賴物理機、虛擬機器或你自己建立的容器,你就與無伺服器架構背道而馳。
2、編寫無狀態和單一目的的函式。當你為無伺服器架構編寫函式時,請確保每個函式服務於單一的目的,並且正確的實現它。許多無伺服器配置採用不同的函式以組成微服務。
3、基於PUSH和事件驅動的流水線。如果你要執行更復雜的計算任務,可建立事件驅動和基於PUSH的流水線,這樣不同服務可輕易的訪問彼此。
無伺服器架構使我們窺見了雲端計算未來的樣子。現在雲上有大量服務,儲存和能力,無伺服器計算的發展具有無限的可能性。
原文連結:ofollow,noindex" target="_blank">https://dzone.com/articles/lev ... cture (翻譯:郭小波 )