InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

为 IoT 应用搭建 DevOps 管道

  • 2017-02-26
  • 本文字数:1026 字

    阅读完需:约 3 分钟

在 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 设备上下载并安装。对于在线的设备来说,这可能会立即运行,而对于离线的设备,则可能会有一个延迟模式。

查看英文原文 Setting up a DevOps Pipeline for an IoT Application

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2017-02-26 18:003701

评论

发布
暂无评论
发现更多内容

融云互联网通信安全系列之端到端加密技术

融云 RongCloud

架构实战营-外包学生管理系统架构文档

CityAnimal

架构实战营 #架构实战营 「架构实战营」

spring-cloud-kubernetes与SpringCloud Gateway

程序员欣宸

Java spring-cloud 4月月更

制约国内企业知识管理发展的因素

小炮

知识管理 企业知识管理 企业知识管理工具

不要把公司对你的要求作为目标

张泽豪

职场 观点

[Day20]-[动态规划]零钱兑换 II

方勇(gopher)

LeetCode 动态规划 数据结构算法

Cilium 原理解析:网络数据包在内核中的流转过程

火山引擎边缘云

Linux 云原生 网络

组件容器化Statefulset与Deployment的选型与实践

移动云大数据

Deployment statefulset

湖仓一体,Hologres加速云数据湖DLF技术原理解析

阿里云大数据AI技术

sql 大数据 分布式计算 Cloud Native MaxCompute

Git技巧小能手

西门阿杰

git 版本控制

学生管理系统架构文档

小虾米

架构实战营

Windows注册表内容

Sher10ck

注册表

Go 入门很简单:如何在 Go 中使用日志包

宇宙之一粟

日志 log Go 语言 4月月更

面试突击41:notify是随机唤醒吗?

王磊

Java java面试

Linux驱动框架与杂项字符设备框架介绍

DS小龙哥

4月月更

HDFS小文件分析实践

移动云大数据

hdfs 小文件

【高并发】如何解决可见性和有序性问题?这次彻底懂了!

冰河

并发编程 多线程 协程 异步编程 精通高并发系列

模块三-学生系统详细架构设计

ASCE

融云首席科学家任杰:互联网兵无常势,但总有人正年轻

融云 RongCloud

深入解析require源码,知其根,洞其源

战场小包

前端 Node 4月月更

Apache ShardingSphere 如何实现分布式事务

SphereEx

Apache 数据库 ShardingSphere SphereEx

Android C++系列:C++最佳实践6 constexpr与decltype

轻口味

c++ android ndk jni 4月月更

什么是算法?

雨夜的博客

算法 算法攻关 算法解析 算法题

阿里云发布中国云原生数据湖应用洞察白皮书

阿里云大数据AI技术

大数据 数据湖

怒肝 JavaScript 数据结构 — 队列实战篇

杨成功

数据结构 4月月更

面对裁员潮,程序员如何安身立命

融云 RongCloud

解决报错:SSL certificate problem: certificate has expired

liuzhen007

SSL证书 4月月更

Mybatis-plus在项目中的应用

Rubble

4月日更 4月月更

GAIA-IR: GraphScope 上的并行化图查询引擎

6979阿强

大数据 并行计算 图计算 GraphScope 图分析

微信小程序开发系列(一) :开发环境搭建和微信小程序的视图设计与开发

Jerry Wang

微信小程序 微信 开发视图 微信小程序专栏 4月月更

为什么需要可编程代理

Flomesh

负载均衡 代理 Pipy 可编程代理

  • 扫码添加小助手
    领取最新资料包
为IoT应用搭建DevOps管道_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章