公司BlaBlaCar 地点法国巴黎 行业ridesharing公司

挑战

世界上最大的长途拼车社区,BlaBlaCar,在22个国家连接4000万会员。自2012年以来,该公司一直经历指数增长,并需要其基础设施以跟上。“当你考虑加倍服务器的数量时,你开始思考,”我该怎么做才能更高效?“”Blablacar的基础设施工程师Simon Lallemand说。“答案是不雇用越来越多的人只是为了处理服务器和安装。”团队知道他们必须缩放平台,但想留在自己的裸机服务器上。

解决方案

BlaBlaCar团队选择不转向云虚拟化或在自己的服务器上使用私有云,因此成为了使用CoreOs运行时的容器化的早期采用者rkt.,最初使用舰队集群经理。去年,该公司转换为Kubernetes.编排,现在也使用普罗米修斯用于监测。

影响

拉勒曼德说:“在使用集装箱之前,仅仅是创建一项新服务,有时需要一天,有时需要两天。”“有了我们围绕集装箱制作的所有工具,复制一项新服务现在只需要几分钟。这确实是一个巨大的收获。我们在数据中心的容量规划方面做得更好,因为由于服务和我们运行的硬件之间的这种抽象,我们受到的约束更少。对于开发者来说,这也意味着他们只能专注于他们正在开发的功能,而不是基础设施。”

对于4000万用户BlaBlaCar在美国,很容易就能找到同路的陌生人拼车,共付车费。你甚至可以选择你想从长途骑行伙伴那里听到多少“废话”。

然而,在幕后,基础设施正在逐渐落后于骑手社区的指数增长。公司成立于2006年,该公司于2012年左右达到目前的步幅。“我们的基础设施非常传统,”基础设施工程师Simon Lallemand表示,他于2014年开始在公司工作。“一开始,这有点混乱,因为我们不得不[生长]快速。但是,当你必须设计事物以使其易于设计时,那就来到了时间。“

到2015年,该公司有大约50个裸机服务器。该团队正在使用MySQL数据库和PHP.但是,Lallemand说:“这是一种非常静态的方式。”他们还利用了配置管理系统,厨师,但在其过程中有很少的自动化。“当你考虑加倍服务器的数量时,你开始思考,”我该怎么做才能更高效?“”拉尔梅兰说。“答案是不雇用越来越多的人只是为了处理服务器和安装。”

相反,BlaBlaCar开始了自己的云原生之旅,但不确定该走哪条路。“我们可以决定进入云虚拟化,或者甚至在我们自己的服务器上使用私有云,”Lallemand说。“但进入云计算意味着我们必须在应用程序工作中做很多改变,我们只是还没有准备好从预设转向云计算。”他们想要保持在裸金属上的出色表现,所以他们不想在前提下使用虚拟化。

解决方案:集装箱化。这是2015年初,集装箱仍然比较新。“当时这是一个大胆的举动,”拉尔梅兰说。“我们决定在新数据中心购买的下一个服务器都是相同的模型,所以我们可以外包服务器的维护。我们决定与集装箱一起使用科罗斯Container Linux作为此硬件的抽象。与容器一起似乎未来的证据,因为我们可以看到公司已经与集装箱一起做了什么。“

接下来,他们需要为容器选择一个运行时,但是Lallemand说:“当时在生产中很少部署。”他们尝试了码头工人但决定去rkt..Lallemand解释说,对于BlaBlaCar来说,“集成rkt上的东西要简单得多。”当时,这个项目还是1.0版本之前的版本,所以“我们可以与rkt的开发人员交谈并给他们反馈。这是一种优势。”此外,他指出,即使在这个早期阶段,rkt也非常稳定。

一旦那些夏天进行了决定,该公司提出了一个实施计划。首先,他们形成了一个任务力量,以创建一个工作流程,该工作流将于Lallemand的团队中的10名成员中的三个测试。但是他们注意到所有10名成员都要经营常规研讨会,以确保每个人都在船上。“当你专注于你的产品时,有时候你会忘记它真的是用户友好的,是否其他人也可以设法创造容器,”Lallemand说。“所以我们做了很多迭代来寻找一个好的工作流程。”

建立工作流程后,拉勒曼德微笑着说:“我们有个奇怪的想法,我们应该先尝试最困难的事情。因为如果它有效,它将对所有事情都有效。”因此,该团队决定容器化的第一个项目是数据库。他说:“当时没有人这么做,而且我们想做的事情,包括建造集装箱图像,真的没有现成的工具。”所以团队创建了他们自己的工具,比如DGR.,它构建容器图像,以便整个团队具有共同的框架,可以在具有相同标准的同一图像上构建。他们还改造了服务发现工具神经突触;他们的版本,去神经去突触,被编写了,建立了更高效并包括新功能。所有这些工具都是开放的。

与此同时,该公司正在努力将其整个平台迁移到包含2015年圣诞节的截止日期的容器。随着所有工作并行,Blablacar能够通过其截止日期获得大约80%的生产。在12月期间运行在集装箱上的现场交通。(现在达到100%。)“这是一个非常繁忙的交通时间,”Lallemand说。“我们知道通过使用包含容器的新服务器,它将有助于我们处理交通。”

在拼车高峰期,一切都很顺利。Lallemand说:“我们最大的影响是新服务的部署。”“在使用容器之前,我们必须首先部署一个新服务器,并使用Chef创建配置。仅仅是创建一项新服务,有时需要一天,有时需要两天。有了我们在集装箱周围制作的所有工具,复制一个新服务只是几分钟的事。所以这确实是一个巨大的收获。对于开发人员来说,这意味着他们只能专注于他们正在开发的功能,而不是基础设施、测试代码或部署代码的时间。”

为了满足他们的自我强加的截止日期,他们所取得的决定之一是在第一次生产对齐中没有为容器做任何“魔术魔法”。相反,他们使用了基本的舰队从核心部署他们的容器的工具。(他们确实构建了一个名为的工具GGN.他们已经将其开源,让系统工程师更易于管理。)

尽管如此,球队还知道他们想要更多的编排。“我们的工具做得很好,但在某些时候,您希望为开发人员团队提供更多的自主,”Lallemand说。“我们还意识到,当他们想要推出新服务时,我们不想成为开发人员的单一联系人。”到2016年夏天,他们发现了他们的答案Kubernetes.,刚刚开始支持RKT实施。

在讨论他们在核心和谷歌的联系人的需求之后,他们确信Kubernetes将为Blablacar工作。“我们意识到它周围有一个非常强大的社区,这意味着我们不必保持自己的许多工具,”拉尔梅兰说。“如果我们可以为kubernetes等一些更大的项目做出贡献,那就更好了。”他们也开始使用普罗米修斯,因为他们正在寻找“可以夜间更新的服务导向监控”。Kubernetes的生产始于2016年12月。“我们喜欢在圣诞节附近做疯狂的东西,”他笑了。

Blablacar现在有大约3,000个豆荚,其中1200人在Kubernetes上运行。Lallemand领导了25名成员的“基础团队”,负责监控网络,数据库和系统约100个开发人员。达到了这一点,有一些挑战。“RKT实施仍然没有100%完成,”Lallemand指出。“这真的很好,但有一些功能仍然缺失。我们对我们如何使用有状态服务的事情,如数据库。我们知道我们将如何迁移一些服务;其他一些更复杂处理。但Kubernetes社区正在对该部分进行很大进展。“

该团队特别高兴的是,他们现在能够更好地规划公司数据中心的容量。Lallemand说:“由于我们在服务和我们运行的硬件之间进行了这种抽象,所以我们受到的约束更少。”“如果我们因为硬件问题而丢失了一台服务器,我们只需将容器转移到另一台服务器上。这样效率更高。我们只需更改配置文件中的一行即可实现这一点。而对于Kubernetes,它应该是自动的,所以我们没有什么可做的。”

这些进步最终滴下Blablacar的用户。“我们在我们的网站上有所改善,”Lallemand说。“当您正在切换到包含在容器中的所有内容时切换到此云本机模型时,您必须确保在任何时刻都可以重新启动服务器或数据容器,而无需任何停机时间,而不会失去流量。所以现在我们的基础架构很多更有弹性,我们的可用性比以前更好。“

在BlaBlaCar的技术部门,原生云已经带来了一些深刻的变化。Lallemand认为,构想阶段的定期会议和实施阶段的培训会有所帮助。“从那以后,每个人都参与了移民过程,”他说。“然后我们将组织分成不同的‘部落’——团队集合了开发人员、产品经理、数据分析师等各种不同的工作,致力于产品的特定部分。以前,它们是按功能组织的。其理念是让所有这些部落都能以自助方式直接访问基础设施,而不需要询问。这些人是真正自主的。他们对产品的这一部分负有责任,他们可以更快地做出决定。”

这个Devops转型证明是公司员工的积极之一。“该团队对Devops转型非常兴奋,因为它是新的,我们正在努力使事情更加可靠,更具未来的证据,”Lallemand说。“除了互联网巨头之外,我们喜欢做很少有人正在做的事情。”

随着这些变化已经产生了影响,Blablacar希望将越来越多的应用程序分为服务。“我不说微星,因为他们不是那么微观,”拉尔梅兰说。“如果我们可以将开发团队之间的职责分配,可以更容易管理和更可靠,因为如果失败,我们可以轻松添加和删除服务。您可以轻松地处理,而不是添加我们仍然拥有的大单线。“

当Lallemand与其他欧洲公司发表奇怪的欧洲公司时,他告诉他们乘坐骑行。“我告诉他们,与我们之前所拥有的基础设施处理我们今天的基础设施是如此愉快,”他说。“他们只需要牢记他们的真正动机,无论是在开发或可靠性方面的灵活性,然后逐步走向达到这些目标。这就是我们所做的事情。重要的是为缘故做技术很重要技术。为了一个目的而做。我们的重点是帮助开发商。“