挑战
在过去几年中,为全球旅游业提供 IT 解决方案的 Amadeus 发现,其服务导向型架构支持的 5,000 项服务需要一个新的平台。这家拥有 30 年历史的公司在德国运营着自己的数据中心,内部和外部对需要地理分散的解决方案的需求日益增长。更普遍地说,“我们的目标是实现更高的可用性,”Amadeus 分布式系统高级专家 Eric Mountain 表示。该公司的目标包括:提高基础设施管理的自动化程度,优化工作负载分配,更高效地利用数据中心资源,以及更轻松地采用新技术。
解决方案
Mountain 一直在监督公司向 Kubernetes 的迁移,使用的是 OpenShift 容器平台,这是 红帽 的企业容器平台。
影响
该团队在 Kubernetes 中部署的首批项目之一是 Amadeus 航空公司云可用性解决方案,该解决方案有助于管理不断增长的航班搜索量。“它现在每秒处理数千笔生产交易,并部署在全球多个数据中心,”Mountain 说。“这并不是现有工作负载的迁移;这是一个全新的工作负载,我们以前无法实现。这个平台让我们获得了以前没有的市场机会。”
当年,他负责公司从 Unix 到 Linux 的迁移,现在他正在监督向云原生的转变。“技术不断变化,我们欣然接受,”他说。“我们今年庆祝公司成立 30 周年,我们将继续发展和创新,以保持成本效益,并提升每个人的旅行体验,同时不中断依赖我们技术的客户的工作流程。”
这就是 Amadeus——为全球旅游业提供 IT 解决方案,从航班搜索到酒店预订再到客户反馈——在 2014 年面临的挑战。技术团队意识到,其服务导向型架构支持的 5,000 项服务需要一个新的平台。
转折点发生在他们开始收到许多内部和外部请求,要求提供需要部署在公司德国主要数据中心之外的地理位置的解决方案。“有些请求是要求在客户场所运行我们的应用程序,”Mountain 说。“我们还希望提供一些需要数百毫秒响应时间的新服务,这是我们无法通过跨大西洋流量实现的。或者至少,如果不是吞噬我们应用程序处理单个查询可用时间的很大一部分,就无法实现。”
更普遍地说,公司对提高高可用性、增加基础设施管理的自动化程度、优化工作负载分配和更有效地利用数据中心资源感兴趣。“我们有成千上万台服务器,”Mountain 说。“这些服务器被分配了角色,所以即使设置是高度自动化的,机器仍然有一个给定的角色。这在许多层面上都是浪费的。例如,一个应用程序不一定能非常优化地使用机器。虚拟化可以有所帮助,但它不是万能药。如果那台机器坏了,你仍然需要修复它,因为它有那个角色,你不能简单地说,‘好吧,我再拿一台机器来,给它那个角色。’它不快。它效率不高。所以我们想要更高层次的自动化。”
虽然 Amadeus 主要使用 C++ 和 Java,但它也希望能够更容易地采用新技术。Mountain 表示,一些开发人员已经开始使用 Python 等语言和 Couchbase 等数据库,但他希望有更多的选择,“以便更好地调整我们的技术解决方案以适应我们提供的产品,并为我们的开发人员开辟全新的可能性。”使用最新的技术和酷炫的新事物也将使吸引新人才变得更容易。
所有这些需求促使 Mountain 和他的团队寻找一个新平台。“我们在相当短的时间内进行了一系列研究和概念验证,我们考虑了许多技术,”他说。“最终,我们剩下三个选择:在本地构建所有东西,在 Kubernetes 之上构建我们认为缺少的东西,或者选择 OpenShift 并在其之上构建剩余的东西。”
团队决定不自己构建所有东西——尽管他们过去做过类似的事情——因为“人们已经发明了一些看起来不错的东西,”Mountain 说。
最终,他们选择了红帽基于 Kubernetes 的企业产品 OpenShift 容器平台,而不是在 Kubernetes 之上构建,因为“我们想要的东西与红帽预期的 OpenShift 发展方向之间存在很多协同作用,”Mountain 说。“他们显然正在开发 Kubernetes,并在 OpenShift 中提前开发了一些对我们很重要的东西,例如更高的安全性。”
希望这些特定的功能最终能内置到 Kubernetes 中,就安全性而言,Mountain 认为这已经实现了。“我们意识到,我们可能总是需要自己开发一定程度的自动化来弥补某些差距,”Mountain 说。“我们做得越少,对我们就越好。我们希望,如果我们在别人已经构建的基础上进行构建,我们所做的事情实际上可以被上游化。随着 Kubernetes 和 OpenShift 的发展,我们看到我们确实能够移除我们为了弥补早期发现的差距而实现的一些额外层。”
团队着手解决的第一个项目是他们知道必须在德国数据中心之外运行的项目。由于项目的需求,“我们不能仅仅依赖内置的 Kubernetes 服务发现;我们必须在此之上再加一层服务发现,以便在我们的系统内部实现操作层面的负载均衡,”Mountain 说。他们还建立了一个专门用于监控的流,当时 Kubernetes 或 OpenShift 生态系统中没有提供。现在 Prometheus 和其他产品已经可用,Mountain 表示公司可能会重新评估他们的监控系统:“我们显然总是喜欢利用 Kubernetes 和 OpenShift 所能提供的一切。”
第二个项目最终率先投入生产:Amadeus 航空公司云可用性解决方案,该解决方案有助于管理不断增长的航班搜索量,并部署在公共云中。Mountain 说,该解决方案于 2016 年初推出,现在“每秒处理数千笔生产交易,并部署在全球多个数据中心”。“这并不是现有工作负载的迁移;这是一个全新的工作负载,我们以前无法实现。[这个平台]让我们获得了以前没有的市场机会。”
经历了不止一次这样的技术演进,Mountain 对如何处理文化变革提出了建议。“这是一个我们可以逐步解决的方面,”他说。“我们必须继续为客户提供现有产品的新功能,并且我们必须保持现有产品正常运行。所以我们不能简单地在一天之内做所有的事情。我们也不能那样推销。”
那么,首要任务是选择一两个应用程序来证明该技术有效。Mountain 的团队没有选择高影响、高风险的项目,而是选择了一个较小的应用程序,它在复杂性方面代表了公司所有其他应用程序:“我们只是确保我们选择了一个足够复杂的应用程序,并证明它可行。”
接下来是说服人们。“在运营方面和研发方面,会有人理所当然地说,‘有系统,而且它能工作,为什么要改变?’”Mountain 说。“真正能说服人们的唯一方法是向他们展示价值。”对于 Amadeus 来说,人们意识到航空公司云可用性产品无法在公司现有系统的情况下在公共云上提供。然后问题变成了,他说,“我们是否要进行全面迁移?这样做是否合理?”
“底线是,我们想要这些多数据中心能力,而且我们也希望我们的主流系统具备这些能力,”他说。“我们不认为我们能用以前的系统实现它们。我们需要 Kubernetes 和 OpenShift 带来的新自动化、同质性和规模。”
那么,如何让所有人都参与进来呢?“确保你的研发和运营之间有良好的联系,”他说。“还要确保你尽早与投资者和利益相关者沟通。弄清楚他们会期望你什么,这将说服他们,或者不,这是你公司正确的道路。”
他的另一个建议是简单地让人们可以尝试这项技术。“Kubernetes 和 OpenShift Origin 都是开源软件,所以评估期没有复杂的许可证密钥,你也不限于 30 天,”他指出。“只管去运行它吧。”他还补充说,“你必须准备好重新思考你做事的方式。当然,让你的应用程序尽可能地云原生是你获得最大收益的方式:12 要素、CI/CD,也就是持续集成、持续交付,还有持续部署。”
在他们探索技术这方面的时候,Mountain 和他的团队很可能会身体力行他向其他踏上云原生之旅的人所宣扬的。他说:“看看当你把它弄坏时会发生什么,因为了解系统的局限性很重要。”或者更确切地说,他指出,它的优势。“弄坏 Kube 的东西实际上是它的一大优点——它会恢复。这是你唯一真正能看到你可能能够做事情的方式。”