當前位置:
首頁 > 新聞 > 一文了解什麼是無伺服器架構及其4大主要弊端

一文了解什麼是無伺服器架構及其4大主要弊端

背景介紹

2009年,業界提出DevOps理念。維基百科上給出的定義為「DevOps是軟體開發、運維和質量保證三個部門之間的溝通、協作和集成所採用的流程、方法和體系的一個集合。」

2011年,Forrester發布報告「擴大DevOps至NoOps」,預測在不久的將來,一些企業將越來越多的依賴於雲,開發者將能更加自動地進行程序構建(building)、測試與部署等運維操作,最終達到NoOps。

雖然該術語表示這些公司將不再需要運維人員,但是報告本意談論的卻是開發者將使用更加自動化的工具,而這些工具需要更少的人工干預。隨後PaaS被視為是實現NoOps的最佳方式。

2014年,雲廠商AWS推出了「無伺服器」的範式服務。

最初,「無伺服器」意在幫助開發者擺脫運行後端應用程序所需伺服器設備的設置和管理工作。這項技術的目標並不是為了實現真正意義上的「無伺服器」,而是指由第三方供應商負責後端基礎結構的維護,以服務的方式為開發者提供所需功能,例如資料庫、消息以及身份驗證等。這種服務基礎結構通常可以叫做後端即服務(Backend-as-a-Service,BaaS),或移動後端即服務(MobileBackend-as-a-service,MBaaS)。

但Amazon在2014年發布的AWS Lambda讓「無伺服器」這一範式提高到一個全新的層面,為雲中運行的應用程序提供了一種全新的系統體系結構。至此再也不需要在伺服器上持續運行進程以等待HTTP請求或API調用,而是可以通過某種事件機制觸發代碼的執行,通常這隻需要在AWS的某台伺服器上運行一個簡單的功能。一些人將這種模式叫做功能即服務(Function-as-a-Service,FaaS)。

無伺服器架構(又稱FaaS)是指企業或個人無需購買、租賃或配置用於支持後端代碼運行的物理或者虛擬伺服器。無伺服器解決方案通常由Web伺服器、FaaS層、安全令牌服務(STS)、用戶驗證以及資料庫等要素組成。

無伺服器代碼可以與傳統伺服器風格的代碼(例如微服務)結合使用。例如,我們可以將一款Web應用中的部分代碼編寫成微服務形式,而另一部分則可以編寫成無伺服器代碼形式。或者,在編寫中完全不需要任何伺服器配置要素的應用程序也可以實現無伺服器化。

FaaS提供了一個平台,允許開發人員能夠響應事件執行代碼,而無需構建和維護複雜的基礎架構,只需要經由第三方應用程序或服務來管理伺服器端的邏輯和狀態。

無伺服器計算的4大弊端

1. 第三方API系統導致的問題

供應商控制、多租戶問題、供應商鎖定以及安全缺陷等,都有可能是由第三方API所導致的問題。在實施API時放棄系統控制可能會導致系統宕機、強迫性API升級、功能缺失、意外限制以及成本變更等後果。此外,多租戶問題也存在於其他雲計算框架之中。

Salesforce(PaaS)就因其多租戶雲結構而施加了部分監管限制,開發人員在使用Salesforce時必須要儘可能避免相關問題。具體而言,多租戶解決方案往往會在安全性、穩定性以及性能層面存在問題。

2. 操作工具缺失

開發人員依賴供應商為其提供調試與監控工具。一般來說,調試分散式系統的任務非常困難,通常需要訪問大量的相關指標才能確定產生問題的根本原因。

3. 架構的複雜性

開發人員通常需要花費大量時間來評估、實施和測試具體功能,才能最終決定這些功能應該如何進行細分。一次應用程序調用操作中所涉及的功能數量應該保持平衡。管理太多功能無疑將使問題變得更加複雜化,而忽略粒度將最終導致微服務架構變為「迷你整體」架構。

目前,Lambda(亞馬遜網路服務AWS提供的一種計算服務,其能夠以一種大規模並行方式執行代碼,以響應事件)已經對用戶能夠在所有lambda表達式上運行的並發執行總數作出了限制。其中的問題在於,這個限制是適用於整體AWS帳戶的。一些組織會使用相同的AWS帳戶進行生產及測試。這就意味著,如果組織中的某位工作人員著手進行一項新的負載測試,並嘗試執行1000個並發Lambda函數,那麼生產應用程序將立即遭遇拒絕服務(DoS)狀況。

4. 實施的困難性

集成測試無伺服器應用程序的難度非常高。與其他體系機構相比,無伺服器FaaS(即每項功能)的集成單元要小得多,因此我們需要將大量單元加以集成,方能正常完成測試。此外,也存在一些與部署、版本控制和打包相關的問題。大家可能需要為整體邏輯應用程序中的每項功能單獨部署一項對應的FaaS組件。這也就意味著,您不能以原子性方式對一組功能進行統一部署,而由於不存在版本化應用程序的概念,所以原子回滾(atomic rollback)也無法實現。這樣的話,您可能需要關閉任何觸發相應功能的事件源、部署整體功能組,然後再重新啟動事件源。

總結

無伺服器架構是架構領域出現的一種激動人心的新變化,隨著開發人員積極採用 AWS Lambda 等計算服務,這種架構會更為迅速地發展起來。如今,一些無伺服器應用程序支持成千上萬個用戶,並執行複雜的操作,包括處理繁重任務,比如視頻編輯和數據處理。在許多情況下,無伺服器架構可獲得比傳統模式更好的效果,而且實施起來成本更低、速度更快。但是對於上文所述的有關這種架構的弊端也必須予以高度重視,並努力尋找解決方案應對上述弊端,以推動無伺服器架構更加安全、穩定的發展。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

如何利用PowerShell診斷腳本執行命令並繞過AppLocker
MacOS中惡意的Installer Plugin利用

TAG:嘶吼RoarTalk |