物聯網平臺選擇難題:Azure對AWS對GCP
譯文【51CTO.com快譯】在OnRue技術解決方案公司,我們一直致力于開發DataWheels,一款專門面向個人與公共交通方向的物聯網解決方案。而作為項目起點,我們首先需要選擇理想的物聯網平臺。盡管市面上的選項眾多,但我們仍然將范圍縮小為以下三種:
一)Azure
二)Google Cloud Platform
三)AWS
另外需要提醒大家的是,本項研究完成于2016年8月的第二周,因此在閱讀本文時,各平臺的功能可能已經出現了些許變化。
一、架構成熟度
在整體解決方案層面,我們需要一款能夠實現輕松開發并具備常規REST服務、深入分析功能、消息收發隊列以及物聯網特定功能的解決方案。有鑒于此,谷歌的表現要落后于AWS與Azure。雖然谷歌的云平臺擅長托管通用型應用并在分析方面表現優異,但我們需要多路并進從而以組合性方式滿足業務需求。以下參考架構圖獲取自各相關站點。雖然我們能夠對其進行定制化調整,但作為理想的起點,改動越少顯然就越好。
谷歌參考架構 (援引自: https://cloud.google.com/solutions/iot-overview#telemetry)
AWS 參考架構 (援引自:https://aws.amazon.com/iot/how-it-works/)
Azure 物聯網架構 (援引自: https://azure.microsoft.com/en-in/documentation/articles/iot-suite-what-is-azure-iot/)
Azure還提供一項配置設定,即大家可利用自己的數據中心作為網關。只有Azure與谷歌提供流或者通道,用于簡化集成方式(AWS于今年9月發布了類似的方案)。在谷歌方面,其僅推薦使用pub/sub連接方式; 而在Azure與AWS方面,我們則擁有更多更為靈活的選項。總體來講,Azure在這一領域略占優勢,而AWS則稍稍落后。雖然我們并不需要,但我注意到只有Azure與AWS提供從云到設備的消息傳遞機制。
二、現成功能
由于我們的解決方案將供最終用戶使用,因此其必須能夠激活并停用對方的設備。我們的物聯網平臺還需要啟用高級層級驗證與安全保護機制。只有Azure與AWS提供設備層級的驗證與激活功能。這亦意味著如果選擇谷歌云平臺,我們則需要自行開發此類功能。不過,AWS不提供相關管道的狀況則會在存儲輸入數據方面帶來難題。
三、所支持協議
考慮到設備與物聯網的特性,對HTTP之外廣泛協議的支持能力就變得非常重要。在這方面,AWS與Azure支持物聯網中頻繁使用的全部協議,包括MQTT、AMQPS以及HTTP。谷歌僅支持HTTP 2與gRPC。由于我們決定采用MQTT這一行業標準協議,因此我們無需進一步測試MQTT、AMQPS以及gRPC之間的性能差異。在這種情況下,AWS與Azure的表現基本相當。
四、開發難度(SDK可用性)
在我們的產品中,我們主要使用MQTT,而HTTP僅限于少數用例。Azure與AWS面向全部主流編程語言提供用于實現設備管理與物聯網消息傳遞(利用MQTT)的SDK。在HTTP方面,現有API與語言已經足夠完成任務。谷歌亦為全部語言提供SDK,但其僅支持gRPC協議。在這項比較中,AWS與Azure仍然打了個平手。
五、支持完整堆棧
除了物聯網消息傳遞,我們亦有少數用例并非嚴格的物聯網特定機制(例如用戶登錄等)。我們希望利用部分無服務器計算功能執行此類任務,在這方面三家供應商皆提供支持。另外,我們還需要一套NoSQL數據庫,各供應商同樣給出了自己的方案。在分析與機器學習(以及使用R、Spark等主流工具)方面,Azure與AWS的表現要比谷歌好一些(不過這一點暫時存疑,由于谷歌在前文提到的幾個方面較為落后,因此我們并未就此做出實際測試)。
六、價格
我們需要了解數據庫、運行時功能成本以及數據流分析等功能的具體使用價格。另外,我們還需要了解不同數據量及數據提取率情況下產生的實際支出(取決于具體設備數量)。在NoSQL數據庫方面,我們意識到谷歌的定價明顯更高。而在消息處理方面,AWS與Azure皆以消息數量為計費單位——不過二者對于一條消息的實際大小存在不同解讀。AWS的單一消息為1 KB,Azure則為4 KB。舉例來說,如果發送一條8 KB消息,其在AWS中將被視為8條消息,而Azure則僅為4條。根據我們的實際郵件大小以及近期用戶數量計算,Azure的消息收發成本比AWS便宜約50%。
因此權衡各方面因素,我們選擇了Azure作為自身物聯網平臺。
原文標題:IoT Platform Selection: Azure vs. AWS vs. GCP,原文作者:Hariharan Anantharaman
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】