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