不容忽視 無服務(wù)器架構(gòu)的四大主要弊端
譯文【51CTO.com快譯】 無服務(wù)器架構(gòu)是指高度依賴于第三方服務(wù)(即后端即服務(wù),簡(jiǎn)稱BaaS)或者運(yùn)行在臨時(shí)容器(即功能即服務(wù),簡(jiǎn)稱FaaS)內(nèi)之定制化代碼的應(yīng)用程序,目前最為知名的相關(guān)服務(wù)為AWSLambda。
盡管名為"無服務(wù)器",但此類架構(gòu)并非將代碼徹底剝離于服務(wù)器之外。"無服務(wù)器計(jì)算"是指企業(yè)或個(gè)人無需購買、租賃或配置用于支持后端代碼運(yùn)行的物理或者虛擬服務(wù)器。
無服務(wù)器解決方案通常包含Web服務(wù)器、FaaS層、安全令牌服務(wù)(簡(jiǎn)稱STS)、用戶驗(yàn)證以及數(shù)據(jù)庫等組成要素。
無服務(wù)器代碼可與面向常規(guī)服務(wù)器形式的代碼--例如微服務(wù)--并發(fā)運(yùn)行。舉例來說,我們可將一款Web應(yīng)用中的部分代碼以微服務(wù)形式編寫,而另一部分則可表現(xiàn)為無服務(wù)器形式。此外,在編寫當(dāng)中完全不涉及任何服務(wù)器配置要素的應(yīng)用程序亦可實(shí)現(xiàn)無服務(wù)器化。
FaaS提供的平臺(tái)允許開發(fā)者根據(jù)具體事件觸發(fā)代碼執(zhí)行操作,而無需構(gòu)建并維護(hù)復(fù)雜的基礎(chǔ)設(shè)施。在這一體系當(dāng)中,由第三方應(yīng)用或服務(wù)對(duì)服務(wù)器端邏輯及狀態(tài)進(jìn)行管理。
無服務(wù)器計(jì)算的弊端
1.第三方API系統(tǒng)的問題
供應(yīng)商控制、多租戶問題、供應(yīng)商鎖定以及安全缺陷等負(fù)面影響皆可能由第三方API所引發(fā)。在不具備系統(tǒng)控制能力的前提下使用API有可能導(dǎo)致系統(tǒng)宕機(jī)、強(qiáng)迫性API升級(jí)、功能缺失、發(fā)生意外限制以及成本變更等后果。另外,多租戶問題亦常見于各類云計(jì)算框架之內(nèi)。Salesforce(PaaS)即因其多租戶云結(jié)構(gòu)而引入了部分監(jiān)管限制,開發(fā)人員亦需要在使用當(dāng)中盡可能避免相關(guān)問題。具體而言,多租戶解決方案往往會(huì)在安全性、穩(wěn)定性以及性能層面發(fā)生問題。
2.運(yùn)維工具缺失
開發(fā)人員需要依靠供應(yīng)商為其提供調(diào)試與監(jiān)控類工具。事實(shí)上,分布式系統(tǒng)的調(diào)試工作相當(dāng)困難,且通常需要對(duì)大量相關(guān)指標(biāo)進(jìn)行訪問方可了解問題的產(chǎn)生根源。
3.架構(gòu)復(fù)雜性
開發(fā)人員需要投入大量時(shí)間以評(píng)估、實(shí)施并測(cè)試具體功能應(yīng)當(dāng)拆分成怎樣的粒度。應(yīng)用程序一次調(diào)用操作中所涉及的功能數(shù)量需要加以平衡。對(duì)大量功能進(jìn)行管理無疑將提升運(yùn)營(yíng)成本,而忽略粒度設(shè)置則終將令微服務(wù)架構(gòu)變?yōu)?quot;迷你整體"架構(gòu)。
目前,AWSLambda對(duì)用戶所能并發(fā)執(zhí)行的總體lambda數(shù)量作出了限制。其中的問題在于,該限制將影響您的整體AWS帳戶。部分企業(yè)會(huì)利用同一AWS帳戶進(jìn)行生產(chǎn)及測(cè)試。這意味著如果某位工作人員著手進(jìn)行一項(xiàng)新的負(fù)載測(cè)試并嘗試執(zhí)行1000項(xiàng)并發(fā)Lambda功能,則生產(chǎn)應(yīng)用將立即遭遇拒絕服務(wù)(簡(jiǎn)稱DoS)狀況。
4.實(shí)施難度過高
對(duì)無服務(wù)器應(yīng)用進(jìn)行集成化測(cè)試難度極高。無服務(wù)器FaaS(即每項(xiàng)功能)中的各集成單元要遠(yuǎn)小于其它架構(gòu),因此我們需要將大量單元加以集成,方能正常完成測(cè)試。另外,大家可能需要在整體邏輯應(yīng)用之內(nèi)為每項(xiàng)功能部署一項(xiàng)對(duì)應(yīng)的FaaS組件。這意味著您將無法以原子性方式對(duì)一組功能進(jìn)行統(tǒng)一部署,而由于不存在應(yīng)用程序版本管理概念,因此原子回滾亦無法實(shí)現(xiàn)。如此一來,我們需要關(guān)閉一切觸發(fā)相應(yīng)功能的事件源、部署整體功能組,而后再重新啟動(dòng)事件源。
原文鏈接:
https://dzone.com/articles/the-drawbacks-of-serverless-architecture
原文標(biāo)題:The Drawbacks of Serverless Architecture
原文作者:Rohit Akiwatkar
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】