挑戰
過去幾年,為全球旅遊業提供 IT 解決方案的 Amadeus 發現,其以服務導向架構為基礎的 5,000 項服務需要一個新平台。這家擁有 30 年歷史的公司在德國營運自己的資料中心,並且內部和外部對於需要地理分散的解決方案的需求不斷增長。更廣泛地說,「我們的目標是實現更高的可用性」,Amadeus 分散式系統資深專家 Eric Mountain 說道。該公司的目標包括:提高基礎架構管理的自動化程度、優化工作負載的分配、更有效率地使用資料中心資源,以及更輕鬆地採用新技術。
解決方案
Mountain 一直在監督公司遷移到 Kubernetes,並使用 OpenShift 容器平台,即 Red Hat 的企業容器平台。
影響
團隊在 Kubernetes 中部署的首批專案之一是 Amadeus 航空公司雲端可用性解決方案,該解決方案有助於管理不斷增長的航班搜尋量。「它現在在生產環境中每秒處理數千筆交易,並且已部署在全球多個資料中心」,Mountain 說。「這不是現有工作負載的遷移;而是一個我們原本無法完成的全新工作負載。[這個平台] 讓我們得以進入以前沒有的市場機會。」
早些年,他致力於公司從 Unix 遷移到 Linux,而現在他正在監督向雲端原生環境的轉型。「技術不斷變化,而我們擁抱它」,他說。「我們今年慶祝成立 30 週年,我們將繼續發展和創新,以保持成本效益並提升每個人的旅行體驗,同時不中斷依賴我們技術的客戶的工作流程。」
這就是 Amadeus 在 2014 年面臨的挑戰,Amadeus 為全球旅遊業提供從航班搜尋到飯店預訂再到客戶回饋的 IT 解決方案。技術團隊意識到,其以服務導向架構為基礎的 5,000 項服務需要一個新平台。
當他們開始收到來自內部和外部的許多請求時,轉捩點發生了,這些請求要求解決方案需要位於公司位於德國的主要資料中心之外。「有些請求是關於在客戶場所運行我們的應用程式」,Mountain 說。「我們也希望提供需要數百毫秒回應時間的新服務,而我們無法透過跨大西洋流量實現這一目標。或者至少,如果沒有侵蝕我們應用程式可用於處理個別查詢的大量時間。」
更廣泛地說,公司有興趣提高高可用性、增加基礎架構管理的自動化程度、優化工作負載的分配,以及更有效率地使用資料中心資源。「我們有成千上萬台伺服器」,Mountain 說。「這些伺服器被分配了角色,因此即使設定是高度自動化的,機器仍然具有給定的角色。這在許多層面上都是浪費。例如,應用程式不一定能最佳地使用機器。虛擬化可以提供一些幫助,但它不是萬靈丹。如果該機器故障,您仍然希望修復它,因為它具有該角色,而您不能簡單地說,『好吧,我將引入另一台機器並賦予它該角色。』這不夠快。效率不高。因此,我們想要更高層次的自動化。」
雖然 Amadeus 主要是一家 C++ 和 Java 商店,但它也希望能夠更輕鬆地採用新技術。它的一些開發人員已經開始使用像 Python 這樣的語言和像 Couchbase 這樣的資料庫,但 Mountain 希望有更多的選擇,他說,「以便更好地調整我們的技術解決方案以適應我們提供的產品,並為我們的開發人員開闢全新的可能性。」使用最新的技術和很酷的新事物也將更容易吸引新人才。
所有這些需求都引導 Mountain 和他的團隊尋找一個新平台。「我們在相當短的時間內做了一系列研究和概念驗證,並且我們考慮了許多技術」,他說。「最後,我們剩下三個選擇:完全在內部建構一切,在 Kubernetes 之上建構我們認為缺少的任何東西,或者使用 OpenShift 並在那裡建構剩餘的東西。」
團隊決定不自己建構一切,儘管他們過去曾做過這類事情,因為「人們已經在發明看起來不錯的東西」,Mountain 說。
最終,他們選擇了 OpenShift 容器平台,Red Hat 基於 Kubernetes 的企業產品,而不是在 Kubernetes 之上建構,因為「我們想要的東西與 Red Hat 預期 OpenShift 的發展方向之間存在很多協同作用」,Mountain 說。「他們顯然在開發 Kubernetes,並且在 OpenShift 中提前開發某些對我們來說很重要的東西,例如更高的安全性。」
希望是這些特定功能最終將被建置到 Kubernetes 中,並且就安全性而言,Mountain 認為這已經發生了。「我們意識到,我們可能總是需要開發一定程度的自動化來彌補某些差距」,Mountain 說。「我們做得越少,對我們越有利。我們希望如果我們以其他人建立的基礎為基礎來建構,我們所做的事情實際上可能會向上游推進。隨著 Kubernetes 和 OpenShift 的發展,我們看到我們確實能夠移除我們為了彌補早期意識到的差距而實施的一些額外層。」
團隊著手的第一個專案是他們知道必須在德國資料中心之外運行的專案。由於專案的需求,「我們不能僅僅依賴內建的 Kubernetes 服務發現;我們必須在其之上疊加一個額外的服務發現層級,以便我們能夠在系統內的操作層級進行負載平衡」,Mountain 說。他們還建構了一個專用於監控的串流,當時 Kubernetes 或 OpenShift 生態系統中沒有提供該串流。現在 Prometheus 和其他產品已經可用,Mountain 說公司可能會重新評估他們的監控系統:「我們顯然總是喜歡利用 Kubernetes 和 OpenShift 可以提供的東西。」
第二個專案最終先投入生產:Amadeus 航空公司雲端可用性解決方案,該解決方案有助於管理不斷增長的航班搜尋量,並部署在公有雲中。它於 2016 年初推出,「現在在生產環境中每秒處理數千筆交易,並且已部署在全球多個資料中心」,Mountain 說。「這不是現有工作負載的遷移;而是一個我們原本無法完成的全新工作負載。[這個平台] 讓我們得以進入以前沒有的市場機會。」
Mountain 經歷過不止一次這種技術演進,對於如何處理文化變革有一些建議。「這是我們可以逐步解決的一個方面」,他說。「我們必須繼續為我們的客戶提供我們現有產品的新功能,而且我們必須保持現有產品的正常運作。因此,我們不能簡單地從一天到另一天完成所有事情。而且我們絕不能以這種方式來推銷它。」
那麼,首要任務是選擇一兩個應用程式來證明該技術有效。Mountain 的團隊沒有選擇高影響、高風險的專案,而是選擇了一個規模較小的應用程式,該應用程式在複雜性方面代表了公司的所有其他應用程式:「我們只是確保我們選擇的東西足夠複雜,並且我們證明了它是可以做到的。」
接下來是說服人們。「在營運方面和研發方面,會有人理所當然地說,『有一個系統,而且它運作良好,那麼為什麼要改變?』」Mountain 說。「真正說服人們的唯一方法是向他們展示價值。」對於 Amadeus 來說,人們意識到航空公司雲端可用性產品無法在公司的現有系統上於公有雲上提供。然後問題就變成了,他說,「我們是否要進行全面的遷移?這是否是合理的?」
「底線是我們想要這些多資料中心功能,而且我們也希望將它們用於我們的主流系統」,他說。「而且我們認為我們無法使用之前的系統來實作它們。我們需要 Kubernetes 和 OpenShift 帶來的新的自動化、同質性和規模。」
那麼,您如何讓所有人加入?「確保您的研發部門和營運部門之間有良好的聯繫」,他說。「還要確保您盡早與投資者和利害關係人交談。弄清楚他們期望您做什麼,這將說服他們或不說服他們,這對您的公司來說是正確的方式。」
他的另一個建議很簡單,就是讓技術可用於人們試用。「Kubernetes 和 OpenShift Origin 是開放原始碼軟體,因此評估期間沒有複雜的授權金鑰,而且您也不會被限制在 30 天內」,他指出。「只需去運行它即可。」除此之外,他補充說,「您必須準備好重新思考您做事的方式。當然,盡可能地使您的應用程式成為雲端原生應用程式,是您獲得最大收益的方式:12 因素、CI/CD,即持續整合、持續交付,以及持續部署。」
當他們探索技術的那個方面時,Mountain 和他的團隊可能會實踐他向其他踏上雲端原生之旅的人所宣揚的內容。「看看當您破壞它時會發生什麼,因為了解系統的限制非常重要」,他說。或者更確切地說,他指出,它的優勢。「在 Kube 上破壞東西實際上是它的一個優點,它會恢復。這是您唯一能真正看到您可能能夠做事的方式。」