譯者 | 崔皓
策劃 | 云昭
應用Serverless會面臨許多棘手的難題,本文提供一份實用指南,告訴你如何采用Serverless架構,解決Serverless架構中的實際挑戰,有哪些合適的方案并討論Serverless如何實現響應式事件驅動架構。文章沒有提到云提供商的Serverless服務,僅在示例中有所提及(AWS 參考)。
Serverless計算模型已達到了發展規律周期的“早期采用者”階段,并且正在快速進入“早期多數”階段。盡管Serverless的發展迅速驚人,但企業在采用Serverless將其應用到技術和架構,從而構建高效的 IT 生態系統方面確缺乏戰略實踐。本文試圖為如何使用Serverless架構提供簡化的決策指南,但沒有對FaaS、BaaS和云服務提供商 (CSP) 提供的其他服務(例如無服務器數據庫、API網關或邊緣服務)的決策提供建議。
1.使用Serverless候選者的特征
在深入研究Serverless采用指南之前,了解使用Serverless的候選者特征非常重要。下表針對應用或負載模型提供了技術無關性特征,這些特征很容易融入Serverless。這些特征是更為復雜的Serverless模式、解決方案和架構。它們可以組合使用,并不具有排他性。
2.Serverless的候選架構
以下某些架構更適合跨應用程序、數據、集成、人工智能、物聯網等采用Serverless。
應用
- 反應系統
- 基于領域驅動設計的微服務
- 扼殺者轉換(Strangler Transformation)
- 數據
大數據
- 包括SQL和No SQL數據庫,例如,文檔數據庫、列式數據庫、鍵值、RDBMS、對象存儲
- 數據處理
- 流處理
- CDC
- 批處理
- ETL?
集成
- REST API
- 事件驅動
- 通知
- 消息傳遞
- 事件流
- 工作流程
加工
- HTTP/HTTP(s)
- BPM 工作流程
- 錄制
- 轉碼
- 人工智能/機器學習
- 物聯網事件處理
- 區塊鏈處理
安全與合規
- IAM,身份聯盟
- 密鑰、證書管理、RBAC、秘密保險庫、HSM
- 防火墻、DDoS
- 監管數據合規
- 物聯網設備安全
DevOps
- CI/CD
- 可觀察性
- 健康儀表板、成本管理、賬戶管理
- IAC
3.Serverless功能示例
下面列出了Serverless功能的示例,當然列表的內容還在不斷擴充中。
- 對由內部和外部服務觸發的事件采取行動。
- 根據特定的時間表(定期)安排任務,例如進行備份和日志分析。
- 為現有服務或應用程序實施API管理。
- 執行應用程序邏輯以響應數據庫更改。
- 調用可自動擴展的API后端服務。
- 圖像處理與視覺識別服務相結合。
- 基于目標的流、圖像和視頻操作。
- 響應傳感器輸入 (IoT) 執行邊緣分析。
- 使用新的功能邏輯擴展和增強工作流以及相關數據(例如,發送通知、標記數據、添加天氣數據)。
- 充當不同服務之間的粘合劑以創建強大的管道。
- 微服務的實現,以及并行計算或數據處理。
- 應用程序需要基于事件/基于異步的通信來實現用例。
- 輪詢用例,pub-sub的實現。
4.不適合Severless的案例
此外,在某些情況下,Serverless可能不適合如下情況:
- 需要高性能計算 (HPC) 并執行組件的工作負載。
- 執行時間長且需要Master/Worker節點的集群進行處理的進程。
- 需要控制底層基礎架構組件(如物理套接字或內核)的工作負載,例如,工作負載需要綁定到每個內核、每個套接字或每個VM的許可證。
- 在受監管行業運營的組織,組織需要使用專用基礎架構,同時在非多租戶環境中運行應用。
- 需要使用預測或ML復雜算法,以及適合細粒度自動擴展規則的工作負載。
- 長時間運行的任務。
- 復雜(不可分離)或需要很長時間初始化的函數。
- 需求有狀態的會話來實現用例。
- 涉及使用DB進行事務管理的功能,同時對快速擴展有要求。DB可能成為擴展的瓶頸。
- 客戶端強制要求合規性(例如,如果合規性需要掃描底層基礎設施,因為在Serverless中沒有特定的基礎設施)。
- 對運行時版本的實施要求是特定的(原因是我們無法控制Serverless運行時并且更新是由供應商驅動的)。
- Serverless的應用程序架構取決于供應商(供應商鎖定的可能性,特別是涉及平臺功能,例如身份驗證、擴展、監控和配置管理)。
- 當處理的數據本質上是敏感的時,多租戶不是首選選項。
5.簡化的Serverless采用決策指導框架
根據特性、架構類型和用例,一個簡單的Serverless采用決策指導框架如下所示。
CSP存在各種用于Serverless實施的服務類型,主要是FaaS/BaaS和Serverless容器平臺。
6.Serverless平臺的主要特征
下面列出了無服務器平臺的一些關鍵特性。
- 簡化的編程模型 ,因為整個應用程序可以描述為FaaS和BaaS的事件觸發器,并且整個“應用程序”可以由更小的Serverless構建塊組成。
- 使用短時間、單一用途、RESTful函數專注于前端應用邏輯
- 簡單 (JSON) 輸入/輸出
- 通過環境變量進行本地化配置
- Polyglot-選擇適合自身需求的編程語言;組合用不同語言編寫的函數。
- 事件驅動 - 多種調用模式(通過觸發器/消息自動化,從API調用手動)
- 簡化的數據和服務集成——與存儲(數據庫、對象存儲等)消息、API管理和其他提供商服務的“開箱即用”集成
- 邁向“NoOps”——Serverless平臺管理運營方面,例如供應、部署、自動擴展配置、可用性等。
- 平臺提供的運營支持服務-對日志記錄和監控、身份和訪問管理等的“內置”支持。
- 僅為您使用的計算付費-定價基于功能執行時間或請求數。
7.FaaS/BaaS與無服務器平臺的簡單決策指南
了解CSP的FaaS/BaaS服務之間的選擇,使用可以運行容器的Serverless平臺是至關重要的。下面提供了一個簡單的決策指導。
8.結論
雖然Serverless計算正在迅速發展,帶來了新的服務和功能,這些新服務和功能往往超出了目前應用的范圍,組織可能在Serverless的應用策略上面臨重大挑戰。本文試圖提供簡化的指導 ,可能有助于加快Serverless的應用。
譯者介紹
崔皓,51CTO社區編輯,資深架構師,擁有18年的軟件開發和架構經驗,10年分布式架構經驗。
原文鏈接:
??https://dzone.com/articles/decision-guidance-for-serverless-adoption???