挑战
Woorank 成立于 2011 年,很早就采用了微服务和容器化技术,因此其核心产品(一种帮助数字营销人员提高网站在互联网上的可见性的工具)由 12 人技术团队开发和维护的 50 个应用程序组成。两年来,基础设施在 Mesos 上运行平稳,但“我们仍然需要推出许多自己的库,并且需要引入应用程序,因此对于我们这样的小团队来说,保持这些东西的活力并更新它们非常麻烦,”首席技术官/联合创始人 Nils De Moor 说道。因此,他开始寻找一种内置更多自动化和自愈功能的新解决方案,以更好地适应公司的人力资源。
解决方案
De Moor 决定改用在 AWS 上运行的 Kubernetes,“这使我们能够只定义应用程序、它们的运行方式、它们需要的可扩展性,而无需开发人员费心去考虑这些问题,”他说。“当出现故障和错误时,系统会尝试自我修复,这对我们来说是使用 Kubernetes 的关键原因。”该公司现在还使用 Fluentd、Prometheus 和 OpenTracing。
影响
该公司的首要担忧立即消除了:维护 Kubernetes 只需要一名员工,而且这不是一项全职工作。基础设施更新过去需要两个工作日;现在只需要“几个小时被动地遵循流程”就可以了,De Moor 说。实施新工具(曾经需要数周的计划、安装和入职)现在只需要几天时间。“我们在成本和应对流量高峰以及更高的负载方面已经非常灵活,”De Moor 补充道,“但通过 Kubernetes 和我们使用的其他 CNCF 工具,我们已经实现了大约 30% 的成本节省。”此外,每天的部署率几乎翻了一番。
“我们帮助他们获取大量数据,然后以有意义的方式将其呈现给他们,以便他们可以使用这些数据,”首席技术官/联合创始人 Nils De Moor 说道。在其作为初创公司的七年中,该公司遵循了一条熟悉的技术路径来构建该产品:从单体应用程序开始,将其分解为微服务,然后采用容器化。“这就是我们现代基础设施的起点,”De Moor 说。
随着新功能添加到产品中,它已经发展到包含 50 个应用程序。尽管 Docker 使部署变得更容易,并且该团队自 2015 年以来一直在 AWS 上使用 Mesos 作为编排框架,但 De Moor 意识到管理基础设施的开销仍然太大,尤其是在只有 12 人的技术团队的情况下。
“痛点在于,我们仍然需要推出许多自己的库,并且需要引入应用程序,因此对于我们这样的小团队来说,保持这些东西的活力并更新它们非常麻烦,”De Moor 说。“当部署过程中出现问题时,必须有人工干预并解决问题。这并不一定是技术或 Mesos 本身的问题;它只是不适合我们作为一家小公司的模式,我们没有人力资源来确保一切正常运作并可以更新。”
就在 Woorank 努力解决这些问题的时候,Kubernetes 作为一项技术正在兴起。De Moor 知道他想要一个更加自动化和自愈的平台,当他开始尝试 Kubernetes 时,他发现它满足了所有这些要求。“Kubernetes 允许我们只定义应用程序、它们的运行方式、它们需要的可扩展性,而无需开发人员费心去考虑这些问题,”他说。“当出现故障和错误时,系统会尝试自我修复,这对我们来说是使用 Kubernetes 的关键原因。它使我们能够建立某些测试框架,以便仅在出现问题时才发出警报,而不必查看一切是否正常。它使人们的生活轻松了许多。这是一个很大的思维方式转变。”
一旦一个小型 Kubernetes 集群启动并运行,团队就开始一次迁移几个应用程序,在几个月的时间里逐渐增加负载。到 2017 年初,Woorank 已 100% 部署在 Kubernetes 上。
该公司的首要担忧立即消除了:维护 Kubernetes 只需要一名员工负责,而且这不是他的全职工作。更新旧的基础设施“总是很痛苦,”De Moor 说:过去需要两个工作日,“而且我们每次这样做时都会有点害怕。”使用 Kubernetes,这只需要“几个小时被动地遵循流程”就可以了。
从代码到服务器,所有级别的透明度也是迁移到 Kubernetes 的副产品。“整个团队更容易更好地了解基础设施、它的工作方式、它的外观以及正在发生的事情,”De Moor 说。“它不再是那个正在运行的东西,除了一个人之外,没有人真正知道它是如何工作的。现在,它真的是一个团队的努力,每个人都知道,‘好吧,当出现问题时,它可能在这个区域,或者我们需要检查一下。’”
为此,Woorank 已开始实施其他有助于提高可见性的云原生工具,例如用于日志记录的 Fluentd、用于监控的 Prometheus 和用于分布式跟踪的 OpenTracing。实施这些新工具(曾经需要数周的计划、安装和入职)现在只需要几天时间。“借助 CNCF 保护伞下的所有工具和项目,我们比以往更容易测试和使用技术,”De Moor 说。“对于 Prometheus,我们很早就开始使用它,但无法使其保持稳定。几个月前,这个问题再次出现,因此我们在两天内就设置好了,现在每个人都在使用它。”
部署也受到了影响:部署率翻了一番多,De Moor 将其部分归因于新流程的透明度。“使用 Kubernetes,您可以看到这三个容器由于这个原因没有启动,”他说。另外,“现在我们将部署消息发送到 Slack 中。如果你看到部署每天都在进行,它确实会在某种程度上间接地强制你,好吧,我需要成为这列火车的一部分,所以我也需要部署。”
然而,最大的影响可能是对利润的影响。“我们在成本和应对流量高峰以及更高的负载方面已经非常灵活,但通过 Kubernetes 和我们使用的其他 CNCF 工具,我们已经实现了大约 30% 的成本节省,”De Moor 说。
而且还有更大的节省空间。目前,Woorank 的大部分基础设施都在 AWS 按需实例上运行;该公司支付固定价格,并为其计划所需的资源量进行一些预留。De Moor 计划对某些资源密集型工作负载(例如网络爬虫)更多地尝试竞价型实例:“我们可以在某个时间线上计划这些事情,尝试使我们的资源使用与其相符,然后引入竞价型实例,这有望进一步降低成本。”
迁移到 Kubernetes 对 Woorank 非常有利,以至于该公司正在加倍投入云原生技术和社区。“对我们来说,CNCF 作为所有事物的保护伞绝对重要,”De Moor 说。“我们一直在使用开源库、工具和技术。这对我们来说非常有效,但有时事情会发生变化,维护者退出,项目陷入混乱。对我们来说,重要的是要知道,任何被纳入这个保护伞下的项目都会被认真对待。我们回馈的方式也是加入这个社区。对我们来说,这是对这个框架中正在发生的事情表示感谢的一种方式。”