無服務(wù)器計(jì)算是提高開發(fā)人員生產(chǎn)率的一個(gè)很好的方式,但有安全性問題,并且鎖定的機(jī)率大。
無服務(wù)計(jì)算是一件很大的事情,有很好的理由。作為Pariveda公司解決方案架構(gòu)師Phillip Manwaring建議的,無服務(wù)器計(jì)算是一個(gè)AWS Lambda,是開發(fā)人員專注于“封裝業(yè)務(wù)邏輯和公開組織能力的短暫功能”的一種方式,從而構(gòu)建“解決方案和服務(wù)”的樣板。
換句話說:無服務(wù)器幫助開發(fā)人員專注于解決業(yè)務(wù)問題,而不是技術(shù)基礎(chǔ)設(shè)施。這是一個(gè)好消息。但壞消息是,無服務(wù)器可以使事情變得更容易,一些開發(fā)人員可能發(fā)現(xiàn)自己對(duì)安全性做出了非常糟糕的決定。Redmonk公司分析師James Governor在最近的一篇文章中發(fā)表了這個(gè)觀點(diǎn),認(rèn)為無服務(wù)器非常便捷可能導(dǎo)致“代碼衛(wèi)生不佳,這會(huì)導(dǎo)致更大的攻擊面”。
(1)為了便捷而犧牲安全性
Manwaring表示,無服務(wù)器計(jì)算使人們“做正確的事情更容易”。此外,他繼續(xù)說道,“通過幫助用戶將其整體服務(wù)分解成微服務(wù),使現(xiàn)有的產(chǎn)品團(tuán)隊(duì)規(guī)模更小,并減少了從創(chuàng)意到生產(chǎn)的應(yīng)用程序所需的專業(yè)化程度,從而減少了支持這項(xiàng)工作人員需求作。”這真是太好了,是吧?正如Manwaring所說:
在無服務(wù)器的經(jīng)濟(jì)中,問題會(huì)發(fā)生在哪里,在實(shí)際使用之前,用戶不需要支付功能?一件事,就像塑料用品一樣,人們不太可能有效地處置它們。在微服務(wù)中,人們將可處理性視為一種美德,但是無服務(wù)器部署代碼很容易,為什么要放棄它?當(dāng)涉及安全性時(shí),糟糕的代碼衛(wèi)生本質(zhì)上會(huì)導(dǎo)致更大的攻擊面,這是一件壞事。
他總結(jié)說:“事實(shí)證明,無服務(wù)器的便利性和低成本模式,可能導(dǎo)致懶惰,且安全性差。”但是,這并不是全部。
(2)供應(yīng)商鎖定
無服務(wù)器計(jì)算的最大問題之一是實(shí)際上沒有服務(wù)器運(yùn)行。用戶只是建立在別人的服務(wù)器上,使用API調(diào)用,使用戶更加深入該平臺(tái)。如Simform Solutions公司的Rohit Akiwatkar所述:“在實(shí)施API的同時(shí),放棄系統(tǒng)控制可能導(dǎo)致系統(tǒng)停機(jī),強(qiáng)制API升級(jí),功能損失,意外限制,以及成本變化。”
其好處是增加自由以獲得更多的工作。其缺點(diǎn)是,用戶獲得了“更加完善”的平臺(tái)控制權(quán),沒有能力輕易移動(dòng)到競爭對(duì)手的云端。例如,如果要從微軟Azure切換到AWS,則需要重寫應(yīng)用程序。
這并不是說開發(fā)商不應(yīng)該利用無服務(wù)器可以提供的好處。他們應(yīng)該利用。但它確實(shí)表明需要采取謹(jǐn)慎措施,以便保持安全和獨(dú)立。