在 MSDN 站点最近的一篇文章中,Daniel Meixler 探讨了一个针对物联网(Internet of Things,IoT)应用的完整DevOps 生命周期,用到了微软的框架和组件。这个理念稍作改动就可以泛化应用到其他IoT 平台上。
一般来讲,DevOps 在Web 应用中最为流行,但它并不是与特定技术或特定类型的应用绑定的。这篇文章介绍了如何为冰箱控制应用创建端到端的DevOps 生命周期,证明了这种理念。对于完整的自动化CI/CD 链,人们会予以特别关注。一旦特定应用所面临的挑战已明确,那么这些挑战就可以使用所选择的技术栈来解决。有一些概念是通用的,能够以技术无关的形式进行重用。
示例应用仿真了一个冰箱控制系统,运行在Raspberry PI 上。针对这种IoT 应用的开发管道(pipeline)会面临着各种挑战。这种管道需要涵盖每次check-in 之后的自动构建、自动化UI 测试、部署到各种环境(包括生产)并收集遥测数据。通常,UI 测试是比较困难的,在设备上的自动化测试则会更加困难。在这种环境下,DevOps 所面临的挑战还包括可审核性与设备兼容性,但是这些问题在本文中并没有解决。
针对问题中所提及的冰箱应用,部署需要发布到测试设备(QA)和客户的设备(生产环境)上。后者并不容易实现,因为通常没有到这些设备的物理连接。在这种情况下,设备的数量会非常庞大,并且位于客户的专属环境中,跨越非常广大的地理区域。最后一个需求,也就是遥测,为IoT 设备带来了另外一个挑战,因为这些操作通常没有太多的人工干预,用户没有办法反馈应用运行情况的信息。收集手动反馈并不是可行的方案。
这里做出的技术选择会优化管道,而且没有太多的定制。IoT 平台是 Windows 10 IoT Core ,应用是一个 Windows Universal App(UWP)。编排平台是 Visual Studio Team Services(VSTS)。VSTS 有一些特性致力于简化DevOps 流程。按照微软的技术栈,这里选择了 Azure IoT Hub 作为管理平台。它用来管理和配置 IoT 应用。Azure IoT Hub 支持多种语言,这个应用用到了.NET 和 node.js。HockeyApp 是微软在几年前收购的,它用来从设备上收集使用和错误分析数据。
图片来源于 https://blogs.msdn.microsoft.com/dmx/2017/01/26/devops-for-iot-part-1/
当这个管道执行时,会生成新的应用,发布流程会通知 Azure IoT Hub。Hub 的责任是确保新版本能够在所有已注册的 IoT 设备上下载并安装。对于在线的设备来说,这可能会立即运行,而对于离线的设备,则可能会有一个延迟模式。
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论