公司 ThredUp 地点 加利福尼亚州旧金山 行业 电子商务

挑战

ThredUp 是最大的在线女性和儿童服装寄售商店,于 2009 年推出,当时使用的是运行在 Amazon Web Services 上的单体应用程序。尽管该公司几年前就开始将单体应用分解为微服务,但基础设施团队仍然在处理手工配置的服务器,这阻碍了生产力。“我们配置这些服务器只是为了尽快推出,但没有标准化,随着我们的不断增长,管理这些服务器变得越来越费劲,”联合创始人兼首席技术官 Chris Homer 说。他们意识到,基础设施需要现代化,以满足公司所需的速度。“对于像我们这样正在颠覆零售行业的公司来说,确保我们在构建软件并将其展示给用户时,能够快速迭代并从实验中学习大量知识,这一点非常重要,”Homer 补充道。“我们希望确保我们的工程师能够在构建软件时拥抱 DevOps 的思维模式。对我们来说,他们能够拥有从端到端的生命周期至关重要,从设计概念,到交付并在生产环境中运行,从营销到电子商务,用户体验以及我们的内部配送中心运营。”

解决方案

2017 年初,该公司采用 Kubernetes 进行容器编排,并在一年内将整个基础设施迁移到了 Kubernetes。

影响

基础设施工程师 Oleksandr Snagovskyi 说,以前,“即使考虑到我们已经拥有云中的所有基础设施、数据库和服务以及所有这些好东西,”设置新服务也意味着需要等待 2-4 周才能获得环境。有了 Kubernetes,新应用程序的推出时间已从几天或几周缩短到几分钟或几小时。现在,基础设施工程师 Oleksii Asiutin 说,“我们的开发人员可以试验现有应用程序并创建新服务,并且可以非常快速地完成这一切。”实际上,关键服务的部署时间平均缩短了大约 50%。所有应用程序的“交付周期”都在 20 分钟以内,使工程师能够每天多次部署。此外,超过 3200 个 Ansible 脚本已被弃用,取而代之的是 Helm chart。令人印象深刻的是,在 ThredUp 运行的服务数量翻倍的同时,硬件成本却降低了 56%。

ThredUp 是最大的在线女性和儿童服装寄售商店,专注于让消费者首先考虑二手商品。“我们正在颠覆零售行业,对于我们来说,确保我们在构建软件并将其展示给用户时,能够快速迭代并从实验中学习大量知识,这一点非常重要,”联合创始人兼首席技术官 Chris Homer 说。

但在过去的几年里,ThredUp(于 2009 年推出,当时使用的是运行在 Amazon Web Services 上的单体应用程序)随着用户群超过 2000 万而感到日益增长的压力。尽管该公司已经开始将单体应用分解为微服务,但基础设施团队仍然在处理手工配置的服务器,这阻碍了生产力。“我们配置这些服务器只是为了尽快推出,但没有标准化,随着我们的不断增长,管理这些服务器变得越来越费劲,”Homer 说。Homer 意识到,基础设施需要现代化,以满足公司想要的速度和文化。

“我们希望确保我们的工程师能够在构建软件时拥抱 DevOps 的思维模式,”Homer 说。“对我们来说,他们能够拥有从端到端的生命周期至关重要,从设计概念,到交付并在生产环境中运行,从营销到电子商务,用户体验以及我们的内部配送中心运营。”

2017 年初,Homer 通过 Kubernetes 容器编排找到了解决方案。在一年内,该公司将其整个基础设施迁移到了 Kubernetes,首先是其网站应用程序,最后是其运营后端。团队现在也在使用 Fluentd 和 Helm。“最初,有人对迁移到云原生技术带来的价值持怀疑态度,但是当我们完成这个过程时,人们很快就开始意识到,无需担心发生什么,就可以实现无缝升级和轻松回滚的好处,”Homer 说。“它释放了开发人员快速部署、学习的能力,如果你犯了错误,你可以毫无问题地将其回滚。”

据基础设施团队称,关键的改进是 Kubernetes 为开发人员实现的一致体验。“它让开发人员可以在其应用程序将在生产环境中运行的相同环境中工作,”基础设施工程师 Oleksandr Snagovskyi 说。此外,“它变得更容易测试、更容易改进和更容易部署,因为一切都是自动完成的,”基础设施工程师 Oleksii Asiutin 说。“我们团队的主要目标之一是让开发人员的生活更舒适,我们正在通过 Kubernetes 实现这一目标。他们可以试验现有应用程序并创建新服务,并且可以非常快速地完成这一切。”

Snagovskyi 说,以前,“即使考虑到我们已经拥有云中的所有基础设施、数据库和服务以及所有这些好东西,”设置新服务也意味着需要等待 2-4 周才能获得环境。有了 Kubernetes,由于简单的配置和对基础设施团队的最小依赖,新应用程序的推出时间已从几天或几周缩短到几分钟或几小时。

实际上,关键服务的部署时间平均缩短了大约 50%。“Kubernetes 中的快速部署和并行测试执行使所有应用程序的‘交付周期’都保持在 20 分钟以内,”这使得工程师可以每天多次发布,基础设施主管 Roman Chepurnyi 说。他补充说,基础设施团队的工作也变得不那么繁重了:“我们可以频繁执行无缝升级,并保持集群性能和安全性处于最新状态,因为 Kubernetes 集群的操作系统级加固和升级对于生产运营来说是非阻塞活动,并且不涉及与多个工程团队的协调。”

超过 3200 个 Ansible 脚本已被弃用,取而代之的是 Helm chart。令人印象深刻的是,在 ThredUp 运行的服务数量翻倍的同时,硬件成本却降低了 56%。

也许这种影响在零售业最繁忙的日子里最为明显。“Kubernetes 使黑色星期五等节日的自动扩展变得无缝且易于管理,”Homer 说。“我们不再需要坐在那里添加实例、监控流量,做大量的手动工作。这已经为我们处理了,相反,我们实际上可以吃一些火鸡,喝一些葡萄酒,和家人一起享受。”

对于 ThredUp 来说,Kubernetes 完全符合公司对改变零售业的愿景。ThredUp 所做的一些事情仍然是非常手动的:“当我们的客户将装有物品的包裹发送到我们的配送中心时,它们会被拍照、检查、贴标签,并在今天上线,”Homer 说。

但在其他所有方面,“我们使用不同形式的技术来驱动我们所做的一切,”Homer 说。“我们有机器学习算法来帮助预测商品的销售可能性,这驱动了我们的定价算法。我们有个性化算法来查看图像并尝试确定风格,并在我们的系统中匹配用户的偏好。”

将 Kubernetes 视为这些驱动因素之一。“我们的未来完全是自动化,”Homer 说,“而在这背后,云原生技术将释放我们拥抱自动化并全力以赴走向未来的能力。”