新型冠状病毒疫情肆虐的春节,大家都过得人心惶惶,作为被关在家的程序狗,总觉得要做点什么。于是阿里云 IoT 事业部的几个同学就开始了防疫精灵的开发之路。
从点子到防疫宝,只花了一个下午时间;从防疫宝到钉钉全域机器人防疫精灵,只花了 1.5 天时间完成开发,3 天灰度、全量,发布 1 天半就突破 1 万个群添加使用,即插即用,疫情实况、常见问题、健康打卡全都有:
如此紧急,toC海量客户,如何快速开发又不失稳定、安全呢?
天下武功唯快不破,怎么快?靠工具!
IoT Studio是阿里云 IoT 向物联网开发者提供的应用开发工具,包括了可视化、逻辑编排、数据分析三大能力。该工具开发的应用实例运行于阿里云函数计算(FunctionCompute 简称 FC)之上,应用 serverless 化,以达到按量伸缩和免运维的效果。
原理:钉钉全域机器人添加/删除/更新时,会自动推送HTTP事件
搭建:
1.使用HTTP流来提供钉钉事件回调
2.使用路径选择节点,根据事件类型分流到对应的处理逻辑
3.使用 Node 脚本进行数据预处理,包括数据格式、敏感字段脱敏或加签等
4.存入数据库
原理:基本同上,at机器人的消息将发送到回调接口,转发 NLP 接口
搭建:
1.使用 HTTP 流来提供钉钉消息回调
2.使用 Node 脚本节点(此处可用 API 请求节点,但因为稳定性要求改用 Node 脚本来,详见下文优化部分)
原理:每天 9 时、17 时定时推送最新疫情实况和打卡、咨询快捷链接
搭建:
// 触发
1.使用定时节点,设置每日触发
2.使用项目内API节点,调用同项目内的批量发送服务
// 发送
3.使用 HTTP 节点搭建发送入口
4.使用 Node.js 脚本节点拼装消息发送的内容
5.使用 Node.js 脚本节点查询数据库的webhook信息并解签(此处后续会优化数据库节点,无需写脚本)
6.使用 Node.js 脚本节点,批量发送消息给钉钉的 OpenAPI 接口(此处是关键点,容量评估、并发、流控、异常处理都在此处)
原理:使用可视化工具,利用库中的疫情数据,展示实况、趋势图,借助函数计算部署 puppeteer 服务定时截图
搭建:
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”