挑戰
建置低延遲、高可靠性的基礎架構,以服務數百萬個連網智慧家庭裝置與公司消費者中樞和行動應用程式之間的通訊,重點在於水平擴展性、快速加密所有內容的能力,以及在出現問題時可以輕鬆恢復的連線。
解決方案
全面使用 Kubernetes-Docker-CoreOS Container Linux 堆疊。
影響
「兩家美國最大的零售商 [Home Depot 和 Walmart] 正在銷售和推廣該品牌和硬體,」Wink 工程主管 Kit Klein 自豪地說道,儘管他補充說「這真的帶來了很多壓力。這不是一個有很多技術愛好者的零售情況。這些是一般民眾,他們想要一些能運作的東西,並且不容忍技術上的藉口。」這進一步證明了 Klein 對 Wink 團隊已構建的基礎架構有多大的信心。Wink 80% 的工作負載在 Kubernetes-Docker-CoreOS 的統一堆疊上運行,公司已將自己置於可以持續創新和改進其產品和服務的位置。Klein 說,採用這項技術「使在基礎架構之上進行建置相對容易」。
Kit Klein 拿出手機來示範。Wink 的工程主管輕輕滑動幾下手機,調出這家位於紐約市的公司創建的智慧家庭應用程式,然後按下燈按鈕。「老實說,當你拿著手機並按下燈時,」他說,「當你感覺到手指按壓螢幕的感覺時,燈就亮了。這需要與信號傳輸到大腦的時間一樣長。」
當然,只需一根手指,不到 200 毫秒即可開燈,或鎖門或調整恆溫器。但 Wink 能夠幫助消費者如此快速和輕鬆地管理他們的連網智慧家庭產品,這要歸功於 Klein 和他的團隊使用 CoreOS 的統一堆疊(專為叢集部署設計的開源作業系統)和 Kubernetes(一個開源平台,用於自動化跨主機叢集的應用程式容器的部署、擴展和運營,提供以容器為中心的基礎架構)構建並持續開發的精密雲原生基礎架構。「當您擁有一個龐大、複雜的相互依賴的微服務網路,這些微服務需要能夠互相探索,並且需要水平可擴展且容錯時,這就是為此真正優化的,」Klein 說。「很多人最終依賴 [一些大型雲端供應商提供的] 專有服務來完成其中一些工作,但是採用 CoreOS/Kubernetes 可以讓您獲得可移植性,而不會受制於任何人。您可以真正掌握自己的命運。」
事實上,Wink 做到了。該公司的使命宣言是讓連網家庭變得平易近人,也就是說,對非技術用戶友善、價格實惠,也許最重要的是可靠。「如果您不能相信當您按下開關時,燈會亮起,或者如果您在遠端查看您的家,而資訊不準確,那麼系統的便利性就消失了,」Klein 說。「這就是基礎架構的用武之地。」
Wink 在 Quirky 內部孵化,Quirky 是一家開發群眾外包發明的公司。Wink 應用程式於 2013 年首次推出,當時它僅控制少數消費產品,例如 Quirky 與 GE 合作生產的 PivotPower Strip。隨著智慧家庭產品的普及,Wink 於 2014 年在全美 Home Depot 商店推出。它的第一個專案:一個可以與約十幾個品牌(如 Honeywell 和 Chamberlain)的智慧產品整合的中樞。最大的挑戰將是構建基礎架構,以服務所有這些中樞和產品之間的通訊,重點是最大化可靠性和最小化延遲。
「當我們最初開始時,我們快速行動,試圖將第一個產品推向市場,即最小可行產品,」Klein 說。「很多時候,您走上一條路,最終不得不回頭嘗試不同的方法。但在這種特殊情況下,我們預先做了很多工作,這導致我們做出了一個非常明智的決定,將其部署在 CoreOS Container Linux 上。而這在其生命週期的早期就發生了。」
首要考量:Wink 的產品需要連接到人們家中的消費者裝置,在防火牆後。「您沒有像 URL 這樣的端點,您甚至不知道防火牆後有哪些端口是打開的,」Klein 解釋道。「因此,您本質上需要讓這個東西喚醒並與您的系統對話,然後在雲端和裝置之間開啟即時、雙向的通訊。而非常非常重要的是它必須是持久的,因為您想要盡可能減少發送訊息的開銷——您永遠不知道什麼時候有人會開燈。」
對於最早版本的 Wink Hub,當您決定打開或關閉燈時,請求將被發送到雲端然後執行。Wink 軟體的後續更新啟用了本地控制,將許多裝置的延遲降低到約 10 毫秒。但是,隨著雲端啟用的整合,適用於不斷增長的智慧家庭產品生態系統,低延遲的網路連線仍然是一個關鍵的考量因素。
此外,Wink 還有其他需求:水平擴展性、快速加密一切的能力,以及在出現問題時可以輕鬆恢復的連線。「看看我們開始的整個結構,我們決定建立一個基於安全套接字的服務,」Klein 說。「我想說,我們一直使用某種叢集技術來部署我們的服務,因此我們得出的結論是,這個東西將會被容器化,並在 Docker 上運行。」
在 2015 年,Docker 尚未被廣泛使用,但正如 Klein 指出的那樣,「當然被那些站在技術前沿的人所理解。我們開始研究現有的潛在技術。其中一個限制因素是我們需要部署多端口非 http/https 服務。對於一些早期的叢集技術來說,並不是真的合適。我們非常喜歡這個專案,我們最終在其他東西上使用了一段時間,但最初它太針對 http 工作負載。」
一旦 Wink 的後端工程團隊決定了容器化的工作負載,他們必須就作業系統和容器編排平台做出決定。「顯然你不能只是啟動容器並希望一切順利,」Klein 笑著說。「你需要有一個系統可以幫助 [為了] 管理工作負載分發到哪裡。當容器不可避免地死掉或類似的事情發生時,要重新啟動它,你需要一個負載平衡器。需要進行各種維護工作才能擁有穩健的基礎架構。」
Wink 考慮直接在像 Ubuntu 這樣的通用 Linux 發行版上構建(這將需要安裝工具來運行容器化的工作負載)和像 Mesos 這樣的叢集管理系統(針對擁有較大團隊/工作負載的企業),但最終將目光投向 CoreOS Container Linux。「容器優化的 Linux 發行版系統正是我們需要的,」他說。「我們不必為了嘗試使用像 Linux 發行版這樣的東西並安裝所有東西而煩惱。它有一個內建的容器編排系統,即 Fleet,和一個易於使用的 API。它不像一些更重型的解決方案那樣功能豐富,但我們意識到,在那一刻,它正是我們需要的。」
Wink 的中樞(以及一個改版後的應用程式)於 2014 年 7 月推出,並進行了短期部署,在第一個月內,他們已將服務遷移到容器化的 CoreOS 部署。從那時起,他們已將幾乎所有其他基礎架構部分——從第三方雲到雲的整合到他們的客戶服務和支付入口網站——遷移到 CoreOS Container Linux 叢集上。
使用這種設定確實需要一些客製化。「Fleet 作為一個基本的容器編排系統真的很好,但它不負責服務實例之間的路由、共享配置、機密等等,」Klein 說。「當然,可以實現所有這些功能層,但如果你不想花費大量時間手動編寫單元檔案——當然沒有人會這樣做——你需要創建一個工具來自動化其中一些操作,我們確實這樣做了。」
在 Kubernetes 容器叢集管理器於 2015 年推出並與 CoreOS 核心技術整合時,Wink 迅速採用了它,並且正如承諾的那樣,它最終提供了 Wink 想要並計劃構建的功能。「如果沒有 Kubernetes,我們很可能會採用我們為我們創建的自動化工具實施的邏輯和庫,並將其用於更高級別的抽象和工具中,非 DevOps 工程師可以從命令行使用該工具來創建和管理叢集,」Klein 說。「但 Kubernetes 使這完全不必要——並且是由比我們在叢集管理方面更有經驗的人編寫和維護的,所以一切都更好。」現在,估計 Wink 80% 的工作負載在 CoreOS Container Linux 之上的 Kubernetes 上運行。
Wink 全力投入的原因很明確:「它不是專有的,它是完全開放的,它非常可攜,」Klein 說。「您可以在不同的雲端供應商之間運行所有工作負載。您可以輕鬆運行混合 AWS,甚至引入您自己的資料中心。這是在一個 Kubernetes-Docker-CoreOS Container Linux 堆疊上統一所有內容的好處。如果您只有一個 Linux 發行版需要嘗試驗證,那麼安全性優勢是巨大的。好處是巨大的,因為您可以省錢,而且可以節省時間。」
Klein 承認,每項技術決策都有取捨。「前沿技術對某些人來說會很可怕,」他說。「為了利用這一點,你真的必須跟上技術的發展。你不能把它當作一個黑盒子來對待。密切關注開發進度。理解決策制定的原因。如果您理解專案背後的意圖,從技術意圖到某種哲學意圖,那麼這有助於您理解如何與這些系統和諧地構建您的系統,而不是試圖與之對抗。」
Wink 於 2015 年被 Flex 收購,現在控制著全國各地家庭中的 230 萬個連網裝置。公司的下一步是什麼?新版本的中樞 - Wink Hub 2 - 於去年 11 月上市——並且首次在 Walmart 商店以及 Home Depot 商店提供。「兩家美國最大的零售商正在銷售和推廣該品牌和硬體,」Klein 自豪地說道,儘管他補充說「這真的帶來了很多壓力。這不是一個有很多技術愛好者的零售情況。這些是一般民眾,他們想要一些能運作的東西,並且不容忍技術上的藉口。」這進一步證明了 Klein 對 Wink 團隊已構建的基礎架構有多大的信心。
自早期以來,Wink 的工程團隊呈指數級增長,在幕後,Klein 對 Wink 正在使用的機器學習感到最興奮。「我們構建了 [一個系統],其中容器化的小數據管道部分相互饋送,並且可以有多個輸出,」他說。「這就像作為微服務的數據管道。」Klein 再次指出,在 CoreOS Container Linux 和 Kubernetes 上運行統一堆疊是未來創新的主要驅動力。「您不必每次都重新發明輪子,」他說。「您可以直接開始工作。」