【问题标题】:How to do Software deployment for IoT devices (Linux based)? [closed]如何为物联网设备(基于 Linux)进行软件部署? [关闭]
【发布时间】:2016-07-08 09:32:26
【问题描述】:

我为之工作的一个客户有一批 BeagleBones/Raspberry PI 在客户所在地运行。这些设备安装在本地网络和防火墙后面。对于 SSH 连接,有多种选择,但我们仍在为这些设备上的软件部署而苦苦挣扎。我们暂时不依赖容器技术,所以 Docker Cloud 或 Resin.io 不是一个选择,但resin.io 看起来很有前途。我们正在使用 AWS IoT 进行数据收集。

关于部署的一些要求:

  • 推送软件服务器 -> 设备
  • 分阶段部署,部署到随时间增加的设备百分比
  • 回滚软件
  • 设备配置
  • 没有容器技术

有什么好的方法可以实现这一目标?

【问题讨论】:

    标签: linux deployment iot


    【解决方案1】:

    (免责声明:resin.io 的开发布道者)。

    好消息是,不依赖容器的软件仍然可以打包(但反过来就不行了)。 resin.io 中的容器被用作将软件交付到设备上的一种手段,并实施有趣、有用和安全的更新策略,否则这些策略是不可能或更难做到的。例如:

    • 您的应用程序代码存在错误(发生了!)并崩溃。这是否会破坏包括网络在内的整个设备? (在resin.io 容器上有助于限制损坏,您的应用程序崩溃但设备在线并且可以更新)
    • 当您有应用程序更新时,您是否必须更新整个机器映像? (使用这样的容器,您的应用程序代码中的更改会被更新,这导致大部分时间数据流量非常少,并且在需要时非常快速地进行更改)
    • 使用这样的容器可以让您几乎实现零停机升级(启动新应用程序,而运行的旧版本将资源移交给新应用程序)。

    这并不是要让您相信容器技术,只是强调无论您自己的应用程序是否是容器化的(很可能不是并且会一直保持这样!),不要选择使用该技术作为其一部分的服务堆。每项服务都试图以任何必要的方式提供您需要的功能。

    关于resin.io 的清单:

    • 推送软件服务器 -> 设备:检查,git push resin master,您的代码正在部署中
    • 分阶段部署,部署到随时间增加的设备百分比:不是一般功能集的一部分,但使用resin supervisor API 很容易实现:例如,所有设备的锁定更新,你可以选择哪些设备将被解锁和更新。由于这一切都是通过 API 实现的,因此可以根据您的首选部署策略进行自定义
    • 回滚软件:不是一般功能集的一部分(目前),但使用 git 很容易重新推送以前的版本。需要注意在您的设置中固定库的版本,以产生可重复的设置,但在实践中是可行的。
    • 设备配置:自动设备设置,或通过 API/SDK/CLI 配置可用
    • 无容器技术:如上所述,实际上您不必太在意服务以何种方式交付您的软件,因为在大多数情况下它不会影响您的应用程序的行为方式。

    另外,您提到了 AWS IoT,some documentation 介绍了将 resin.io 与 AWS 集成,包括一个使用 AWS IoT 自动配置resin.io 设备的示例项目(插入设备,它会自动获取用于AWS 物联网)。这可能是您感兴趣的事情。

    【讨论】:

      【解决方案2】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多