在由兩部分組成的系列文章的第一部分中,我們將討論現代、分布式、物聯網和物聯網數據應用程序開發、部署和持續支持所面臨的挑戰。具體涉及的是跨我們稱之為技術“孤島”的開發挑戰,以及跨云、霧和邊緣計算節點進行安全可靠部署以滿足現代應用需求的挑戰。
隨著物聯網市場的成熟,本文將考慮出現一個跨越網絡的抽象層和計算模型。這些可以從單個統一的程序員角度跨異構計算端點和通信層網絡進行應用程序和系統開發。
隨著物聯網的迅速崛起,以及物聯網設備的生產和多樣性的增加,我們已經看到創新技術大大提高了生產力和/或產生了全新的商業模式。與此同時,現代嵌入式和物聯網解決方案是分布式和異構的,硬件目標包括低功耗8位MCU,輕量級但功能強大的網絡網關以及互聯網云服務器的近乎無限的資源。
現代物聯網解決方案需要跨不同開發平臺或“孤島”的專業知識。我們使用術語“孤島”來表示分段的開發和部署流程以及實現網絡覆蓋的物聯網解決方案所需的工具。隨著開發從云轉移到系統中的嵌入式組件,需要越來越專業化和昂貴的人才,這些人才仍然被鎖定在給定的開發孤島中。這是因為開發高效、安全和可靠的嵌入式軟件仍然需要高度專業化的知識,而這些知識伴隨著陡峭且通常成本高昂的學習曲線。
很多時候,云和應用程序開發人員認為理所當然的高級抽象并沒有找到嵌入式開發的方式。也就是說,在跨多個團隊、工具和目標開發和部署功能時保持敏捷性即使不是不可能,也是很困難的——后勤挑戰減緩了產品實施和創新的步伐。
這個問題的實際體現可能是一個現代無人機平臺,包括用于數據收集的云服務器,高性能網絡網關以及本地設備上的網絡。此外,無人機本身可能由一個強大的應用處理器組成,可能運行Linux或其他操作系統,各種裸機8位MCU處理功能,如無刷電機控制,以及各種GPU,攝像頭和具有不同可編程性的硬件加速器。
許多行業參與者已經開始認識到這個快速增長的問題,例如英特爾公司,他最近表示,“嵌入式和物聯網之間的一個關鍵區別是連接性。我們正在從孤立的設備過渡到一組能夠感知周圍環境的連接設備。
“如果你考慮所有進行分析的加速器 - CPU,圖形,視頻加速器,深度學習引擎,FPGA - 你談論的是4-5種不同的編程環境。這與舊的工具環境不同。工具的完成方式必須允許開發人員盡可能無縫地在云、網關和設備的所有這些加速器之間移動工作負載和加速。
物聯網和數據
有些人可能會說,物聯網的革命也可以被認為是由DoT或物聯網數據驅動的。因此,收集、過濾、規范化、處理和存儲數據的高效、經濟的基礎設施應該是任何物聯網部署的核心。
對于許多企業而言,云已成為分析、存儲和可視化物聯網數據的主要選擇。然而,由于延遲,可用性,成本和隱私等明顯原因,大多數人都會同意某些處理需要在數據源(即物聯網設備)附近完成,其中包括邊緣和霧計算。結果是,在許多情況下,構建、部署和支持端到端 IoT 數據管道是一種平衡行為,用于決定應該在云中完成什么,哪些應該在邊緣或其他地方完成,跨越多個開發目標、生態系統和開發人員資源。
這部分是由于云中的部署是眾所周知的,特別是因為像AWS這樣的云供應商已經通過各種工具和服務進行了大規模的數據分析和渲染,變得越來越萬無一失。對于大多數企業來說,如何在邊緣最好地構建、部署和支持數據驅動的計算基礎設施仍然是一個最佳實踐,幾乎沒有指導或誤導的原則。這在一定程度上與物聯網系統的異構性有關,這些系統在硬件和軟件架構、軟件打包和安全功能方面可能大不相同。
具有類似重要性和當今該領域的一大缺失部分是以數據為中心的邊緣計算基礎架構。此類基礎設施需要能夠:
標準化 IoT 數據的引入和規范化方式
提供劃分和分配數據處理工作負載的系統方法
自動擴展數據處理任務,以適應各種數據復雜性和數量
簡化 AI/ML 推理函數的構建方式并將其部署到邊緣
開發和部署挑戰
市場上有一些袖珍解決方案可以解決其中一兩個挑戰。例如,AWS 綠草服務允許您在嵌入式邊緣網關上運行微服務(以 Lambda 函數的形式);Azure IoT Edge 提供類似功能,但顯式容器化應用的形式除外。
然而,在撰寫本文時,這些服務包含了物聯網和邊緣部署的過度簡化模型,并且在將聚合數據發送到云之前,目前無法在大型物聯網邊緣設備網絡上實現復雜的數據處理功能。
這部分是由于這些開發人員已經強烈接受了構建安全云支持的Web應用程序的復雜,敏捷的開發方法,而嵌入式世界在很大程度上已經落后了。云和應用程序開發人員認為理所當然的高級抽象在很大程度上沒有找到嵌入式開發的方式,這通常使其成為開發完整解決方案最慢最痛苦的方面。
O‘Reilly最近的一份出版物很好地總結了這一挑戰的各個方面?!吨匦滤伎季幊獭芬晃闹赋觯熬幊淌澜鐚⒃絹碓蕉嗟胤譃橛柧氂兴氐膶I人士和那些沒有深厚背景但有很多構建經驗的人。前者構建工具,框架,語言和平臺;后一組連接事物并構建網站,移動應用程序等。2
因此,我們不僅要解決系統架構(云、霧、設備/嵌入式)中各種孤島的開發挑戰,還要知道如何促進構建者以一種不需要深入了解底層硬件架構等的務實方式部署、配置、重新配置和支持這些健壯的系統。
例如,考慮部署一個包含圖 1 中體系結構的應用程序。嵌入式節點可以是低功耗的 8 位、16 位或 32 位 MCU 或 DSP 目標,需要深入了解底層硬件架構,并且通常需要牢牢掌握 C 編程語言。該器件可以與各種致動器、傳感器和串行通信協議(如 I2C、UART 等)接口。
圖 1.直接與云計算通信的嵌入式設備示例。
相反,圖 1 右側的云數據存儲通常是一個高度配置的多核服務器,具有 GB 的內存,可能運行強大的虛擬化操作系統,并執行在具有更高級編程語言的抽象框架中構建的應用程序。
云存儲可以執行數據記錄、事件處理和類似功能。
正如人們所期望的那樣,為每個設備的邏輯編程需要不同級別的底層架構知識(或者在云設備的情況下,可能根本沒有知識),使用截然不同的框架,編程語言和操作系統支持級別(或者在嵌入式節點的情況下根本沒有操作系統)。
現在考慮相同的應用程序,但部署在圖 2 所示的體系結構上。雖然該架構仍然包括嵌入式和云節點,但集成了一個霧網關,用于記錄,分析,推理或其他邏輯。該節點可以是一個精心配置的多核Linux架構,該架構C++等可編程。
圖 2.將霧與云計算相結合的嵌入式設備示例。
這當然會引發許多問題:
現有應用程序如何跨此不斷發展的體系結構進行遷移?
如果有多個嵌入式節點和/或多個霧節點,該怎么辦?
跨不同硬件目標(包括不同級別的計算資源、操作系統支持、帶寬和連接性)遷移應用程序的系統方法是什么?
此外,還必須考慮從頭開始支持安全性,不同類型的通信鏈路和開發范式。
顯然,開發、部署和持續支持的問題很快就會在孤立的體系結構中以及在組織中孤立的開發和部署團隊中得到解決!
期待
隨著物聯網和DoT應用的未來需要嵌入式計算、霧計算和云計算協同運行,項目經理和開發人員都必須注意構建和部署這些解決方案所需的人力資源和資本。
高級云開發人員可能不具備嵌入式硬件的復雜知識,并且很多時候不具備這些系統所需的系統級理解和編程技能。同樣,嵌入式開發人員很可能沒有意識到云開發中迅速出現的高級開發框架和工具。
必須注意協調許多移動部件,以實現這些系統的統一和異構開發、部署和持續支持。
然而,與此同時,孤島的集成遠遠超出了給定目標節點的開發。必須考慮設備之間的各種通信通道,以及部署給定物聯網應用程序的基礎設施的維護。此外,在應用程序部署的整個生命周期中,必須持續維護安全配置信息和安全層本身的部署。當物聯網應用程序中一個計算節點的應用程序代碼、安全層或配置更新時,不僅需要針對支持該應用程序的其他軟件和系統對其進行測試和驗證,還需要協同部署。這種迭代部署周期通常由多個互連的軟件模塊和層組成(請注意,一些是專有的,一些是第三方或開源的),必須跨開發團隊和企業進行考慮。
在本文的第 2 部分中,我們將解決給定 IoT 部署孤島中的特定開發挑戰。然后,我們進一步深入研究面向未來的潛在解決方案,這些解決方案有助于構建這些類型的孤島跨越系統,并考慮給定組織內的語言和部署方案。
審核編輯:郭婷
-
物聯網
+關注
關注
2911文章
44849瀏覽量
375386 -
服務器
+關注
關注
12文章
9265瀏覽量
85788 -
深度學習
+關注
關注
73文章
5511瀏覽量
121357
發布評論請先 登錄
相關推薦
評論