12.17 如何為雲計算加快開發物聯網應用程序?

在JavaOne大會上,Pivotal的首席技術專家Mark Heckler介紹了一些快速在雲計算中開發新的物聯網(IoT)應用程序的最佳實踐。他的做法讓我們更容易地嘗試不同的用例,一旦其商業價值得到證實,我們就可以具體實施。

作為一個例子,Heckler解釋瞭如何為一個可再生能源監控和控制應用開發基本框架。他為他位於聖路易斯的房子開發了一個基本框架,但是同樣的原理也可被應用於可在雲計算中快捷部署的多種物聯網應用中。

其關鍵在於創建一個軟件開發工具鏈,這個工具鏈可以儘可能地為物聯網設施和雲計算後端實現代碼生成自動化。Spring Boot將有助於引入各種各樣的服務以供通信、監控、數據庫以及應用程序邏輯等應用使用。這個初始模板可被傳輸至Cloud Foundry以便於為在雲計算運行的不同服務器平臺自動生成代碼。

確保物聯網物理端的簡單化

雖然物聯網的物理端在開發物聯網應用程序中只佔據了二成,但它卻是非常重要的。工程師和架構師需要密切關注後端物聯網軟件,Heckler說。這恰恰正是其大部分價值的來源之處。

在物理端,Heckler建議其物理基礎設施應當是易於快速配置的。一個最小的物理和邏輯組件都應支持良好的可靠性、溝通方案和標準。例如,Heckler的能源監控應用使用了一個包括Arduino板、Raspberry Pi網關以及供通信使用的無線網絡連接和WebSockets協議在內的物理基礎設施。

Heckler表示,為設備思考如何提供足夠的性能而不是最佳的性能將是非常重要的,這是因為更高的性能表現往往需要更強的處理能力和提高端點的複雜性。這一策略意味著大部分的繁重處理任務都需要在雲計算中完成。Heckler說,Arduino平臺是用於驗證概念設計的一個不錯選擇,但是它缺乏低成本的通信能力。他推薦使用Raspberry Pi作為節點,因為它支持Linux和Java,而且它還具有較好的低成本通信方案。

關注標準

Heckler說,你應當儘可能地基於現有支持標準的基礎設施和工具來開發雲計算物聯網應用程序。Heckler展示了他是如何能夠通過使用Cloud Foundry來快速地開發出一個雲計算應用程序環境,從而在基於雲計算的門戶網站、節點和獨立物聯網設備之間確保交互通信都可通過REST和WebSockets實現。

Heckler使用這種方法在很短時間內就完成了他的可再生能源監控和控制系統的開發工作。這一應用的輸入包括多種不同的傳感器,而其控制輸出涉及冷卻、加熱和通風等。

儘可能多的配置

由使用一組強大的軟件工具入手,多嘗試一些不同的方法,將更易於開發和重新部署一個應用程序架構,這樣你就可以找出一個最佳方案,Heckler說。他曾在Cloud Foundry平臺上嘗試過GlassFish、WebLogic和WildFly 服務器。Heckler說,與手工自定義改寫代碼來實現現有應用程序的跨平臺移植相比,以這些服務器為目標使用現有工具來編程生成代碼是一個更好的方法。

將CloudFoundry作為後端將更易於使用相同的方法來實現在本地、內部部署或者雲計算環境中的處理和部署。這將有助於減少在開發概念設計驗證階段以及之後遷移至以生產為目的的最佳環境階段的工作量。

另一個很好的做法就是使用Spring Boot來提供自動配置和外部綁定功能,從而更易於生成Cloud Foundry初始代碼。這也更有助於選擇組件來快速集成應用程序,可部署應用程序以便於在不同目標環境中運行。從本質上來說,Spring Boot 可有助於設置被傳送至Cloud Foundry的核心框架,它可為GlassFish、WebLogic 或 WildFly服務器生成代碼。這使得開發人員能夠把更多的時間和精力關注於針對物聯網用例應用程序背後的邏輯開發中。

選擇合適的組件

Heckler還推薦使用Spring Boot Actuator,它可在Spring Boot配置過程中從價格成本角度提供監控和管理應用程序的功能。這將有助於檢查環境、查看類路徑和內存使用情況,這些功能在開發和測試階段都是非常有用的。

超文本應用程序語言可以幫助我們探索和解決與應用程序相關的API。同樣重要的是,囊括一個數據庫,或者將數據存儲在應用程序中,以便於在發生網絡中斷事件時應用程序仍能夠掌控數據。

一旦這些Spring Boot 單元被選中,那麼開發人員就能夠使用Spring Boot代碼生成工具快速地生成一個全功能(雖然可能用處也不大)的應用程序。這個應用程序可被快速導入一個Java集成開發環境中,以便於進一步實現針對某一用例的定製化。那麼,最後的結果就可以很容易地推送至一個開放工具以生成一個Gradle 或 Maven 項目。

棄用REST,使用WebSockets

REST 和 JSON非常適用於開發網絡應用程序,但是它們為物聯網應用程序帶來了相當可觀的開銷。REST消息有時候會增加數百字節的頭信息,而物聯網應用程序本身通常只會發送與測量或控制消息相關的幾個字節的信息。Heckler 建議使用WebSockets來代替前者。其開銷要小得多,此外在必要時可實現雙工通信。

你還需要開發一個WebSocket類來處理數據,這些數據可以通過擴展WebSocket處理程序來完成。Heckler說,他仍然有一個可通過REST來訪問雲計算系統的參數,但是他說,“使用它的代價如此高昂,所以我不會使用它。”

基於Spring Boot的基本框架、Cloud Foundry和一個開發工具將有助於在較短時間內針對物聯網設備完成一個雲計算應用程序的開發工作。Heckler表示,他已經把同樣的一個框架重新用於各種與企業應用相關的應用中。他建議企業重點關注使用現有工具來為物聯網應用程序開發基本的邏輯功能。而最終識別出能夠推動物聯網應用發展的用例將是一項極具挑戰性的任務。從組件入手將更易於最初的業務識別,之後就可以使用合適的架構對其進行優化。


分享到:


相關文章: