公司Squarespace 位置纽约,纽约 行业软件即服务,网站建设平台

挑战

Squarespace网站可靠性团队的工程师凯文·林奇(Kevin Lynch)说,2014年从单一服务转向微服务“解决了开发方面的一个问题,但却把这个问题推给了基础架构团队。”“在5000台VM主机上部署基础设施的过程减慢了所有人的速度。”

解决方案

该团队对容器编排平台进行了实验,并发现Kubernetes“回答了我们所有的问题,”Lynch说。该公司于2016年开始在其数据中心运行Kubernetes。

影响

自从Squarespace搬到Kubernetes,再加上网络堆栈的现代化,部署时间减少了近85%。以前,他们的VM部署需要半个小时;现在,Lynch说,“有人可以生成一个模板化的应用程序,在5分钟内部署它,并将实际实例容器化,然后在我们的暂存环境中运行。”正因为如此,“生产时间是最大的成本节省,”他补充道。“当我们开始Kubernetes项目时,我们大概有12个微服务。如今,正在积极开发的项目是这一项目的两倍。”Kubernetes的弹性也得到了改善:“如果一个节点宕机,它会立即重新调度,而不会对性能造成影响。”

自从“Squarespace”于2003年在一间宿舍里创办以来,它已经让数百万人能够轻松创建自己的网站。

然而,在幕后,该公司的单片Java应用程序使其开发人员继续改进平台的事情变得不那么简单。Squarespace网站可靠性团队的工程师凯文·林奇(Kevin Lynch)说,因此在2014年,公司决定“走微服务之路”。“但我们总是在vCenter VMware虚拟机(在我们自己的数据中心)部署我们的应用程序。微服务解决了开发方面的一个问题,但它将这个问题推给了基础架构团队。在5000台VM主机上部署基础设施的过程减慢了所有人的速度。”

Lynch说,在尝试了另一个容器编排平台并“以非常痛苦的方式打破它”之后,团队在2016年年中开始用Kubernetes进行实验,发现它“回答了我们所有的问题”。将其部署到数据中心而不是公共云中是他们最大的挑战,而且当时并没有很多其他公司在这么做。“我们必须弄清楚如何在我们的基础设施中部署它,我们必须将它与我们的其他应用程序集成,”林奇说。

与此同时,Squarespace的网络工程团队正在对其网络堆栈进行现代化改造,从传统的两层网络切换到三层棘叶网络。林奇说:“这与我们想用Kubernetes做的事情完美契合。”“它使我们能够让我们的服务器直接与机架顶部的交换机通信。我们用白布为Kubernetes建立CNI网络,这样我们就可以公布所有这些Kubernetes pod的IP地址,并让它们与我们仍在虚拟机中提供的其他服务无缝集成。”

在几个月的时间里,他们有了一个稳定的集群供内部使用,并开始将Kubernetes用于生产。他们还增加了Zipkin和CNCF项目普罗米修斯fluentd到他们的云原生堆栈。Lynch说道:“我们转向Kubernetes,这是一个全新的世界,我们也修改了所有其他工具。“它让我们简化了流程,所以我们现在可以轻松地从模板创建整个微服务项目,为其生成代码和部署管道,生成Docker文件,然后立即将一个可行的、可部署的项目交付给Kubernetes。”开发/QA/Stage/产品部的部署也“大大简化”,Lynch补充道。“现在几乎没有配置变化。”

整个过程只需要5分钟,与VM部署相比减少了近85%的时间。“从头到尾大概花了半个小时,这还没有考虑到一个基础设施工程师会负责这样做的事实,所以也有一些业务延迟。”

由于部署速度更快,“生产时间大大节省了成本,”Lynch说。“我们有一个团队正在实施一项新的文件存储服务,他们刚刚开始在没有我们参与的情况下将其整合到我们的存储后端”——这在Kubernetes之前是不可能的。他补充道:“当我们开始Kubernetes项目时,我们大概有十几个微服务。如今,正在积极开发的项目是这一项目的两倍。”

这也对应用程序的弹性产生了积极的影响。他说:“当我们部署vm时,我们必须构建工具,以确保服务适当地分布在各个机架上,并且能够承受故障。”“Kubernetes就是这么做的。如果一个节点宕机,它会立即重新调度,而不会对性能造成影响。”

另一个好处是自动伸缩。“在我们使用VMware的时候,这是不可能的,”Lynch说,“但现在我们可以直接通过Kubernetes添加适当的自动伸缩功能,随着需求的增长,它也在不断扩大。这是一种突破。”

对于Kubernetes这样的人,林奇说他最好的建议是“快速失败”:“一旦你计划好了事情,就去执行。Kubernetes非常擅长快速尝试一些东西,然后看看它是否有效。”

Lynch和他的团队正计划开放他们开发的一些工具,以扩展Kubernetes,并将其本身作为API使用。第一个工具以容器的形式注入依赖的应用程序。他解释说:“当你发布一个应用程序时,它通常会附带一大堆依赖于它的应用程序,比如用于日志记录的fluentd。”使用这个工具,开发人员不需要担心配置。

未来,Squarespace的所有新服务都将进入Kubernetes,最终目标是将所有能转换的东西都转换成Kubernetes。大约四分之一的现有服务已经迁移。“我们的单片应用程序将是最后一个,因为它是如此庞大和复杂,”林奇说。“但现在我看到其他服务被转移了,比如文件存储服务。有人刚刚做到了,而且毫无痛苦。所以我相信如果我们解决了它,它可能会比我们担心的要简单得多。也许我应该听从自己的建议,迅速失败!”