看完这篇你就知道什么是无服务器架构了
作者 | Systango,譯者 | 無明。策劃 | 小智
Gartner 最近的一份報告表明:到 2020 年,全球將有 20% 的企業部署無服務器架構。這說明無服務器架構不只是一個流行語,而是一種眾所周知的云計算趨勢,并且已經在軟件世界掀起一場革命。大型廠商(如亞馬遜、微軟和谷歌)已經在無服務器架構領域重資投入,追趕革命的浪潮。與其名字相反,無服務器架構實際上并沒有把服務器去掉。那么,究竟什么是無服務器架構?
1什么是無服務器架構?
無服務器架構是指應用程序使用第三方 Function 和服務,但不需要管理服務器。無服務器架構主要包含了兩個方面:
FaaS(Function as a Service,Function 即服務):包含服務器端業務邏輯的無狀態 Function。這些 Function 運行在獨立的容器里,基于事件驅動,并由第三方廠商托管,如 AWS Lambda 或者 Azure Functions。
BaaS(Backend as a Service,后端即服務):使用第三方服務(如 Firebase、Auth0)來達成目的。使用 BaaS 的應用程序通常是富客戶端應用程序,如 SPA 或移動 App。客戶端負責處理大部分的業務邏輯,其他部分則依賴外部服務,如認證、數據庫、用戶管理,等等。
無服務器架構包含了 BaaS 和 FaaS,不過這篇文章著重關注 FaaS。
2無服務器架構的特點
不需要管理服務器;
無狀態;
自動伸縮;
沒有運營成本;
成本由事件驅動;
處理第一個事件需要一些啟動時間;
因為運行時小,所以具有較高的安全性。
3無服務器的生命周期
下圖描述了一個 Function 的生命周期。
4無服務器應用程序架構示例
假設有一個簡單的線上汽車拍賣應用程序,用戶可以登錄并出價,拍賣時間結束時價高者得。
傳統上,架構里會包含一個部署了應用程序和前端的單體服務器。
上述架構采用的是瘦客戶端方式,所有的業務邏輯(如認證、回話管理、車輛管理等)都部署在服務器端。
那么,在一個無狀態的微服務架構中,這個應用程序又會是什么樣子?
原來的單體應用程序被拆分成了多個服務器端組件。
認證 Function:這是一個用于管理用戶認證(登錄)的 Function(Function,FaaS)。
車輛管理服務:一個處理與車輛相關操作的微服務,如列出車輛、查看車輛信息、比較車輛,等等。這個服務可以使用任意的語言或框架來開發,它與數據庫通信,并且獨立運行。
車輛出價 Function:這是另外一個 Function,也與數據庫通信,錄入用戶出價記錄。
API 網關:所有服務的入口點和反向代理。來自客戶端的請求會先到達網關,網關根據路由規則將請求重定向到特定的服務。
在將服務拆分成微服務或 FaaS 時,需要考慮到業務邏輯、負載、規模等方面的因素。
上述的例子描述了無服務器架構和基于無服務器架構設計微服務時的大致過程。
5無服務器架構與 PaaS
平臺即服務(Platform as a Service)是另一個不需要開發人員管理服務器(包括硬件和軟件)的架構莫斯。正因為如此,開發人員容易把無服務器架構和 PaaS 混為一談。接下來,我們來看一看它們之間的相似點和不同點。
相似點
開發人員不需要管理服務器。
開發人員只要關注應用程序代碼本身。
不同點
PaaS 提供了更為可控的部署方式,而無服務器的部署則更為嚴格。
無服務器架構可以自動伸縮,而 PaaS 的伸縮需要進行配置。
無服務器架構的成本是由事件驅動的,而 PaaS 是固定的。
PaaS 應用程序在部署之后會一直運行,并馬上開始處理請求,而無服務器需要等待第一個事件,具體取決于事件的發生頻率。
6用例
無服務器的應用應該不僅限于某個領域、業務或架構。在進行應用程序架構時,你需要考慮多個因素,這些因素同樣適用于無服務器架構。
成本——無服務器架構非常節約成本,具體取決于實際的負載。
服務器管理——無服務器架構可以極大地降低用于管理服務器的運營成本。
伸縮——無服務器架構可以自動伸縮。
響應時間——FaaS 需要一些初始化時間。如果負載很小(比如一個小時只有一個事件),每個請求都會經歷冷啟動,導致整體響應變慢。
更快的發布周期——因為這些 Function 都是很小的單位,發布周期就變得很短。
以下是一些常見的用例:
Web 應用程序;
批處理和調度;
移動和 IOT 后端;
聊天機器人。
7為什么要采用無服務器架構?
使用無服務器架構和 FaaS 有以下這些好處。
減少服務器管理成本;
減少運營成本;
自動伸縮;
比不間斷運行的服務更安全;
成本由請求或事件數來決定;
更簡單的打包和部署流程;
縮短發布周期;
開箱即用的監控。
8無服務器架構的限制
與其他任何一種技術架構一樣,無服務器架構也存在同樣的限制。
啟動延遲;
廠商鎖定,對服務器缺乏控制;
性能優化局限于代碼內部;
執行時間限制(AWS Lambda 的執行時間限制為 15 分鐘);
成本不可預測;
開發環境和生產環境不一樣;
測試和調試更為復雜。
9總結
無服務器架構是一種架構風格,通過 FaaS 將業務邏輯從長期運行的組件中移到臨時的 Function 里。它可以解決很多架構和運營問題,簡化開發者和運維人員的工作。
與其他解決方案一樣,無服務器架構并不是銀彈。它無法直接取代現有的組件,在決定是否要采用無服務器架構之前需要先分析一下自己的業務和技術需求,通盤考慮各種優點和缺點。
?原文鏈接
https://www.systango.com/blog/serverless-architecture-smart-choice/
有道無術,術可成;有術無道,止于術
歡迎大家關注Java之道公眾號
好文章,我在看??
總結
以上是生活随笔為你收集整理的看完这篇你就知道什么是无服务器架构了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 跟我极速尝鲜 Spring Boot 2
- 下一篇: NYOJ 970 Yougth's Ga