Skip to main content

物聯網的 DevOps︰成功的九個技巧

物聯網的興起使設計的重心從硬體轉移到了軟體。這為物聯網開發人員提供了一個機會,能採用著重於快速迭代與部署的 DevOps 原則。

但在物聯網中採用 DevOps 也可能會遇到許多挑戰。直到最近,嵌入式開發人員都還是採用硬體中心式的觀點。Canonical 行銷副總裁 Thibaut Rouffineau 說︰「他們活在一個要對 RAM 的每一個位元組進行優化的世界」。這種方法不符合 DevOps 加速交付的概念。

相反地,現代的物聯網開發人員通常具有 IT 軟體背景,擁有敏捷式開發等與 DevOps 相似的概念。他們認為硬體是一種需要管理的風險,而不是需要最佳化的資產,但這種想法也並非完全適合嵌入式設計。

舉例來說,在伺服器當機時,IT 解決方案是在另外一個伺服器上啟動一個新執行個體。由此解決問題。因為在物聯網領域中,硬體是已經部署完成,且無法快速替換的,所以無法輕易採用這種方法。

為了結合這些觀點,Rouffineau 為物聯網裝置建置人員概略指出九個實務 DevOps 課程。無論背景如何,每個課程都能提供不同程度的支援。

1. 盡可能進行標準化

對物聯網來說,第一條 DevOps 規則就是盡可能使用標準化硬體。Rouffineau 認為搭載 Intel® Atom 處理器,且具有藍牙功能的 Intel® NUC 就是一個很好的例子,很適合作為物聯網設計基礎的標準化小巧硬體平台。他表示「這很適合作為藍牙熱點、數位看板,以及工業物聯網閘道,且具有非常多的功能」。IEI Integration Corp. 使用此 NUC 作為他們 TANK-801-BT 無風扇嵌入式系統的基礎(圖 1)。

圖 1. 使用標準化硬體(如 IEI 的 TANK-801-BT 工業嵌入式系統採用 Intel® NUC)是 DevOps 的第一條規則。(資料來源:IEI)

Rouffineau 認為開發人員可能可以透過更進一步最佳化的機板省下 50 美元,但這並不划算。此外,這 NUC 還「具有執行未來應用程式的效能餘裕」。隨著客戶使用的應用程式越來越進階,再結合人工智慧 (AI),這樣的擴充性便更加重要。這也能用於開發與生產平台。

標準硬體的原則也能套用在軟體上。Rouffineau 推薦使用如 Ubuntu 等標準、經過認證的現成作業系統。「既然可以保持簡單,為何要選擇複雜?」他問。使用 Ubuntu 代表只要作業系統還在使用中,便能擁有隨時可用的技術支援。

2. 使用正確的開發工具

根據一份 Canonical 的研究,有 68% 的物聯網專家認為僱用擁有正確物聯網技能的員工很困難。但是,根據 Rouffineau 的說法,問題在於他們想要員工具有過於廣泛的技能,從後端程式編寫到硬體與商務技巧等,而想要找到同時能掌握這些專長的人幾乎是不可能的。

他說,最簡單的解決方案就是使用標準的 Linux 開發環境,如此便能更簡單地組成具有各種所需技巧的團隊。此外,若環境與裝置上的作業系統相符,就能更簡單地進行開發與部署。這樣的相容性可簡化程式編寫與除錯,並避免對全端開發人員(例如以 node.js 進行快速開發,然後使用 C 編寫程式以進行最佳化)的需求。

3. 重複使用程式碼

Rouffineau 引用 Nextcloud 的私有雲儲存作為範例,表示「重複使用程式碼是以新方法進行物聯網開發的優點之一,尤其是在使用 Linux 時」。

Nextcloud 想要開發他們儲存解決方案的小型裝置版本。透過重複使用 Ubuntu 的雲端軟體,此企業得以在三個月內便建立了 Raspberry Pi 的解決方案。

4. 使用可複製的建置程序

採用 Linux 的問題是開發人員會開始打造自己的影像,修改應用程式、共用程式庫,以及裝置驅動程式等變數。「現在,您的影像取決於影像建立人員的決定」,Rouffineau 這麼說。

為了避免這個狀況,Canonical 開發了 Ubuntu Core,將軟體封裝在「Snap」中(圖 2)。這些封裝可確保軟體擁有特定的屬性,例如︰

  • 它們為固定不變的,僅能讀取。
  • 可進行追蹤與驗證,因此可從商店內下載。
  • 可簡易升級。

圖 2. Ubuntu Core 運用「Snap」概念使用特定屬性封裝軟體,以避免 Linux 影像中的變數影響。(資料來源︰Canonical)

Snaps 的眾多優勢之一,就是讓開發人員可根據程式碼的來源切割影像。舉例來說,核心與裝置可能來自晶片製造商或作業系統廠商,並可能是由作業系統中切割出來的,而作業系統又是從上層的應用程式封裝中所切割而得。您可以使用 Ubuntu Core,透過命令列管理這整個結構。

5. 建置程序自動化

「這就是我們想從 DevOps 觀點所獲得的優勢」,Rouffineau 表示,而不是透過命令列為每個建置寫下指示。為了達到這個目的,程式碼會推送至一個中樞,為不同架構進行建置,然後再配送到裝置上。

6. 自動配送程式碼

「我們還沒有一個妥善、通用的方法,能在嵌入式空間內配送軟體」,Rouffineau 說。DevOps 解決了這個問題。使用 Ubuntu Core,處理會從將更新送入 Snap 開始,且僅會送入更新部份,而不是完整的程式碼,以避免傳輸過大的檔案(圖 3)。

圖 3. 在更新時,會將更新程式碼送入 Snap 容器中,並建立原始程式碼的複本,若測試失敗,裝置將會回復至原始的程式碼。(資料來源︰Canonical)

接下來,會將原始的 Snap 與其資料備份在目標裝置上。若在更新時發生錯誤,或是在測試升級時偵測到異常,便只要回復至原始的資料與 Snap 即可。

7. 打造長遠的安全性

自動化配送對裝置安全性格外重要。一份 Canonical 的報告指出,有 57% 的受訪者期望由服務供應商或裝置製造商來處理安全性。

裝置在第一次部署時,可能可以解決當下的所有弱點。但在一年以後,光是在 Linux 核心中就會出現超過 450 個弱點。

「DevOps 並不需要考慮這個問題,這會透過即時修復自動處理」,Rouffineau 表示。「為什麼不在這裡也利用相同的概念呢?」所有安全性修復檔案都可使用 Ubuntu 自動部署,不需要專門的人員來處理安全性問題。

8. 加速建置、部署,與測試的循環

DevOps 程序可用於持續更新裝置與避免裝置過時。「您甚至可以針對關鍵客戶進行 beta 測試」,Rouffineau 指出。使用 DevOps 的最佳實務,裝置在部署後即可開始進化,更可在客戶取得裝置後延續許久。

9. 以 DevOp 的方式運作

Rouffineau 認為應該「從您的服務價值主張開始,然後隨著客戶的需求提高而不停進化」,直到產出完美的產品。以無人機作為範例,無人機的硬體是一種「逐底競爭」,但透過加上軟體服務,便可擁有更優異的價值主張(圖 4)。

圖 4︰舉例來說,使用 DevOps 方法可使無人機製造商由單次硬體銷售,轉換至長期銷售以軟體為基礎的服務。(資料來源︰Canonical)

現在,無人機供應商可以長期銷售軟體服務,甚至驅使第三方廠商建立在無人機上執行的應用程式。或是他們可以銷售來自無人機的資料,這些方向都能讓供應商擁有更高的價值,也比較不會遭到其他低成本硬體取代。

在物聯網 DevOps 的全新世界中,可能可以由標準化硬體開始,達成更快的上市速度,以及更高的安全性和可靠度。最重要的是,您可以長期留住客戶,而不是仰賴單次的硬體銷售。對嵌入式開發人員來說,這需要心態上的轉換,但所帶來的優勢也很值得。

若要進一步瞭解此主題,請觀看「以 DevOp 方式建置物聯網裝置」網路研討會。

作者簡介

Patrick Mannion is a independent content developer and consultant who has been analyzing developments in technology for more than 25 years. Formerly Brand Director for EETimes, EDN, Embedded, Planet Analog, and Embedded.com, now part of AspenCore, he has also been developing and executing community-oriented online- and events-based engineer-to-engineer learning platforms. His focus is on connecting engineers to find novel design solutions and focused skills acquisition in the areas of Embedded, IoT, Test and Measurement, RF/Wireless, and Analog & Mixed-Signal Design.

Profile Photo of Patrick Mannion