Mary+Branscombe
最新的云流行詞聽起來如此的矛盾;它實(shí)際上是一種新的編程模型,它可以把復(fù)雜的東西抽象出來,并且經(jīng)濟(jì)性非常好——在云中,甚至在您自己的服務(wù)器上。以下是聰明的CIO需要了解的。 就像一個(gè)老笑話,云只是別人的計(jì)算機(jī)。確實(shí)如此;它只是一臺運(yùn)行的更好的計(jì)算機(jī),能夠經(jīng)常打上補(bǔ)丁,安全防護(hù)做的比您自己的好,而且您不必為此付費(fèi),您還可以租用另一臺計(jì)算機(jī),所提供的服務(wù)能讓您進(jìn)一步提高工作水平,而不必自己啟動(dòng)服務(wù)器或者安裝軟件。 您可能認(rèn)為云的規(guī)模很大,能夠節(jié)約成本,而更重要的是它引入了抽象這一概念:提供存儲服務(wù)和數(shù)據(jù)服務(wù)而不是硬盤,應(yīng)用程序服務(wù)而不是虛擬機(jī),軟件控制網(wǎng)絡(luò)而不是您不得不連接的物理網(wǎng)卡和電纜。隨著云從IaaS發(fā)展到SaaS,直至PaaS,增加了監(jiān)控、數(shù)據(jù)分析和機(jī)器學(xué)習(xí)以及開發(fā)框架和應(yīng)用服務(wù),其抽象等級在不斷提高。 無服務(wù)器抽象出基礎(chǔ)設(shè)施 Azure首席技術(shù)官M(fèi)ark Russinovich指出,IaaS抽象出了物理數(shù)據(jù)中心,但它仍然需要基礎(chǔ)設(shè)施?!澳€必須選擇操作系統(tǒng),部署操作系統(tǒng),調(diào)整虛擬服務(wù)器的規(guī)模,在虛擬服務(wù)器上配置網(wǎng)絡(luò),擴(kuò)展虛擬服務(wù)器,想好怎樣在服務(wù)器上部署軟件,更新這些軟件,監(jiān)控軟件…?!?即使采用PaaS,“很多服務(wù)都要求您使用一些調(diào)整單元(甚至可以是服務(wù)器)來請求配置級別,而且您仍然要確定所需的數(shù)量,以及怎樣最有效地使用它們,您不得不對規(guī)模有所擔(dān)心。還有一些與我真正想要的,但卻沒有直接關(guān)系的任務(wù),例如,我的應(yīng)用服務(wù)請求?!?無服務(wù)器進(jìn)一步進(jìn)行了抽象。是的,您的代碼仍然在服務(wù)器上運(yùn)行——它們就是不用您去關(guān)心的服務(wù)器。 Russinovich將無服務(wù)器視為“下一代計(jì)算,其中一切都可以被驅(qū)動(dòng),而這是開發(fā)解決方案的企業(yè)的最大價(jià)值所在,他們不用關(guān)心為其提供服務(wù)的平臺的所有細(xì)節(jié)?!?無服務(wù)器是基于事件的程序,采用了微計(jì)費(fèi)的方式 如果你不喜歡這個(gè)名字,可以把它當(dāng)作基于事件的程序,或者函數(shù)即服務(wù)。AWS Lambda被命名為lambda函數(shù)(能夠使用和創(chuàng)建其他函數(shù)的匿名函數(shù)),微軟同樣的產(chǎn)品是Azure函數(shù),而谷歌則是Cloud函數(shù)。 Russinovich說:“無服務(wù)器字面上的意思是,我不用去管服務(wù)器”,但他補(bǔ)充說,其定義還必須包括編程模型和微計(jì)費(fèi)。 我抽象出了服務(wù)器;我不是說我想要多少服務(wù)器或者計(jì)算單元,我只是使用資源,我為使用多少資源而付費(fèi)。我不用先付費(fèi),我使用資源的時(shí)候才為其付費(fèi)。這種計(jì)費(fèi)模型之所以能起作用是由于編程模型的原因。無服務(wù)器是基于事件、基于觸發(fā)的計(jì)算,它要求非??焖俚捻憫?yīng)觸發(fā)器或者事件,否則我可能不得不把資源留在那里,使其長時(shí)間運(yùn)行。 由于無服務(wù)器平臺自動(dòng)管理配置,進(jìn)行調(diào)整,如果您想要優(yōu)化您正在使用的資源,則可以通過提高代碼效率來實(shí)現(xiàn)。這是一個(gè)與IaaS甚至大多數(shù)PaaS完全不同的經(jīng)濟(jì)模式。 觸發(fā)把無服務(wù)計(jì)算變成了云膠合 無服務(wù)器代碼不會一直運(yùn)行;只有當(dāng)與您設(shè)置的規(guī)則相匹配的事件被觸發(fā)時(shí)才會運(yùn)行。您設(shè)置的觸發(fā)器可以是調(diào)用無服務(wù)器函數(shù)的其他代碼,例如Web應(yīng)用程序,也可能是相連接的服務(wù)發(fā)生的事情——Russinovich說:“這包括,把文件放到存儲帳戶中,在CRM系統(tǒng)中打開的票據(jù),系統(tǒng)中出現(xiàn)的消息等。” 函數(shù)的輸出也可以被發(fā)送到另一服務(wù),這樣您可以使用它來觸發(fā)對所采集到的圖像和視頻進(jìn)行圖像識別,并將結(jié)果發(fā)送到數(shù)據(jù)庫,或者使用“推特情緒分析”向客服發(fā)送警報(bào),或者啟動(dòng)一個(gè)聊天機(jī)器人。當(dāng)有人說他們想要安排預(yù)約時(shí),我才啟動(dòng)工作流程。Azure函數(shù)可以和很多東西集成在一起,例如云服務(wù)、數(shù)據(jù)庫和存儲服務(wù)、消息、事件集線器,以及支持與內(nèi)部SQL服務(wù)器相集成的網(wǎng)關(guān)連接器等。 使用無服務(wù)器函數(shù)來轉(zhuǎn)換數(shù)據(jù),連接不同的服務(wù)非常適合移動(dòng)應(yīng)用;Azure Logic Apps(用于開發(fā)人員)和Flows以及Power Apps(用于高級用戶)都使用Azure函數(shù),您可以通過Amazon面向iOS和Android的Mobile SDK來調(diào)用Lambda函數(shù)。這也是把來自不同云的服務(wù)整合在一起的一種方法,使用無服務(wù)器函數(shù)把不同的系統(tǒng)連接在一起,無論是把文件上傳到Dropbox和Dynamics 365,還是使用AWS Lambda通過云端點(diǎn)API把文件從亞馬遜S3移動(dòng)到谷歌App Engine。 對開發(fā)人員來說,最大的好處是速度和簡單,他們提高了開發(fā)速度,更好地適應(yīng)開發(fā)的轉(zhuǎn)變,不斷地集成和部署。 Russinovich指出:“采用無服務(wù)器計(jì)算,編程時(shí),所有開發(fā)人員擔(dān)心就是應(yīng)用程序邏輯。他們可以專注于業(yè)務(wù)邏輯和編寫一段代碼,不用關(guān)心其他與虛擬機(jī)操作或者PaaS環(huán)境相關(guān)的支持代碼。您所得到的是產(chǎn)品及時(shí)面市;你可以編寫一段代碼,將其部署,在幾秒鐘或者幾分鐘內(nèi)就可以讓它運(yùn)行?!?無服務(wù)器計(jì)算將超越云計(jì)算 像Lambda和AWS函數(shù)這樣的無服務(wù)器產(chǎn)品并不是基于事件的編程唯一的用武之地。Russinovich說:“基于事件的編程模型非常強(qiáng)大,這種模型將超越服務(wù)器抽象和微計(jì)費(fèi)這類應(yīng)用環(huán)境?!彼ㄗh說,隨著模型的成熟,您將能夠使用在PaaS或者甚至在IaaS產(chǎn)品上,甚至在本地編寫的相同的無服務(wù)函數(shù)代碼;對于微軟,這將通過Azure堆棧來實(shí)現(xiàn),或者您可以讓函數(shù)在Windows容器中運(yùn)行來實(shí)現(xiàn)。 他解釋說:“(在Azure函數(shù)中),你失去了一些控制。在某些場景下,這種微計(jì)費(fèi)、使用才付費(fèi)的模式可能會讓我成本更高。如果讓我的代碼運(yùn)行的設(shè)置成本很高,有很多代碼我無法預(yù)先在函數(shù)上進(jìn)行設(shè)置,那么我的啟動(dòng)時(shí)間會很長。因此,我可能會采用PaaS并預(yù)先設(shè)置好,現(xiàn)在我的基于事件的觸發(fā)器代碼可以很快地做出響應(yīng)?!?目前為止,無服務(wù)器計(jì)算在云中是最有效的,因?yàn)榈讓佑刑摂M機(jī)以及其他必須要配置的基礎(chǔ)設(shè)施,而像Azure和AWS這樣的超大規(guī)模云提供商提供了很好的自動(dòng)化功能,以至于他們開展無服務(wù)器工作幾乎不需要成本——可以把無服務(wù)器計(jì)算放到其他云服務(wù)沒有使用的虛擬機(jī)資源中。如果您嘗試自己運(yùn)行無服務(wù)器框架,那么您會發(fā)現(xiàn)很難獲得相同的優(yōu)勢(您不太可能有這么大的規(guī)模,并且還需要有人運(yùn)行基礎(chǔ)設(shè)施),但是這種模式以后是有可能的。 無服務(wù)器計(jì)算是一種相當(dāng)新的想法,但已經(jīng)在可口可樂這樣的大企業(yè)中應(yīng)用,該公司正在使用AWS Lambda與開源無服務(wù)器體系架構(gòu)來降低IT成本。無服務(wù)器的抽象特性是Atlassian將Jira和Confluence等服務(wù)從自己的數(shù)據(jù)中心遷移到AWS上的部分原因。Atlassian首席技術(shù)官Sri Viswanath向我們解釋說:“他們的承諾是我們可以利用這些來加速我們的開發(fā),我們計(jì)劃使用更多的這類服務(wù)。如果您有什么是異步的,必須運(yùn)行一項(xiàng)工作,那么Lambda是非常適合的?!?他指出,無服務(wù)器計(jì)算的功能還在不斷發(fā)展?!癓ambda的功能還不是很完善;現(xiàn)在對于運(yùn)行幾毫秒的小服務(wù)來說是很好的,但是微服務(wù)需要長時(shí)間運(yùn)行,所以在Lambda中,您必須為其啟動(dòng)虛擬機(jī)。如果您需要一個(gè)接一個(gè)的處理異步事件,那么這是非常合適的?!闭诮鉀Q這些局限問題——Azure函數(shù)允許專用的應(yīng)用程序去管理長時(shí)間運(yùn)行的函數(shù),而Viswanath認(rèn)為,只有更簡單的模型才會更有吸引力。 “今后,我認(rèn)為不用擔(dān)心服務(wù)器這樣的理念是非常重要的。[采用無服務(wù)器計(jì)算],您不必?fù)?dān)心服務(wù)器的部署;您編寫自己的代碼,保存它,然后就完成了。” Mary Branscombe是一位自由撰稿人,他二十多年來一直致力于技術(shù)寫作,其寫作主題涵蓋了從編程語言、Windows和Office的早期版本,到最早的網(wǎng)絡(luò)以及消費(fèi)類小工具和家庭娛樂的各個(gè)方面。 原文網(wǎng)址: http://www.cio.com/article/3198756/cloud-computing/serverless-computing-the-basics.htmlendprint