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