1. 程式人生 > >全美最大炸雞餐廳告訴你,Kubernetes如何幫你吃更多的雞?

全美最大炸雞餐廳告訴你,Kubernetes如何幫你吃更多的雞?

在這篇文章中,我們將分享如何在餐館的Edge為執行中的Kubernetes構建裸機叢集以及為什麼要這樣做。

為什麼在餐館中用K8s?

  • 為什麼像Chick-fil-A這樣的餐飲公司想在Edge部署Kubernetes? 目標是什麼? 答案是:
  • 低延遲、獨立於網際網路的應用程式可以可靠地執行業務
  • 這些應用程式的高可用性
  • 該平臺可實現快速創新,並允許儘快將業務功能交付到生產中
  • 橫向擴充套件(基礎架構和應用程式開發團隊)

壓力

Chick-fil-A是一家非常成功的公司,很大程度上歸功於其出色的食品和客戶服務。

好生意為業務帶來了許多挑戰。Chick-fil-A每週六天的銷售額超過競爭對手七天的銷售額(週日休息)。Chick-fil-A的許多餐館的客流量是最初設定的三倍多。這些都是好事,但隨之而來的是與規模相關的極其困難的挑戰。

在Chick-fil-A,這些問題的解決方案是技術解決方案。

下一代工作負載

Chick-fil-A解決這些問題的方法之一是投資一個更“聰明”的餐館。

目標:為業主/運營者及其團隊簡化餐館體驗,優化美味好吃的食物,並快速且個性化地提供,同時提高現有餐廳的容納能力。

假設:通過製造更智慧的廚房裝置,可以收集更多資料。通過將資料應用到餐館,可以構建更智慧的系統。通過構建更智慧的系統,可以更好地擴充套件業務。

舉一個簡單的例子,想象一下預測模型——該模型試圖預測每一分鐘該做多少華夫餅(或用你最喜歡的Chick-fil-A產品)。預測由雲中執行的分析流程建立,該流程使用來自許多餐館的交易級銷售資料。這種預測並不難做到,但不幸的是,它不足以推動食物生產。Chick-fil-A餐館的銷售很容易飆升,並且受到當地事件(交通、體育、天氣等)的嚴重影響。

但是,如果能實時收集銷售點系統的點選資料以瞭解當前的需求,新增來自炸爐的當前庫存的資料,然後微調餐廳內的初始預測,就能夠更準確地瞭解應該在特定時刻做什麼食物。然後,該資料可用於向負責烹飪薯條(舉個例子)的餐廳團隊成員提供更智慧的顯示,或者可能用於將來推動烹飪自動化。

這樣的目標促使餐館開發了物聯網(IOT)平臺。為了成功擴充套件業務,我們需要能夠收集資料和使用資料來推動餐廳的自動化。

Chick-fil-A想要擁有一個開放式生態系統,而不是選擇來自許多不同供應商的解決方案(這些解決方案是孤立的和斷開的,因此難以整合)。這種方法支援Chick-fil-A內部開發人員和外部合作伙伴為Edge開發連線的“東西”或應用程式,並利用該平臺來滿足安全性、身份和連線等常見需求。

另一方面,IOT / Edge團隊擁有部署在邊緣的整個應用程式基礎的一小部分,並且實際上成了餐廳內計算平臺的執行時平臺團隊。

架構概述

以下是Chick-fil-A為了實現這些目標而開發的架構。

全美最大炸雞餐廳告訴你,Kubernetes如何幫你吃更多的雞?

 

控制平面

今天,Chick-fil-A在雲中執行更高階的控制平面和核心物聯網服務。這包括以下服務:

授權伺服器——裝置身份管理

資料攝取/路由——收集資料並將其傳送到需要的位置

操作時間序列資料——日誌、監控、警報、跟蹤

部署管理——使用GitOps為我們的應用團隊進行自助部署。我們計劃儘快分享我們的工作和程式碼。

這些服務也在Kubernetes中執行,因此Chick-fil-A在所有團隊的部署中都有一個共同的正規化。

邊緣

“邊緣計算”是將計算資源放在行動點附近以獲得更高級別的可用性和更少的延遲的想法。

Chick-fil-A將邊緣計算環境視為“微私有云”。通過這種方式為開發人員提供一系列有用的服務和位置,以在基礎設施上部署他們的應用程式。

這是否讓Chick-fil-A為世界上最大的“雲提供商”?你可以自行判斷。

  • 嚴肅地說,這種方法給了Chick-fil-A一種獨特的規模。Chick-fil-A將擁有超過2000個叢集,每個叢集有幾十個容器,而不是數個擁有幾十到幾十萬個容器的大型K8叢集。而且隨著我們每年開設許多新餐廳,這個數字還會顯著增長。
  • Chick-fil-A的邊緣工作負載包括:
  • 平臺服務,例如身份驗證令牌服務、釋出/訂閱訊息傳遞(MQTT)、日誌收集/洩漏(FluentBit)、監控(Prometheus)等;
  • 與餐館中的“事物”互動的應用程式;
  • 滿足HTTP請求的簡單微服務;
  • 機器學習模型,利用MQTT的實時事件綜合雲開發的預測,在邊緣做出決策並推動自動化。
  • Chick-fil-A的物理邊緣環境從多個餐廳內的交換機(和兩個路由器)獲得連線,因此在高可用的LAN上操作。
  • 今天,幾乎所有在Edge收集的資料都是暫態的,只需要在被洩露到雲之前的短時間記憶體在。這可能在未來會發生變化,但它使Chick-fil-A的早期部署非常簡單並更易於管理。
  • 由於Chick-fil-A擁有一個高度可用的Kubernetes叢集,並且所有節點都複製了資料,因此該團隊可以確保保留所有收集到的資料,直到網際網路再次可用於資料洩露為止。他們還可以根據業務需求在Edge動態地聚合、壓縮或刪除資料。
  • 鑑於所有這些,Chick-fil-A仍然首先使用雲來提供服務。Edge是高可用性、低延遲、餐館內應用程式必不可少的後備部署目標。

跟隨巨人的腳步

Chick-fil-A在商品硬體上執行其Egde基礎設施,花費是1000美元/餐館。他們希望保持低成本和水平可擴充套件的硬體投資。

藉助這樣的架構,Chick-fil-A可以根據需要通過新增其他裝置來新增額外的計算容量。未來該餐廳還會擴大其硬體空間,但現有硬體足以滿足目前的工作負載有。與此同時,谷歌也開始在商品硬體上擴充套件工作負載!

Chick-fil-A的Edge基礎設施方法正在鼓勵那些使用稀缺資源(物理空間、預算或其他方面)的人進行創造性思考!

其他的一切

Chick-fil-A還有連線層和物聯網。許多裝置都是完全供電(沒有電池),但仍然受到晶片組/處理能力的限制。Wi-Fi是連線的預設方法。他們尚未致力於低功耗協議,但對LoRa和WiFi Halo(802.11ah)專案感興趣。

對於物聯網/物理裝置,該團隊還為開發人員提供了一個SDK,用於執行入網流程(所有都是基於OAuth)和訪問Edge環境中的服務,如MQTT。

edge容器

為什麼要在Edge執行容器?出於同樣的原因,你可以在雲中(或其他任何地方)執行它們。

因為,依賴管理變得更容易;測試更容易;開發人員體驗更輕鬆、更好;團隊可以更快、更自主地移動,尤其是在應用合理的抽象點(例如k8s名稱空間)和資源限制(CPU / RAM)時。

另一個關鍵設計目標是關鍵應用程式的可靠性,這意味著架構中沒有單點故障。可以通過多種方式實現此類目標,但團隊決定在Edge上擁有多於1個的物理主機,對其擁有的工作負載型別和團隊技能組合而言,基於容器的編排層是最佳方法。

這種策略被稱為“Redundant Restaurant Compute”,它真正說明了該方法背後的目標。後來,該團隊稱之為“Edge Computing”。

能夠有效地協調服務並快速一致地保留所需數量的副本,這些能力是Kubernetes對Chick-fil-A的吸引力所在。

為何要選擇Kubernetes?

起初,Chick-fil-A計劃使用Docker Swarm進行容器編排,但是在2018年初轉向Kubernetes,因為該團隊認為Kubernetes的核心功能和周圍的生態系統(迄今為止)最強。團隊也正在利用圍繞Kubernetes的一些專案,如Istio和OpenFaaS。

Chick-fil-A團隊堅信,創意本身並沒有價值,程式碼本身沒有任何價值。

唯一有價值的是在生產中執行的程式碼。只有這樣,你才能為使用者創造價值,才有機會影響你的業務。

因此,在Chick-fil-A,人們希望優化以獲取好的想法,將它們轉換為程式碼,並儘可能快地使程式碼在生產中執行。

研究表明,使用最新、最好的技術(如Kubernetes)與團隊或組織的成功無關。一點關係也沒有。真正重要的是將想法轉化為程式碼並快速將程式碼投入生產的能力。

如果你可以通過VMWare、單個計算機、其他叢集工具或編排層,或者只使用雲實現此目標並滿足你的要求,我們不會試圖說服你切換到Kubernetes並跟隨我們的腳步。最簡單的解決方案通常是最佳解決方案。

在Chick-fil-A,人們認為實現這些目標的最佳方式是接受容器化,並與Kubernetes合作。在一天結束時,它可以幫助你“吃更多的雞”。

後續

Chick-fil-A接下來的步驟是什麼?

在接下來的18-24個月內,該團隊希望將餐廳中智慧/連線裝置的數量增加到10萬個以上,並將其在全球範圍內推出的Kubernetes完善到Edge。從邊緣控制餐廳的“大腦應用”的用例數量繼續增長,Chick-fil-A期待提供服務,並與社群分享更多知識。

Chick-fil-A還密切關注剛剛宣佈的Google GKE On-Prem服務,因為它可能會幫助其在未來建立和管理叢集。

“到目前為止我們所做的是沉沒成本,如果我們能夠將資源重新集中在差異化而非基礎設施上,那我們肯定會這樣做。”——Chick-fil-A IOT/Edge技術團隊