公司 Booking.com 位置 荷兰 行业 旅行

挑战

2016年,Booking.com迁移到OpenShift平台,该平台使产品开发人员可以更快地访问基础架构。但是因为Kubernetes是从开发人员那里抽象出来的,所以当出现挑战时,基础架构团队就变成了“知识瓶颈”。试图扩大支持范围是不可持续的。

在运行OpenShift一年后,平台团队决定构建自己的香草Kubernetes平台,并要求开发人员学习一些Kubernetes以便使用它。 “这不是一个神奇的平台,” B Platform Track首席开发人员Ben Tyler说。 “我们并不是说您可以闭着眼睛使用它。开发人员需要做一些学习,我们将尽一切努力确保他们可以使用这些知识。”

影响力

尽管学习过程很艰难,但采用新的Kubernetes平台的人却有了很大的增长。在开发容器之前,如果开发人员了解Puppet,则创建新服务可能需要几天时间,否则,则可能需要数周时间。在新平台上,可能只需要10分钟。在最初的8个月中,该平台上构建了大约500项新服务。

Booking.com与Kubernetes有着悠久的历史:2015年,旅行平台的一个团队对基于Mesos和Marathon的集装箱平台进行了原型设计。

该技术提供了深刻的印象,但需要大规模的企业功能(该站点平均每天要处理超过150万个客房预订),因此该团队决定采用OpenShift平台。

B Platform Track首席开发人员Ben Tyler说,该平台以Heroku风格的高级CLI界面包装,“在我们的产品开发人员中肯定很受欢迎。” “我们使他们能够更快地访问基础架构。”

但是,他补充说:“任何时候只要有些事情偏离正常,开发人员就不会拥有任何支持自己的知识。”

他说,在使用该平台一年后,基础架构团队发现它已成为“知识瓶颈”。 “使用它的大多数开发人员都不知道它的底层是Kubernetes。应用程序故障和平台故障都看起来像是Heroku风格工具的故障。”

扩展必要的支持似乎并不可行或无法持续,因此平台团队需要一个新的解决方案。他们已经了解了使用OpenShift平台所获得的Kubernetes,这使他们有信心建立自己的香草Kubernetes平台并对其进行定制以适应公司的需求。

B Platform Track的高级系统管理员Eduard Iacoboaia说:“对于进入领域,OpenShift绝对是非常有帮助的。” “它向您展示了该技术可以做什么,并且使您易于使用它。在花了一些时间之后,我们意识到我们需要更好地学习Kubernetes才能充分利用它的潜力。因此,我们已转变为构建自己的Kubernetes平台。从长远来看,我们一定会从中受益,因为我们会采取这一步骤并投入时间来获取知识。”

Iacoboaia的团队已经定制了许多OpenShift工具,使其可以在Booking.com上使用,并且“这些集成点非常脆弱,”他说。 “我们花费了更多的时间来了解Kubernetes的所有组件,它们如何工作,如何彼此交互。”这项研究使团队将OpenShift内置的Ansible剧本转换为Puppet部署,后者用于Booking的其余基础架构。由于该公司运行成千上万的裸机服务器和用于在裸机上运行应用程序的大型基础架构,因此控制平面也从集群内部转移到裸机上。 (预订在Kubernetes拥有计算能力的各个区域中的多个数据中心的多个集群中运行。)“我们决定尽可能简化它,并使用我们最了解的工具,” Iacoboaia说。

另一个重大变化是产品工程师必须学习Kubernetes才能上船。泰勒说:“这不是一个神奇的平台。” “我们并不是说您可以闭着眼睛使用它。开发人员需要做一些学习,我们将尽一切努力确保他们可以使用这些知识。”其中包括培训,博客文章,视频和Udemy课程。

尽管学习过程很艰难,但采用新的Kubernetes平台的人却有了很大的增长。泰勒说:“我认为我们之所以能够成功达成这一协议,是因为我们没有要求他们学习专有的应用程序系统。” “我们正在要求他们学习开源的知识,这些知识可以转移。他们正在通过学​​习Kubernetes来投资自己的职业。”

这种策略取得成功的一个明显迹象是,在支持渠道中,当用户有疑问时,其他产品工程师会积极响应。泰勒说:“我以前从未在内部看到过围绕特定平台产品的那种社区参与。” “这显然对公司外部的生态系统标准大有帮助,因此人们在投资于这些知识并与他人共享知识方面感到非常有价值,这确实非常强大。”

还有其他可量化的证据:在容器之前,如果开发人员了解Puppet,则创建新服务可能要花费几天,否则,则需要数周的时间。在新平台上,需要10分钟。泰勒说:“我们有一个教程。您按照教程学习。您的代码正在运行。然后,这是业务逻辑时间。” “获得资源的时间大大减少了。”在该平台的前8个月中,构建了约500个新服务,每天有数百个版本。

泰勒说,该平台提供了不同的“合同层次”。 “从根本上讲,它只是Kubernetes。如果您是Kubernetes的专业用户,那么这里就是Kubernetes API,就像您从GKE或AKS获得的一样。我们正在努力成为同一级别的提供商。但是我们的整个工作公司内部的价值要比普通基础架构更大,因此我们为Perl和Java主堆栈提供了一组基本映像。”

泰勒说:“随着我们的用户学习Kubernetes并成为更老练的Kubernetes用户,他们给我们施加了压力,要求他们提供更好的本地Kubernetes体验,这很棒。” “这是一种超级健康的动力。”

该平台还包括其他CNCF技术,例如Envoy,Helm和Prometheus。 Booking.com的大多数关键服务流量都通过Envoy路由,而Prometheus主要用于监视基础结构组件。头盔作为包装标准品消耗。该团队还开发并开源了Shipper,这是Kubernetes的扩展,以添加更复杂的部署策略和多集群业务流程。

可以肯定的是,内部已经开始讨论从头开始构建Kubernetes平台的智慧。 “这实际上不是我们的核心能力-库伯内特人和旅行,两者相距遥远,对吗?”泰勒说。 “但是,我们对CNCF组件进行了几次押注,这些押注对我们来说非常有效。特别是Envoy和Kubernetes对我们的组织确实非常有益。我们能够对其进行自定义,因为我们可以着眼于源代码,或者因为它们具有扩展点,因此我们能够非常快速地从中获得价值,而无需在内部更改任何范例。”