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