物聯(lián)網(wǎng)應(yīng)用和事件驅(qū)動(dòng)計(jì)算重塑云服務(wù)
如今,一些全球主要的公共云提供商已經(jīng)為物聯(lián)網(wǎng)和事件驅(qū)動(dòng)計(jì)算推出了新的服務(wù)。了解這些服務(wù)對(duì)企業(yè)的IT團(tuán)隊(duì)和未來的云計(jì)算將有一些重要的意義。
工具總是以其用途塑造的。當(dāng)云計(jì)算***出現(xiàn)時(shí),它是數(shù)據(jù)中心托管虛擬化的一種形式,其目標(biāo)是看起來像裸機(jī)服務(wù)器。
基礎(chǔ)架構(gòu)即服務(wù)(IaaS)形成了最早的云服務(wù),它仍然主導(dǎo)公共云以及私有云軟件市場(chǎng)。即使如此,這并不意味著它將成為未來云機(jī)會(huì)的源泉。
云計(jì)算提供商一直在為未來做好準(zhǔn)備,他們的計(jì)劃顯示了一個(gè)重要的,已經(jīng)在進(jìn)行中的轉(zhuǎn)變。每個(gè)主要的公共云提供商都添加了處理事件的服務(wù)。特別是,提供商正在添加功能來幫助開發(fā)人員構(gòu)建物聯(lián)網(wǎng)(IoT)的應(yīng)用程序。這些可以成為自互聯(lián)網(wǎng)以來***變革性應(yīng)用的基礎(chǔ)嗎?
IaaS將不適用于物聯(lián)網(wǎng)應(yīng)用程序
傳統(tǒng)應(yīng)用程序遵循幾十年的模式:工作來自于支持它的應(yīng)用程序。在傳統(tǒng)的云計(jì)算中,用戶支付他們使用的處理資源。這些術(shù)語雖然有所不同,但它本質(zhì)上是虛擬基礎(chǔ)設(shè)施的租賃。這是數(shù)據(jù)中心發(fā)生的直接反映,服務(wù)器域中加載了應(yīng)用程序,事務(wù)將路由到池中的正確服務(wù)器。這種方法在工作持續(xù)存在時(shí)是良好的,如在零售銀行應(yīng)用程序持續(xù)運(yùn)行的情況下。
事件驅(qū)動(dòng)和物聯(lián)網(wǎng)應(yīng)用程序改變了這個(gè)關(guān)鍵的持久性概念。隨時(shí)隨地都可以彈出一個(gè)活動(dòng)。將IaaS實(shí)例用于等待事件浪費(fèi),也許是過于浪費(fèi)?;蛘邔?shí)例可能位于事件發(fā)生所在的數(shù)據(jù)中心中。如果所有可能的事件來源與傳統(tǒng)的云端主機(jī)點(diǎn)相匹配,大多數(shù)情況下大部分時(shí)間都會(huì)閑置,但會(huì)增加成本。
為什么有一個(gè)特定的對(duì)錯(cuò)處理事件的原因很簡(jiǎn)單:延遲。大多數(shù)事件具有特定的響應(yīng)時(shí)間期望。想象一下當(dāng)物品通過傳感器時(shí)觸發(fā)噴漆的機(jī)器,或是一輛接近不斷變化的交通信號(hào)燈的自動(dòng)駕駛汽車。
事件與接收適當(dāng)響應(yīng)之間的信息流稱為控制循環(huán)。大多數(shù)事件需要一個(gè)簡(jiǎn)短的控制循環(huán),這意味著它們的進(jìn)程需要靠近事件的點(diǎn)。這就是控制循環(huán)的問題,這些控制循環(huán)強(qiáng)制事件處理過程分散到云端,并且數(shù)量增加。
很容易看出,給定點(diǎn)的事件稀缺性會(huì)如何影響傳統(tǒng)云計(jì)算的云效率和定價(jià)問題。也可能有太多的事件。云計(jì)算可以通過根據(jù)需要運(yùn)行應(yīng)用程序組件的多個(gè)副本來允許云爆發(fā)或擴(kuò)展容量,但這并不容易。
重新思考物聯(lián)網(wǎng)應(yīng)用程序和開放式可插拔規(guī)范(OPS)
編寫為在裸機(jī)服務(wù)器上運(yùn)行的很少應(yīng)用程序可以無縫地縮放或替換失敗的實(shí)例。這些云功能在傳統(tǒng)應(yīng)用程序運(yùn)行的數(shù)據(jù)中心中并不常見。將應(yīng)用程序移動(dòng)到云中也不會(huì)增加擴(kuò)展應(yīng)用程序所需的功能。
應(yīng)用程序組件的多個(gè)副本需要負(fù)載平衡,并且許多應(yīng)用程序沒有設(shè)計(jì)為允許組件的任何副本處理任何事件或請(qǐng)求。如果在一個(gè)應(yīng)用程序的一個(gè)副本中,一半的字符串轉(zhuǎn)到應(yīng)用程序的一個(gè)副本,而另一半用于另一個(gè)應(yīng)用程序,那么在背景中假設(shè)一系列請(qǐng)求的應(yīng)用程序不能工作。那么如何使物聯(lián)網(wǎng)應(yīng)用程序可擴(kuò)展性和彈性?他們必須重寫。
開發(fā)人員正在做這些事情,大型云提供商正在響應(yīng)。特別是,他們都看到與云計(jì)算的相同的物聯(lián)網(wǎng)和事件未來。他們一直在不斷增強(qiáng)云計(jì)算,為未來作好準(zhǔn)備。云計(jì)算巨頭不僅提供特殊的Web服務(wù)來管理物聯(lián)網(wǎng)設(shè)備和連接,而且現(xiàn)在提供了工具來支持物聯(lián)網(wǎng)應(yīng)用程序所需的編程。
函數(shù)式或lambda式編程不允許應(yīng)用程序或組件在使用之間存儲(chǔ)數(shù)據(jù)。因此,組件的所有實(shí)例都可以處理事件。云供應(yīng)商現(xiàn)在提供的功能或微服支持而不是簡(jiǎn)單地提供基礎(chǔ)設(shè)施、平臺(tái)或軟件即服務(wù),因?yàn)楹瘮?shù)云是非常不同的。
用戶的函數(shù)在函數(shù)云中托管在哪里?無處不在。函數(shù)在任何需要的地方被激活,在需要時(shí),用戶在使用它們時(shí)支付。物聯(lián)網(wǎng)或任何類型的事件驅(qū)動(dòng)計(jì)算的函數(shù)云代表著***的靈活性和敏捷性。他們還要求用戶注意制定關(guān)于托管他們?cè)敢庵Ц抖嗌俸瘮?shù)的政策,根據(jù)成本和這些麻煩的控制回路長度的組合,他們必須做出決定。
函數(shù)云的興起
亞馬遜甚至允許物聯(lián)網(wǎng)將要求在云端遷移的云應(yīng)用程序。他們的Amazon Web Services(AWS)Greengrass平臺(tái)是一個(gè)軟件和中間件框架,可讓用戶在自己的硬件上執(zhí)行AWS兼容功能。此功能將使物聯(lián)用戶對(duì)事件進(jìn)行一些本地處理,以使這些控制回路保持短路,但仍然在AWS云中托管更深層次,更少的時(shí)間關(guān)鍵函數(shù)。
傳統(tǒng)的云模型使用戶為其托管實(shí)例支付費(fèi)用。在函數(shù)云中,用戶不會(huì)以通常的方式托管實(shí)例。用戶可以根據(jù)需要即時(shí)執(zhí)行功能。這是什么導(dǎo)致了即時(shí)即付或無服務(wù)器的功能云描述,但這不足為奇。用戶可以根據(jù)使用情況為任何云計(jì)算服務(wù),運(yùn)行任何應(yīng)用程序進(jìn)行定價(jià),但這并不能使云服務(wù)可擴(kuò)展或輕松優(yōu)化。沒有這些功能,無服務(wù)器只是一個(gè)定價(jià)策略。
開發(fā)人員必須對(duì)應(yīng)用程序進(jìn)行更改以適應(yīng)物聯(lián)網(wǎng)和功能云。幾乎每個(gè)新的程序或服務(wù)都存儲(chǔ)信息,這使得它難以擴(kuò)展。功能編程的規(guī)則是無狀態(tài)的,這意味著用戶從進(jìn)程獲取的輸出僅基于其提供的輸入。甚至有編程語言旨在強(qiáng)化對(duì)開發(fā)人員的無狀態(tài)行為。
需求的函數(shù)
亞馬遜網(wǎng)絡(luò)服務(wù)公司的Lambda是***個(gè)上市基于事件的計(jì)算服務(wù),而其他幾家云計(jì)算服務(wù)提供商也很快地對(duì)外推出類似的服務(wù)。微軟Azure功能去年11月份推出,IBM的Apache Open Whisk在下個(gè)月推出。谷歌公司于4月份將Cloud Functions服務(wù)轉(zhuǎn)為測(cè)試版,Pivotal預(yù)計(jì)將于2017年中期開設(shè)業(yè)務(wù)的Spring Cloud功能。
函數(shù)云的概念可能會(huì)加速已經(jīng)開始的趨勢(shì),以應(yīng)對(duì)移動(dòng)設(shè)備的使用和BYOD策略的實(shí)施。企業(yè)發(fā)現(xiàn),他們正在創(chuàng)建旨在為移動(dòng)設(shè)備格式化信息的應(yīng)用程序組件,為各種移動(dòng)平臺(tái)編寫的進(jìn)行接口應(yīng)用程序,并提供通常在數(shù)據(jù)中心運(yùn)行的后端應(yīng)用程序的一致支持。
這些力量結(jié)合起來創(chuàng)建一個(gè)應(yīng)用程序的兩層模型。設(shè)備處理前端在云端,并利用云計(jì)算在全球范圍內(nèi)分發(fā)應(yīng)用程序的能力。然后,云計(jì)算部分將為核心業(yè)務(wù)應(yīng)用程序創(chuàng)建傳統(tǒng)交易,無論它們位于何處。
物聯(lián)網(wǎng)比移動(dòng)工作人員分布得更加分散,一些物聯(lián)網(wǎng)事件需要更短的控制回路。因此,應(yīng)用程序前端部分的云托管可能會(huì)得到爆炸式增長。這給這種兩層應(yīng)用程序結(jié)構(gòu)的偏離帶來了壓力,因?yàn)樵S多事件可能會(huì)產(chǎn)生許多事務(wù)。這些交易可能讓核心業(yè)務(wù)應(yīng)用程序崩潰。云計(jì)算提供商也在努力。例如,微軟公司具有通常用于為業(yè)務(wù)應(yīng)用程序提供工作的服務(wù)總線的云分布版本。
鑒于物聯(lián)網(wǎng)還處于起步階段,而云物聯(lián)網(wǎng)更加年輕,很容易想知道云供應(yīng)商為什么已經(jīng)提供物聯(lián)網(wǎng)功能。其中有三個(gè)原因:首先,物聯(lián)網(wǎng)可以大大增加IT支出,云計(jì)算提供商希望將其中一部分作為潛在的新收入。第二,物聯(lián)網(wǎng)不是唯一產(chǎn)生事件的東西。例如,很多工作人員的互動(dòng)看起來像事件處理。***,功能編程技術(shù)正在被推廣到各種處理過程中。物聯(lián)網(wǎng)應(yīng)用程序需要它們。開發(fā)人員工具和會(huì)議已經(jīng)描述了函數(shù)編程技術(shù)如何使程序更好,更易于維護(hù)。
如果由于任何原因編寫函數(shù),是不是使用函數(shù)云不可避免?
這是每個(gè)云計(jì)算提供商和云端用戶需要考慮的***問題。完全可擴(kuò)展的應(yīng)用程序??梢酝ㄟ^簡(jiǎn)單加載另一個(gè)副本來增加或減少負(fù)載容量,并修復(fù)自身的應(yīng)用程序,這對(duì)企業(yè)非常有用。為物聯(lián)網(wǎng)應(yīng)用程序開發(fā)的功能編程技術(shù)以及支持這些技術(shù)的功能云將重構(gòu)程序。
工具是由他們的用途定義的,那么用戶在事件處理中已經(jīng)看到了未來的云,而物聯(lián)聯(lián)將加速這一趨勢(shì)。物聯(lián)網(wǎng)具有在廣泛領(lǐng)域大量生產(chǎn)事件的潛力,同時(shí)要求較短的控制環(huán)路將徹底改變?cè)朴?jì)算的使用。