公司诺德斯特姆 位置西雅图,华盛顿 行业零售

挑战

诺德斯特龙希望提高技术运营的效率和速度,包括电子商务网站Nordstrom.com。与此同时,诺德斯特龙科技公司正在想方设法收紧技术运营成本。

解决方案

在四年前进行了DevOps转换并启动了持续集成/持续部署(CI/CD)项目后,该公司将部署时间从三个月减少到了30分钟。但是他们想要更快地跨越各种环境,所以他们开始了自己的云原生之旅,采用了与之协调的Docker容器Kubernetes

影响

为诺德斯特龙搭建Kubernetes企业平台团队的高级工程师Dhawal Patel说,使用Kubernetes的诺德斯特龙技术开发人员现在部署更快,可以“只专注于编写应用程序”。此外,该团队还提高了Ops效率,根据工作负载将CPU利用率从5倍提高到12倍。Patel说:“我们运行着数千台虚拟机,但并没有有效地利用所有这些资源。”“有了Kubernetes,我们甚至没有试图让我们的集群高效,我们目前的增长速度是10倍。”

当达瓦尔·帕特尔加入时诺德斯特姆五年前,作为零售商网站的应用程序开发人员,他意识到这是一个帮助加快开发周期的机会。

在早期的DevOps时代,诺德斯特龙技术公司仍然遵循竖井团队和功能的传统模式。Patel说:“作为一名开发人员,我花更多的时间来修复环境,而不是编写代码和为业务增加价值。”“我对此充满热情——所以我得到了帮助解决这个问题的机会。”

该公司也急于加快步伐,并在2013年推出了第一个持续集成/持续部署(CI/CD)项目。该项目是诺德斯特龙云原生之旅的第一步。

开发和运营团队成员建立了一个CI/CD管道,与公司的服务器一起工作。研究小组选择了厨师并编写了自动化虚拟IP创建、服务器和负载平衡的烹饪书。Patel说:“项目完成后,部署时间从3个月缩短到了30分钟。”“我们仍然有多个环境——开发、测试、登台,然后生产——所以在每个环境中运行Chef烹饪书,需要30分钟。这在当时是一个巨大的成就。”

但是新的环境仍然需要很长时间才能出现,所以下一步是在云中工作。如今,Nordstrom Technology已经建立了一个企业平台,该平台允许公司的1500名开发人员在Kubernetes的协同下部署以Docker容器形式运行在云中的应用程序。

Patel说:“云提供了更快的资源访问,因为我们花了数周的时间才获得虚拟机(VM)。”“但现在我们可以在5分钟内做同样的事情。”

诺德斯特龙第一次尝试在集群上调度集装箱是一个基于CoreOS舰队的自主系统。他们开始用这个系统做一些概念项目的验证,直到Kubernetes 1.0发布时他们才做出了改变。诺德斯特龙的Kubernetes团队高级经理Marius Grigoriu说:“我们打赌Kubernetes会在社区支持和项目速度的早期指标的帮助下取得成功,所以我们以Kubernetes为核心重建了我们的系统。”

虽然Kubernetes通常被认为是一个微服务平台,但在Nordstrom担任关键生产角色的Kubernetes上推出的第一个应用程序是Jira。Patel承认:“这并不是我们最初希望得到的理想的微服务,但是开发团队对Docker和Kubernetes非常感兴趣,他们想尝试一下。他们让自己的应用程序在本地运行,想把它转移到Kubernetes。”

这些好处对加入的团队来说是立竿见影的。“在我们的Kubernetes集群上运行的团队喜欢这样一个事实,即他们需要担心的问题更少。他们不需要管理基础设施或操作系统,”格里高乌说。早期的采用者喜欢Kubernetes的声明性。他们喜欢减少的表面面积,他们必须处理。”

为了支持这些早期采用者,Patel的团队开始发展集群并构建生产级服务。“我们结合普罗米修斯用于监控,用Grafana前端;我们使用Fluentd将日志推送到Elasticsearch,这就给了我们日志聚合,”Patel说。该团队还添加了数十个开源组件,包括CNCF项目,并为Kubernetes、Terraform和kube2iam做出了贡献。

现在Nordstrom Technology有超过60个开发团队在运营Kubernetes,随着成功故事的涌现,更多的团队加入进来。帕特尔说:“我们最初的客户群,那些愿意尝试这种方法的人,现在正在向下一批用户推广。”“一个早期的采用者有Docker容器,他不确定如何在生产中运行它。我们和他坐在一起,在15分钟内就将其投入生产。他认为这很了不起,他的组织里越来越多的人开始加入。”

对于诺德斯特龙技术公司来说,原生云技术极大地提高了开发和运营效率。使用Kubernetes的开发人员现在可以更快地部署,并且可以专注于在他们的应用程序中构建价值。一个这样的团队从25分钟的合并开始,通过在云中启动虚拟机进行部署。切换到Kubernetes的过程加速了5倍,将他们的合并部署时间提高到了5分钟。

速度是巨大的,而且很容易证明,但也许更大的影响在于操作效率。“我们在AWS上运行了数千个虚拟机,它们的总体平均CPU利用率约为4%,”Patel说。“使用Kubernetes,我们甚至没有尝试让我们的集群高效,我们目前的CPU利用率是40%——增加了10倍。我们正在运行2600多个客户舱,如果这些客户舱直接进入云计算,那么它们将会是2600多个虚拟机。我们现在在40个虚拟机上运行它们,所以这大大减少了运营开销。”

诺德斯特龙科技公司也在探索在裸金属上运行Kubernetes。Patel说:“如果我们可以建立一个本地库伯内特集群,我们就可以利用云的力量快速提供本地资源。”对于开发者来说,他们的界面是Kubernetes;他们甚至可能没有意识到或关心他们的服务现在部署在本地,因为他们只与Kubernetes合作。”

出于这个原因,Patel急切地追随Kubernetes多集群能力的发展。他说:“通过集群联合,我们可以将我们的内部集群作为主要集群,而云作为次要的爆发性集群。”“所以,当有周年特卖或黑色星期五特卖时,我们需要更多的集装箱——我们可以去云端。”

这种可能性——以及格里高乌和帕特尔的团队已经通过kubernetes带来的影响——是诺德斯特龙最初踏上云原生之旅的原因。格里高尤表示:“就目前的零售环境而言,我们正努力尽可能地建立响应性和灵活性。”Kubernetes简化了这一过程:提高了开发和运营两方面的效率。这是一个双赢。”