「無伺服器」並不意味著沒有伺服器,它代表了一種責任的轉移——從開發者轉移到雲端供應商,由他們來處理伺服器管理的複雜性。透過抽象化這些複雜性,無伺服器架構讓開發者能夠專注於構建強大的應用程式。
雲端運算是一個快速發展的領域。各種創新應用隨著技術的演進不斷推陳出新,其中也有不少獲得了企業諸多的關注與採用。在這些廣泛採用的創新中,無伺服器運算架構已成為一個改變遊戲規則的存在。
雲端運算的快速演進
但「無伺服器」到底是什麼意思?與名稱可能暗示的相反,「無伺服器」並不意味著沒有伺服器。相反地,它代表了一種責任的轉移——從開發者轉移到雲端供應商,由他們來處理伺服器管理的複雜性。透過抽象化這些複雜性,無伺服器架構讓開發者能夠專注於構建強大的應用程式。
無伺服器架構源於傳統基於伺服器的模型,但它徹底改變了軟體開發團隊對應用程式部署和擴展的思考方式。無伺服器提供了一種獨特的成本效益、可擴展性和開發者便利性的結合,難怪無伺服器對軟體組織和開發者來說是一個有吸引力的選擇。
這篇文章將深入探討無伺服器運算架構的世界,了解它的運作方式,考慮其優勢和局限性,並談談如何開始使用無伺服器。 在開始探索之前,首先比較無伺服器架構與傳統的伺服器架構。
與傳統架構的比較
傳統基於伺服器的架構圍繞著手動管理和操作伺服器,在這種方法中,開發者必須積極參與解決應用程式託管和工作負載管理的問題。這種傳統架構需要持續地(通常是人為主導的)監控和管理,以確保伺服器環境安全、高效且能夠處理負載需求。
將這種歷史方法與無伺服器架構進行對比時,可以清楚地看到雲原生運算的進步帶來的顯著優勢。
維護與管理
在傳統的伺服器架構中,管理整個伺服器生命週期的負擔落在企業身上,特別是工程師身上。這些管理責任包括:
‧配置硬體,例如實體伺服器、虛擬機器或API閘道。
‧處理操作系統和軟體更新
‧應用安全修補程式
無伺服器架構將這些責任轉移給雲端平台供應商(例如Google Cloud Platform、Amazon Web Services或Akamai),開發者不再需要關注這些問題,他們可以專注於編寫程式碼。
擴展與靈活性
傳統的伺服器架構通常需要手動擴展。手動擴展要求組織預測需求,這可能意味著預先配置資源以應對增加的負載,也可能意味著在過度負載導致可用性問題後快速配置更多資源。
無論哪種方式,結果對企業來說都不是最理想的。過度配置資源會導致浪費和成本高昂的未充分利用,而配置不足則會導致性能不佳和用戶體驗下降。
相比之下,無伺服器運算提供自動擴展。雲端供應商已經實施了自動化措施,能夠即時調整資源以匹配需求。這確保了資源的最佳使用,而無需手動干預。對於具有波動工作負載或不一致負載需求的應用程式,無伺服器的靈活性帶來了顯著的優勢。
成本影響
傳統伺服器的定價結構大多是固定的。企業為他們註冊的伺服器付費,無論這些伺服器是否被充分利用。要降低傳統伺服器的成本,用戶需要監控資源使用情況,以確保他們沒有為不必要的資源付費。
另一方面,無伺服器模型提供了一種「按使用付費」的方法。當應用程式沒有用戶活動時,服務應用程式的硬體會停止運轉。計費基於實際資源使用情況,這可以顯著降低成本。
部署速度與敏捷性
將應用程式部署到傳統的伺服器架構可能是一個繁瑣的過程。設置和配置伺服器是一項複雜的任務,許多專注於程式碼的開發者可能沒有相關的專業知識來完成。相反地,他們轉向無伺服器架構,這簡化了部署並可以顯著加速開發和部署週期。
營運開銷
管理傳統伺服器可能需要大量的營運開銷。伺服器需要監控可用性、安全性和合規性,而許多企業沒有額外的資源來處理這些問題。無伺服器架構將這些負擔轉移給雲端服務供應商。透過減少這些營運挑戰,無伺服器架構使企業能夠專注於創新和增長。
傳統的基於伺服器的架構提供了控制感和熟悉感,但這可能需要企業不願意或無法投入的資源和專業知識。無伺服器運算的方法帶來許多企業重視的效率和敏捷性,透過過渡到無伺服器架構,組織可以減少營運任務,並讓開發者專注於創造價值和促進創新。
無伺服器架構的運作方式
為了更好地理解無伺服器運算帶來的效率和多功能性,讓我們專注於其內部運作。接下來,將探討無伺服器架構的關鍵方面和組件。
功能即服務(FaaS)
無伺服器架構的一個常見用途是「功能即服務(FaaS)」,由大多數雲端供應商提供,例如Google Cloud Functions、Microsoft Azure Functions、Akamai EdgeWorkers或Amazon的AWS Lambda函數。FaaS無伺服器技術允許開發者編寫及部署單一功能(一個小型、單一用途的程式碼塊),該功能在特定事件觸發時按需執行。該功能被部署到無伺服器架構中,等待某些事件觸發。
事件觸發器幾乎可以是任何東西——從HTTP請求到網頁表單提交,再到接收SMS消息。在FaaS模型中,雲端供應商託管和管理功能。開發者只須編寫功能程式碼並配置運行時觸發器,從而導致功能調用。
在FaaS使用案例中,資源使用是最小的,這使得FaaS對企業非常有吸引力。運算資源僅在功能被調用和執行時使用(在許多情況下,可能只有幾秒鐘)。除了這些最小使用的運算資源外,還使用少量的雲端儲存來儲存功能程式碼。
由於FaaS是使用無伺服器運算架構的最知名方式,「無伺服器架構」和「無伺服器功能」這兩個術語實際上已經成為同義詞。
事件驅動的執行
無伺服器架構本質上是事件驅動的。無伺服器功能旨在響應特定觸發器或事件隊列中的活動。這意味著它們在事件發生之前保持閒置狀態,一旦事件發生,它們就會立即執行。執行功能所需的運算資源僅在必要時使用,這比傳統的伺服器模型更高效。在傳統模型中,伺服器不斷運行,即使沒有對其運算資源的需求。
幕後運作
當調用無伺服器功能時,雲端供應商會動態分配資源來執行該功能,管理以下問題:
‧擴展資源以滿足需求
‧負載平衡
‧容錯能力
雲端供應商可能使用虛擬機器、容器化和容器編排技術(例如Docker和Kubernetes)或其他資源。然而,所有這些與基礎設施相關的細節都在無伺服器框架中被抽象化了。
開發者只須專注於他們的編碼和調試工作流程。通常,他們的應用程式碼不需要太多的修改即可適應無伺服器執行。大多數主要編程框架和語言的開源庫(包括Node.js、Python、JavaScript、WebAssembly以及Ruby),使得透過無伺服器部署變得簡單。DevOps團隊可以使用他們的CI/CD管道來部署無伺服器功能程式碼的更新版本。
典型使用案例
無伺服器架構有各種應用,常見的使用案例包括:
‧促進API或後端即服務(BaaS)
‧微服務
‧任務自動化
‧處理即時資料串流
‧網頁應用程式(前端和後端網頁應用程式)
‧處理零星或不可預測的工作負載
自動擴展的能力和僅為使用的資源付費的特性,使得無伺服器架構對初創企業和大型企業都很有吸引力。
無伺服器架構的優勢
剛剛已經提到無伺服器運算架構的許多優勢,總結一下,無伺服器架構提供了:
‧成本效益:按使用付費的定價模型(只須為無伺服器功能實際消耗的資源付費)對許多組織來說很有吸引力。
‧可擴展性和靈活性:無伺服器架構自動調整運算資源以匹配需求,在高峰時段擴展,在低使用時段縮減。這種自動擴展和靈活性帶來了穩定的性能,無論使用情況如何波動,都無需手動干預。
‧提高開發者生產力:軟體開發者不再需要處理基礎設施相關的管理任務。他們可以專注於編寫程式碼和開發新功能,這提高了他們的生產力,加速開發,並縮短上市時間。
‧減少營運開銷:無伺服器架構將營運問題(例如伺服器維護、修補程式和安全)轉移給第三方服務供應商。組織可以將時間、人力資源和專業知識投入到更關鍵的業務事項上。
無伺服器運算與邊緣運算的優勢
邊緣運算是一種分佈式運算方法,將運算和資料儲存更靠近需要的位置(通常在地理上靠近終端用戶)。邊緣運算旨在提高響應時間並節省頻寬。邊緣運算可以使用無伺服器環境,在靠近終端用戶的資源上執行無伺服器功能。
將邊緣運算與無伺服器運算架構(例如Akamai EdgeWorkers)結合,可以更高效地處理高容量的即時資料處理,並提供增強的用戶體驗。
無伺服器架構的局限性
儘管無伺服器運算架構提供了許多優勢,組織也應注意其局限性,包括:
‧冷啟動問題:「冷啟動」問題指的是在功能一段時間不活動後調用無伺服器功能時所經歷的延遲,通常是由於初始化執行功能所需的運算資源。儘管許多無伺服器應用程式可能不會明顯受到影響,但冷啟動可能會影響需要極快響應時間的功能的性能。
‧供應商鎖定:採用無伺服器架構,通常意味著將自己綁定到特定雲端供應商的生態系統。轉移到不同的供應商可能需要對應用程式進行更改,從而導致可移植性挑戰。
‧有限的控制和自定義:在無伺服器運算中,由於雲端供應商管理你的底層基礎設施,你對環境和硬體的控制較少。對於需要特定配置或自定義的組織或應用程式來說,這可能是一個缺點。
‧安全問題:雲端供應商通常提供非常強大的安全性。然而,無伺服器運算中的共享責任模型需要清楚地了解哪些安全方面由無伺服器供應商管理,哪些方面由自己作為無伺服器客戶管理。
無伺服器架構提供許多優勢,但組織必須權衡這些優勢與潛在的局限性,例如冷啟動、供應商鎖定、有限的控制和安全問題。了解這些方面,將幫助組織做出關於採用無伺服器解決方案的明智決策。
開始使用邊緣運算解決方案
當決定無伺服器方法符合自身的業務需求時,是時候考慮無伺服器平台(如Akamai)如何簡化入門過程了。踏上無伺服器之旅,可能看起來令人望而生畏,但採用合適的平台將能快速上手並運行。
Akamai的無伺服器運算圍繞Akamai的邊緣運算解決方案展開。允許在邊緣運算平台上運行無伺服器功能,該平台將運算和儲存地理上更靠近你的客戶,這樣可以優化無伺服器應用程式的交付,以實現低延遲、更快的響應時間、改進的性能和增強的用戶體驗。
Akamai EdgeWorkers讓開發者專注於編寫業務邏輯和程式碼,而Akamai則在其全球分佈的無伺服器網路上處理功能的執行。
如此一來,終端用戶可享受位於最靠近他們的無伺服器運算服務,組織獲得自動擴展、靈活性、更快的冷啟動以及運行這一切的成本效益平台。
結語
無伺服器運算架構是雲端運算的一個方面,它徹底改變了一般對應用程式開發和部署的思考方式。透過抽象化基礎設施管理的複雜性,無伺服器方法提供了一種簡單且可擴展的解決方案,以按使用付費的定價模型啟動基礎設施。開發者可以專注於編寫程式碼,而組織則避免了管理伺服器的營運開銷。
<本文作者:王明輝現為Akamai大中華區資深技術顧問>