急速上線 Serverless 釘釘機器人“防疫精靈”

急速上線 Serverless 釘釘機器人“防疫精靈”

新型冠狀病毒疫情肆虐的春節,大家都過得人心惶惶,作為被關在家的程序狗,總覺得要做點什麼。於是阿里雲 IoT 事業部的幾個同學就開始了防疫精靈的開發之路。

從點子到防疫寶,只花了一個下午時間;從防疫寶到釘釘全域機器人防疫精靈,只花了 1.5 天時間完成開發,3 天灰度、全量,發佈 1 天半就突破 1 萬個群添加使用,即插即用,疫情實況、常見問題、健康打卡全都有:

急速上線 Serverless 釘釘機器人“防疫精靈”

如此緊急,toC海量客戶,如何快速開發又不失穩定、安全呢?

快速搭建

天下武功唯快不破,怎麼快?靠工具!IoT Studio是阿里雲 IoT 向物聯網開發者提供的應用開發工具,包括了可視化、邏輯編排、數據分析三大能力。該工具開發的應用實例運行於阿里雲函數計算(FunctionCompute 簡稱 FC)之上,應用 serverless 化,以達到按量伸縮和免運維的效果。

機器人添加

原理:釘釘全域機器人添加/刪除/更新時,會自動推送HTTP事件搭建:

1.使用HTTP流來提供釘釘事件回調2.使用路徑選擇節點,根據事件類型分流到對應的處理邏輯3.使用 Node 腳本進行數據預處理,包括數據格式、敏感字段脫敏或加簽等4.存入數據庫

急速上線 Serverless 釘釘機器人“防疫精靈”

聊天消息通路

原理:基本同上,at機器人的消息將發送到回調接口,轉發 NLP 接口搭建:1.使用 HTTP 流來提供釘釘消息回調2.使用 Node 腳本節點(此處可用 API 請求節點,但因為穩定性要求改用 Node 腳本來,詳見下文優化部分)

急速上線 Serverless 釘釘機器人“防疫精靈”

批量群推送

原理:每天 9 時、17 時定時推送最新疫情實況和打卡、諮詢快捷鏈接搭建:// 觸發1.使用定時節點,設置每日觸發2.使用項目內API節點,調用同項目內的批量發送服務

急速上線 Serverless 釘釘機器人“防疫精靈”

// 發送3.使用 HTTP 節點搭建發送入口4.使用 Node.js 腳本節點拼裝消息發送的內容5.使用 Node.js 腳本節點查詢數據庫的webhook信息並解籤(此處後續會優化數據庫節點,無需寫腳本)6.使用 Node.js 腳本節點,批量發送消息給釘釘的 OpenAPI 接口(此處是關鍵點,容量評估、併發、流控、異常處理都在此處)

急速上線 Serverless 釘釘機器人“防疫精靈”

疫情可視化

原理:使用可視化工具,利用庫中的疫情數據,展示實況、趨勢圖,藉助函數計算部署 puppeteer 服務定時截圖搭建:

  1. 使用文字組件,配置數據源(業務邏輯編排接口,類似上文搭建方式,不贅述),使用過濾器選定展示字段
  2. 使用折線圖組件,配置數據源、數據系列。
  3. 使用函數計算部署 puppeteer 截圖任務,詳見:Serverless 實戰 —— 快速開發一個分佈式 Puppeteer 網頁截圖服務

架構梳理

急速上線 Serverless 釘釘機器人“防疫精靈”

小結

  1. 好用的工具是絕對的生產力。 IoT Studio 拉近了想法和實現的距離,通過快速模板化,1 天搭建原型,1 天完成了 V1 版本。
  2. Serverless 為後端的高併發、高可用保駕護航。由於疫情的發展,“防疫精靈”的訪問量很快就大幅度提升,而且是非常典型的訪問量峰穀類業務。Serverless 的按量付費和急速彈性(百毫秒級別)省去了業務量增長而引入的架構升級的工作。此外函數計算的快速部署和低運維特性,也讓開發迭代得更快,對系統的監控度感知更容易。


分享到:


相關文章: