公司Pinterest 位置旧金山,加利福尼亚 行业网页和移动应用

挑战

成立8年后,Pinterest已经发展成为1000个微服务、多层次的基础设施以及多种设置工具和平台。2016年,该公司推出了一个新的计算平台路线图,其愿景是创建从想法到生产的最快路径,而不用让工程师担心底层的基础设施。

解决方案

第一阶段涉及到将服务移动到Docker容器中。一旦这些服务在2017年初投入生产,该团队就开始研究编排,以帮助提高效率,并以分散的方式管理它们。在评估了各种解决方案后,Pinterest选择了Kubernetes。

影响

“通过移动Kubernetes团队能够构建按需扩展和新故障转移政策,除了简化的整体部署和管理一个复杂的块詹金斯等基础设施,”迈克尔本笃说产品经理在Pinterest云计算和数据基础设施集团。“我们不仅缩短了构建时间,还大大提高了效率。例如,该团队在非高峰时段回收了超过80%的容量。因此,与以前的静态集群相比,Jenkins Kubernetes集群现在每天使用的实例小时减少了30%。”

Pinterest诞生于云之上AWS从2010年的第一天开始——即使是本土云计算公司也会经历一些成长的烦恼。

自从成立以来,Pinterest已经成为一个家喻户晓的品牌,每月有超过2亿的活跃用户,保存了1000亿件物品。实际上,有1000个微服务在运行,成千上万的数据工作在进行。

随着这种增长,出现了针对不同工作负载的基础结构层和各种设置工具和平台,导致了不一致和复杂的端到端开发人员体验,并最终降低了进入生产环境的速度。因此,在2016年,该公司推出了一个新的计算平台路线图,其愿景是拥有从想法到生产的最快路径,而不用让工程师担心底层的基础设施。

第一阶段涉及到搬到Docker。云计算和数据基础设施集团产品经理Micheal Benedict说:“Pinterest长期以来一直在EC2实例上的虚拟机上大量运行。“为了解决打包软件的问题,而不是让工程师拥有车队的一部分,以及这类挑战,我们标准化了打包机制,然后将其转移到VM的容器上。没有太多的剧烈变化。我们不想在那个时候把海洋弄得沸腾。”

第一个被迁移的服务是支撑Pinterest大部分业务的整体API。同时,Benedict的基础设施治理团队构建了退款和容量规划系统,以分析公司如何在AWS上使用虚拟机。“很明显,在vm上运行是不可持续的,”Benedict说。“很多资源没有得到充分利用。有一些效率方面的努力,在一定程度上很有效,但现在你必须转向一种更分散的管理方式。所以我们认为编曲可以帮助解决这一问题。”

这就引出了路线图的第二阶段。2017年7月,经过8周的评估,团队选择了Kubernetes而不是其他编曲平台。“当时Kubernetes缺乏某些东西——例如,我们希望Spark出现在Kubernetes上,”本尼迪克特说。“但我们意识到,无论是对Pinterest还是对社区来说,我们投入的开发周期都是值得的。我们已经在大数据SIG中进行了这些对话,我们意识到,当我们将这些东西产品化时,我们将能够充分利用社区正在做的事情。”

2018年初,该团队开始将其第一个用例纳入Kubernetes系统:Jenkins工作负载。本尼迪克特说:“虽然我们会在一天中的特定时段进行建筑,但我们总是需要分配峰值容量。”“它们没有任何自动缩放功能,所以容量保持不变。加速构建是很困难的,因为加速需要更多的时间。所以考虑到这些问题,我们认为这将是一个我们可以开发的完美案例。”

他们加强了集群,并与一个四人团队合作,使Jenkins Kubernetes集群准备好投入生产。“我们仍然有静态的Jenkins集群,”Benedict说,“但是在Kubernetes上,我们正在做类似的构建,测试整个管道,准备好工件,并只是做比较,看看在这里构建花费了多少时间。SLA是否正确,生成的工件是否正确,是否存在问题?”

“到目前为止,一切都很好,”他补充道,“尤其是我们如何在Kubernetes共享集群上配置Jenkins工作负载的灵活性。这是我们一直在争取的胜利。”

到2018年第一季度末,该团队成功地将Jenkins Master移植到Kubernetes上运行,并与Kubernetes合作詹金斯Kubernetes插件管理员工的生命周期。“我们目前正在这个新集群上构建整个Pinterest JVM堆栈(这是Pinterest最近被bazelize化的一个较大的单一操作系统),”Benedict说。“在高峰期,我们在几百个节点上运行数千个豆荚。总的来说,通过迁移到Kubernetes,团队不仅可以简化Jenkins等复杂基础设施的整体部署和管理,还可以构建按需扩展和新的故障转移策略。我们不仅看到了减少的构建时间,而且还获得了巨大的效率。例如,该团队在非高峰时段回收了超过80%的容量。因此,与以前的静态集群相比,Jenkins Kubernetes集群现在每天使用的实例小时减少了30%。”

Benedict指出未来将会有一个“相当健壮的路线图”。除了Pinterest大数据团队在Kubernetes上使用Spark进行实验外,该公司还与亚马逊的EKS团队合作开发了ENI/CNI插件。

一旦Jenkins集群启动并运行完暗模式,Benedict希望在迁移到下一个服务之前建立最佳实践,包括建立治理原基(包括与退款系统的集成)。“我们有一个健康的用例管道。在Jenkins之后,我们希望能够支持Tensorflow和Apache Spark。在某种程度上,我们的目标是移动公司的单一API服务。如果我们移动它并理解它的复杂性,它会建立我们的信心,”本尼迪克特说。“它为我们所有其他服务的迁移做好了准备。”

多年来,Pinterest一直是本地云计算的先驱,现在它渴望分享自己正在进行的旅程。本尼迪克特说:“我们可以在公共云环境中大规模运行,并以许多人可能无法做到的方式进行测试。”“我们处于有利地位,可以回馈其中一些经验教训。”

Baidu