在MSDN站點(diǎn)最近的一篇文章中,Daniel Meixler探討了一個(gè)針對(duì)物聯(lián)網(wǎng)(Internet of Things,IoT)應(yīng)用的完整DevOps生命周期,用到了微軟的框架和組件。這個(gè)理念稍作改動(dòng)就可以泛化應(yīng)用到其他IoT平臺(tái)上。
一般來講,DevOps在Web應(yīng)用中最為流行,但它并不是與特定技術(shù)或特定類型的應(yīng)用綁定的。這篇文章介紹了如何為冰箱控制應(yīng)用創(chuàng)建端到端的DevOps生命周期,證明了這種理念。對(duì)于完整的自動(dòng)化CI/CD鏈,人們會(huì)予以特別關(guān)注。一旦特定應(yīng)用所面臨的挑戰(zhàn)已明確,那么這些挑戰(zhàn)就可以使用所選擇的技術(shù)棧來解決。有一些概念是通用的,能夠以技術(shù)無關(guān)的形式進(jìn)行重用。
示例應(yīng)用仿真了一個(gè)冰箱控制系統(tǒng),運(yùn)行在Raspberry PI上。針對(duì)這種IoT應(yīng)用的開發(fā)管道(pipeline)會(huì)面臨著各種挑戰(zhàn)。這種管道需要涵蓋每次check-in之后的自動(dòng)構(gòu)建、自動(dòng)化UI測(cè)試、部署到各種環(huán)境(包括生產(chǎn))并收集遙測(cè)數(shù)據(jù)。通常,UI測(cè)試是比較困難的,在設(shè)備上的自動(dòng)化測(cè)試則會(huì)更加困難。在這種環(huán)境下,DevOps所面臨的挑戰(zhàn)還包括可審核性與設(shè)備兼容性,但是這些問題在本文中并沒有解決。
針對(duì)問題中所提及的冰箱應(yīng)用,部署需要發(fā)布到測(cè)試設(shè)備(QA)和客戶的設(shè)備(生產(chǎn)環(huán)境)上。后者并不容易實(shí)現(xiàn),因?yàn)橥ǔ]有到這些設(shè)備的物理連接。在這種情況下,設(shè)備的數(shù)量會(huì)非常龐大,并且位于客戶的專屬環(huán)境中,跨越非常廣大的地理區(qū)域。最后一個(gè)需求,也就是遙測(cè),為IoT設(shè)備帶來了另外一個(gè)挑戰(zhàn),因?yàn)檫@些操作通常沒有太多的人工干預(yù),用戶沒有辦法反饋應(yīng)用運(yùn)行情況的信息。收集手動(dòng)反饋并不是可行的方案。
這里做出的技術(shù)選擇會(huì)優(yōu)化管道,而且沒有太多的定制。IoT平臺(tái)是Windows 10 IoT Core,應(yīng)用是一個(gè)Windows Universal App(UWP)。編排平臺(tái)是Visual Studio Team Services(VSTS)。VSTS有一些特性致力于簡(jiǎn)化DevOps流程。按照微軟的技術(shù)棧,這里選擇了Azure IoT Hub作為管理平臺(tái)。它用來管理和配置IoT應(yīng)用。Azure IoT Hub支持多種語言,這個(gè)應(yīng)用用到了.NET和node.js。HockeyApp是微軟在幾年前收購的,它用來從設(shè)備上收集使用和錯(cuò)誤分析數(shù)據(jù)。
圖片來源于https://blogs.msdn.microsoft.com/dmx/2017/01/26/devops-for-iot-part-1/
當(dāng)這個(gè)管道執(zhí)行時(shí),會(huì)生成新的應(yīng)用,發(fā)布流程會(huì)通知Azure IoT Hub。Hub的責(zé)任是確保新版本能夠在所有已注冊(cè)的IoT設(shè)備上下載并安裝。對(duì)于在線的設(shè)備來說,這可能會(huì)立即運(yùn)行,而對(duì)于離線的設(shè)備,則可能會(huì)有一個(gè)延遲模式。
查看英文原文:Setting up a DevOps Pipeline for an IoT Application