摘要:Serverless、微服務,這些新技術和IoT有什麼關係?縱觀IoT行業的發展,雲服務又扮演了什麼角色?
IoT並不是一個新名詞、新技術,很長一段時間,它甚至給人一種“下工地”的印象:由於IoT裝置的落地場景經常與工程環境強相關,又不容易遠端配置,所以難免“形象不佳”。
近幾年,當IoT與創新、科技、網際網路等掛鉤時,成為一個相當“新銳”的行業,尤其雲計算時代的IoT,有了許多讓老樹開新花的功能,也讓這個行業有了許多新的想象空間。
比如,Serverless、微服務,這些新技術和IoT有什麼關係?縱觀IoT行業的發展,雲服務又扮演了什麼角色?
華為云云享專家董昕以業內人的視角給出了他的理解。
董昕是個喜歡折騰的人,既在Intel、中國銀聯、Trident這樣的大公司待過,負責晶片、IoT、安全、雲計算等多個領域的技術開發;同時,他也是一個連續創業者,肩挑背扛整個公司的技術架構,所以對中小企業在資訊保安和雲計算上的緊迫感有著深刻的認知。
如今,董昕擔任國內某大型第三方支付公司的高階架構師,一直處在技術一線的他,對當前IoT行業的發展有著理性的洞察,以下是他對IoT技術發展趨勢的一些預判。
物聯網比網際網路更適合ServerlessServerless即開發人員無需再關注伺服器的運維工作,直接將程式碼部署在雲端,對外提供RESTfulAPI 即可,雲計算會自動根據請求編排資源。這種模式非常適合前端實現許多功能、後臺記錄狀態的場景,可以說是大前端發展的必然趨勢。
在董昕看來,目前各大雲服務商針對IoT裝置提供的物模型,本質上就是一種Serverless,甚至更進一步,已經是Codeless了。
沿著這個思路去考量網際網路和物聯網在Serverless上的差異,會發現 IoT 僅僅只是將聯網的主體從人改成了物,而訊息的請求與響應並無差別。甚至在大多數情況下,聯網的物比聯網的人,要更容易資料化,所需提供的服務也更單一,幾個屬性和服務就足以清晰的定義某類IoT裝置。
所以從這個角度看,物聯網比網際網路更適合Serverless這種模式,而物模型就是這種模式在IoT上的落地形式。
Serverless 的發展趨勢、優勢與目標都可以匹配IoT,比如海量接入、快速擴縮容、可移植性等等。對於物模型,我們可以做與當下的Serverless幾乎一致的暢想,把Serverless上的經驗全盤複製到IoT的場景中,比如Serverless中最迫切的程式碼可移植性問題。
站在雲服務商的角度,使用者建立了物模型,就是與雲服務商進行了強繫結。可對於普通使用者而言,物模型的可移植性,甚至是物模型的編排工作,都是要解決的難題。如同 Serverless已湧現出了數家跨雲服務商的中介軟體提供方一樣,伴隨著IoT的發展,物模型的編排將很可能將會成為開發者值得去探索的方向。
另外,在Serverless上暴露的物模型元件的繼承與複用,傳統程式碼與物模型之間的轉譯等問題,在IoT的將來都會是無邊無際的藍海,同時還有網際網路軟體的前輩們留下的寶貴經驗,廣闊天地,大有可為。
硬體正在不斷的軟體化,這個觀點早已不再新鮮,但仍未過時。軟體中的許多設計思想,都值得在硬體設計中去複製與實踐。
每個IoT裝置都是一個獨立的微服務“微服務”是軟體行業裡很熱門的一個詞,即把一個大的功能模組拆解成數個小的,然後在整個系統中,小模組可以合併、複用。微服務各司其職,大系統化整為零。
這樣做的好處很多,但維護管理眾多的微服務成了一個麻煩事,於是就有了Docker和 Google釋出的微服務治理框架Kubernetes。
延續前文提過的“硬體正在不斷的軟體化”思路,每個IoT裝置,從功能目標上看,都可以看作一個獨立的微服務,所以軟體微服務治理的那套規範一樣可以運用到IoT裝置上。
比如華為開源的KubeEdge專案——這個專案可以將容器化應用程式編排至邊緣主機上,讓每個邊緣主機化身為微服務節點。準確的說,KubeEdge並不是部署在IoT裝置上,而是針對邊緣計算端的,畢竟目前絕大多數IoT裝置的算力還不足以支援。
邊緣計算節點作為IoT閘道器,聯合各種終端IoT裝置,已經完全足夠成為一個微服務節點,也讓算力能夠提供更契合場景的定製化輸出,而非單純的依靠軟體提供標準化產品。
類似的,在邊緣節點成為硬體的微服務節點之後,軟體微服務治理的設計思想也可以移植到了邊緣計算當中,包括但不限於:CI/CD、DevOps、ServiceMesh、服務監控與追蹤,甚至AIOps等等。我們時常說的“端邊管雲”也只有在這樣的基礎上,才能真正實現無縫連線、自由組合、實時配置等。
至彼時,IoT的工作模式就彷彿人類社會分工的某種終極形態:各個終端裝置都具有能獨自解決某類問題的能力,又可以隨時與周邊的其他裝置組建團隊解決棘手的問題,還能夠從雲端實時得到更多重量級的支援——這哪裡還是以前“不受待見”的IoT開發啊,完全是一支海軍陸戰隊嘛!我來,我見,我征服。
鴻蒙之我見:江湖路遠,吾道不孤鴻蒙雖時常被拿來與安卓對比,但它實際上是為IoT裝置設計的,尤其是其模組化耦合的特性,完全是為IoT裝置量身定做的。
相對於電腦和手機,IoT裝置缺乏統一的標準協議,每種裝置都可能只具備某種特性實現為此,鴻蒙提供了對不屬性的裝置做定製化裁剪的功能,而對於硬體資源的多寡,鴻蒙又設計了多層架構,各種裝置可以根據自身資源的情況選擇不同的層數。
簡而言之,鴻蒙試圖以一站式服務的方式,為各式各樣的IoT裝置提供從底層到應用層軟體的全方位支援,讓硬體製造商擺脫了軟硬體雙線作戰的困擾,同時也為所有的 IoT 裝置統一了標準與介面。
實際上,意圖統一IoT介面標準這一野望,安卓和蘋果都曾以Android@Home和HomeKit的方式奢望過。但應者寥寥,歸根結底,具備了軟體開發能力的硬體製造商,即便是面對 Google和蘋果這樣能為其提供海量流量的巨頭,也不願惟其馬首是瞻,從而最終徹底喪失獨立性。
而在軟體上乏善可陳的製造商又難入巨頭的視野,也難堪海量流量的衝擊。於是,這種只定義介面讓廠商自行實現的方式最終淪為一場雙輸的博弈,看似風光無限,實則互相提防。
不只是系統設計,鴻蒙在功能特性上也為IoT裝置提供了豐富的想象空間,比如分散式軟匯流排。
而在鴻蒙的場景下,多個IoT之間是透過網路連線,各元件也隨時都可能下線或屬性變更。打個簡單粗暴的比方,分散式軟匯流排是要在把電腦拆散了,各個模組透過有線/無線的方式進行通訊,且都支援熱插拔的情況下,用軟體協議的方式將各個模組串接起來,同時還需確保資料安全與讀寫效率。
事實上,不止是華為,Google正在研發的新一代作業系統Fuchsia,本著一樣的目標,也在積極推進中。星辰大海,百舸爭流。
結語曾經,單獨一個IoT裝置既不起眼,還需要不少的人力維護,甚至必須到現場蹲點,實在是一個費力不討好的行當。現在,雲計算的浪潮正改變這個行業,星星之火,必將燎原。當老樹發新芽,在新技術的加權下,如何把握IoT大勢中新一輪浪潮,讓我們拭目以待。