2017年8月24日星期四

Azure推Event Grid

無服務器運算進入新時代


兩年前,AWS推出Lambda後,雲運算多了一種被稱為FaaS (Functions-as- a-Service)新服務
。FaaS,又被稱為「無服務器運算」(Serverless computing),即不必架設或管理服務器;
只支付使用運算時間費用,程式碼一旦不執行,就停止計費。

無服務器運算可由不同方式觸發(Trigger);如Lambda一旦發現用戶抄寫文件至S3雲端儲存
,修改儲存文件,或者DynamoDB資料寫入,就觸發Lambda執行預定動作。

現代不少電腦程式,都基於所謂「事件觸發」(Event Driven),也就是某一項事件觸發另一
項工作。

以往雲運算以VM為運算單位,VM其實是虛擬化服務器,仍要管理VM的連接和高可用性設計。無服務器的優點,除了以用費計算;只須為運算所消耗時間付費,又利用容器技術,服務請求減少,容器消耗資源減少,收費甚具彈性。一般公有雲計費,AWS、Azure、Google首一百萬個服務請求完全免費,服務不超出上限,基本上涉及資本開支不高。

但是,彈性收費還是次要,開發人員毋須再管理服務器和連接,自動化擴充,極具可用性,才是無服務器運算的吸引之處。

Lambda出現不久,微軟的Azure Functions和Google Cloud Functions相繼出現,Google
Cloud Functions又支援Firebase,更易開發和部署HTTP應用。

開拓無服務器應用範圍

最近Azure推出Event Grid,不單支援事件觸發,進一步支援Reactive Programming,根據用
戶預先設定,或者過濾事件的性質和準則,可決定傳送至的事件處理者(Event handler),
或者觸發的動作。以往,無服務器運算多以查詢(Polling)方式接收事件,成本貴也沒效率
,Event Grid直接推送事件,減少資源消耗,反應更快。

一般無服務器運算,亦難以開發出可靠而複雜應用;最多只應付用戶的簡單輸入(上載資料或者是更新數據,又或者定時查詢數據)。如果用戶卻以介面作出複雜指示,應用要同時兼顧多項輸入,必須判斷大量的數據,近代Reactive Programming,尤其是微軟Rx技術,大大簡化以數據流為主的開發工作。

Reactive Programming是一種以非同步數據流( Asynchronous data streams)為中心程式開
發,比較常聽的 非同步事件(Asynchronous event)是用戶輸入;例如以滑鼠mouse hover
event 或點擊,可視為非同步的數據流;兩次點擊和三次點擊,代表不同指示。Reactive
Programming將事件的定義,延伸至數據,甚至串流數據,數據非同步,可即時解讀並反應;
例如血壓計收到某個讀數,同時收到其他指標變化,即觸發連串事件,時間序列上同的連串資料,都可變成串流數據 ;提供豐富的整合應用。

Event Grid支援不同的無服務器運算,決定事件如何傳送(Event Routing),或傳到多點,包
括以Azure Functions運算並傳回結果,也可用Logic Apps流程,連接至不同SaaS,以Twitter
或者Salesforces,作為EDI和EAI商務資料整合,又或者以Azure Automation簡化的繁瑣雲端
管理程序,或以Webhook發出訊息至另一Web終端裝置;Event Grid以雲端應用提供互動應用
,同時成本卻減低。

Event Grid也可以同時傳送到多個事件處理者,並決定傳送的可靠性,不斷重新傳送,直到接
收終端作出反應。

現代應用開發,大多皆以用戶互動作主導,例如更改密碼,可能作連串驗證。不影響用戶體驗的前提,以非同步方式抓取資料,可加強安全性。

Event Grid發行者,目前只包括Azure的Resource Manger,可簡化Azure雲端資源管理,類似
有新VM出現,又或CosmoDB更新。此外也支援內部開發的應用,以觸發Event Grid,例如根
據數據作出運算,以Logic Apps連接到應用,發出電郵等等,又或者執行更複雜動作,以
Webhook向接收終端發出訊息,未來或加入更多處理事作方式,令無服務器運算進入新時代。

沒有留言:

發佈留言