由於預期 DevOps 能縮短產品開發時間,並反覆更新產品,因此已經成為 IoT 專案中最為熱門的方法。不過,並非所有專案都適合使用 DevOps,特別是在處理關鍵任務系統時。
大多數問題都需要測試。DevOps 方法的目標是要加速開發、品質保證 (QA) 與生產團隊之間的意見回饋循環。這個方法要成功,部分是經由以自動化 QA 程序取代傳統開發與品保程序,因為各項變更都部署至生產環境中。
不過仍需要即時偵測可能碰上的任何測試失敗狀況,並加以緩解,例如退出最新變更或最新版本。如果是非關鍵系統,這或許是容易管理的妥協作法,但如果是關鍵任務系統,恐怕這會是無法接受的風險。
使用模擬進行 DevOps QA 程序
另一個辦法是針對關鍵任務系統執行進階模擬,讓 QA 工程師可以在部署生產裝置之前,先在實驗室裡套用變更,並執行迴歸測試。
在很大程度上,這已經達成其目標。網路與 IoT 模擬工具供應商 Gambit Communications 技術長 Uwe Zimmermann 表示:「對於像軟體即服務 (SaaS) 這樣的非關鍵系統來說,免費試用版基本上就是一種實驗室,讓一般使用者可以執行 QA 程序。」不過,關鍵任務系統就需要進行更嚴苛的測試。
因此,目前的挑戰是要將生產系統模擬到一定程度,足以盡快偵測到問題。IoT 系統多半是從許多子系統 (通常是由第三方提供) 建構起來的,造成難以預料的相依性。因此,在一個元件上進行變更,可能會對整個系統造成連鎖反應,於是就必需經常針對整個系統執行自動化迴歸測試。
另一個挑戰是 IoT 系統的動態本質。如果在某個 IoT 網路上新增更多節點,那麼網路上的某些部分可能會更快出現瓶頸。如此一來,就可能導致非線性效能降低,需要仔細規劃能力與監控方法。
模擬不僅只是需要解決這些問題,還必需要快速解決。如果 DevOps 的意見回饋循環越短,那麼測試的時間就會越短。如此一來,問題就會變成:我們可以重新將 IoT 模擬器的速度設定到多快,以便在分配到的時間內執行迴歸測試?
此外,DevOps 將過去各自為政的團隊結合在一起,這也意味著開發與 QA 團隊之間的「高牆」已經打破,他們可以在測試計劃中一起協同合作。不過,雖然這可以加速開發,但也帶來新的壓力。「將這些障礙移除,同時也表示人多手雜,這也會造成問題。」Zimmermann 解釋道。為了讓工作順利進行,模擬器必需符合 DevOps 管道,並提供所有相關人員都可以使用的結果。
為關鍵任務 DevOps 打造更好的模擬器
Zimmermann 表示,為了滿足這些需求,模擬器必需在四個領域中出類拔萃:
- 完整性:模擬器必需涵蓋生產環境中需要測試的各方各面。這包括能夠大規模模擬複雜的情境,例如高流量、網路中斷或出現安全漏洞等。模擬器也應該能夠重現罕見但可能造成嚴重後果的不受控危機情境。
- 速度:現實世界情境可能要花個幾天、幾週甚至幾個月的時間才能展現出來。但測試人員必需在幾分鐘或幾小時內就重現這些情境,這表示模擬器必需具備高效能與高可擴充性。模擬器也必需能夠應付裝置數量可能增加,以及需求非預期激增的情況。
- 靈活性:良好的模擬器必需能夠適應任何自動化工作流程管道。這個工具需要具備靈活的 API,且支援許多種程式語言。此外,IoT 應用程式的技術一向變化快速,因此模擬器也應具備靈活性,才能不斷應付各種變化球。
- 決斷力:模擬器需要重現問題,讓多個團隊能夠一起調查並解決這些問題。對 DevOps 來說,這是必要的協同合作,讓身懷不同技能與系統知識的人都能存取程式碼。每一項變更都需要進行檢視、驗證與測試。
IoT 模擬器的目的是應付各種挑戰
因此,Gambit Communications 特別針對開發與測試網路應用程式的需求,開發了 MIMIC Simulator。許多大型組織,如 Cisco、IBM、HP 與 Intel,都已經使用這項產品好一段時間,來開發網路應用程式,而現在,為了開發 IoT 應用程式,這項工具的使用率也越來越高。
MIMIC Simulator 的主要目標是在測試中展示系統的實際互動狀況。一般來說,在 MIMIC Simulator 中建立模擬 (「模型」) 涉及記錄實際裝置 (或環境) 在測試中與系統的互動狀況。據此,MIMIC Simulator 工具會從這些記錄中推斷出一個基本模擬。
接著,使用者可以自訂此一基本模擬來達成預期效果,例如全面測試案例、邊界條件、規模、處理等等。每一種情境都會模擬一個特定狀況,而 MIMIC Simulator 可以執行各種數量的情境,例如迴歸測試套件中的各種情境。
「如果系統無法區分模擬與現實環境之間的差異,那模擬就成功了。」Zimmermann 表示。
MIMIC 模擬器最出名之處,就是能以線性方式根據 CPU 電源調整規模。這項工具可以從單一工作站模擬最多 100,000 台裝置,若是在多主機環境中,甚至可以模擬到最多 1 百萬台裝置。其設計是要與實驗室中的設備整合,以便即時控制物理實體與模擬實體。
而 Intel® 處理器就是成就其靈活性的關鍵。根據 Zimmermann 的說法,進行大型模擬需要使用至少 32 核心的 Intel® Xeon® 處理器,以及 256 GB 的 RAM。許多客戶在各種主機 (虛擬主機或實體主機都有) 上執行 MIMIC Simulator,以建立規模更大、更為動態的模擬。
Zimmermann 表示,無論是哪一種模擬,最關鍵的是與測試中系統的連結。為了確保支援 IoT 系統,Gambit Communications 已經新增一系列通用網路通訊協定,如 MQTT、CoAP 與 HTTP/S。從程式設計的角度來看,工程師可以使用 Java、C++、Go、Python、Perl、TCL、JavaScript、PHP 或 OpenAPI 來控制 MIMIC Simulator。這個工具支援經由 Docker 進行規劃,以便搭配工作流程自動化管道使用。
部署模型也同樣靈活。Zimmermann 表示,大約 60% 的使用者是在內部執行模擬,10% 的使用者則是在實體隔離實驗室中執行模擬。其他使用者則會至少在雲端上執行部分模擬,以盡可能節省成本。
針對 DevOps 工作流程進行關鍵任務模擬
正因為這種開放性與靈活性,再加上 MIMIC Simulator 的速度與決斷力,才能為關鍵任務工程團隊打造出真實可行的 DevOps QA 程序與迴歸測試。此外,為了能夠不斷反覆更新,同時縮短開發時間,技術組織也善加利用此一平台來執行各種工作,從技術訓練、銷售展示,到建立 IoT 裝置前置硬體的模型,幾乎無一不包。
現在,由於能夠執行大規模進階模擬,關鍵任務系統,以及建構這些系統的工程師,終於可以享受現代化工作流程所帶來的優勢,並以多年來與消費性裝置一樣的方式來反覆更新 IoT 範例,使其發揮最大效益。
關鍵數位轉型,就從現在開始!
本文由 insight.tech 編輯副總監 Christina Cardoza 編輯。