挑战
Woorank 成立于 2011 年,早期就采用了微服务和容器化,因此其核心产品——一款帮助数字营销人员提高网站互联网可见度的工具——由 50 个应用程序组成,这些应用程序由 12 人的技术团队开发和维护。两年来,基础设施在 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。实施这些新工具——曾经需要数周的规划、安装和培训——现在只需要几天。De Moor 说:“通过 CNCF 旗下的所有工具和项目,我们现在比以前更容易测试和使用技术了。”“我们很早就使用了 Prometheus,但未能使其保持稳定。几个月前,这个问题再次出现,所以我们在两天内就设置好了,现在每个人都在使用它。”
部署也受到了影响:部署率翻了一倍多,De Moor 将部分原因归因于新流程的透明度。他说:“使用 Kubernetes,你会看到这三个容器因为这个原因没有启动。”此外,“现在我们将部署消息发送到 Slack。如果你每天都看到部署正在进行,这会在某种程度上间接地强制你,好的,我需要参与到这个进程中,所以我也需要部署。”
然而,最大的影响可能体现在利润上。De Moor 说:“我们在成本方面已经相当灵活,能够应对流量高峰和更高的总体负载,但有了 Kubernetes 和我们使用的其他 CNCF 工具,我们节省了大约 30% 的成本。”
而且还有更大的节省空间。目前,Woorank 的大部分基础设施都在 AWS 按需运行;公司支付固定价格,并为其所需的计划资源量进行一些预留。De Moor 计划在某些资源密集型工作负载(如网络爬虫)上更多地试验竞价实例:“我们可以将这些事情计划在某个时间线上,尝试将我们的资源使用与此相匹配,然后引入竞价实例,这有望进一步降低成本。”
迁移到 Kubernetes 对 Woorank 来说非常有益,以至于该公司正在加倍投入云原生技术和社区。De Moor 说:“对我们来说,CNCF 作为一切的保护伞无疑非常重要。”“我们一直使用开源库、工具和技术。这对我们来说非常有效,但有时事情可能会偏离轨道,维护者可能会退出,项目可能会失控。对我们来说,知道任何被纳入这个保护伞下的项目都会受到认真对待确实很重要。我们回馈社会的方式也是加入这个社区。对我们来说,这是表达我们对这个框架中正在发生的一切的感谢的一种方式。”