挑战
在过去的几年中,为全球旅游业提供 IT 解决方案的 Amadeus 发现,其面向服务的架构所支持的 5000 项服务需要一个新的平台。这家拥有 30 年历史的公司在德国运营着自己的数据中心,并且内部和外部对需要地理分散的解决方案的需求不断增长。更普遍地说,“我们的目标是实现更高的可用性,”Amadeus 分布式系统高级专家 Eric Mountain 说。该公司的目标包括:提高基础设施管理的自动化程度、优化工作负载的分配、更有效地利用数据中心资源以及更容易地采用新技术。
解决方案
Mountain 一直在监督公司向 Kubernetes 的迁移,使用 OpenShift 容器平台,Red Hat 的企业容器平台。
影响
该团队在 Kubernetes 中部署的首批项目之一是 Amadeus 航空公司云可用性解决方案,该解决方案有助于管理不断增长的航班搜索量。“它现在在生产环境中每秒处理数千笔事务,并且部署在全球多个数据中心,”Mountain 说。“这不是现有工作负载的迁移;而是一个全新的工作负载,否则我们无法完成。[此平台] 使我们能够获得以前没有的市场机会。”
早些年,他致力于公司从 Unix 到 Linux 的迁移,现在他正在监督向云原生的转变。“技术一直在变化,我们拥抱它,”他说。“今年我们庆祝成立 30 周年,我们将继续发展和创新,以保持成本效益并提升每个人的旅行体验,同时不会中断依赖我们技术的客户的工作流程。”
那是 Amadeus 在 2014 年面临的挑战,该公司为全球旅游业提供 IT 解决方案,从航班搜索到酒店预订再到客户反馈。技术团队意识到,其面向服务的架构所支持的 5000 项服务需要一个新的平台。
当他们开始收到许多内部和外部的请求,要求解决方案需要位于公司位于德国的主要数据中心之外时,转折点出现了。“有些请求是在客户场所运行我们的应用程序,”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 上破坏东西实际上是它的一大优点——它可以恢复。这是你看到你可能能够做到某些事情的唯一真正方法。”