公司 ThredUp 地点 San Francisco, CA 行业 电子商务

挑战

ThredUP 是最大的在线女性和儿童服装寄售商店,于 2009 年启动,当时其单体应用运行在 Amazon Web Services 上。尽管公司几年前开始将单体应用分解成微服务,但基础设施团队仍然在使用手动配置的服务器,这影响了生产力。联合创始人/CTO Chris Homer 表示:“我们配置它们只是为了尽可能快地推出,但缺乏标准化,随着我们不断发展,这变得越来越难以管理。” 他们意识到,基础设施需要现代化,以支持公司所需的速度。Homer 补充道:“对于像我们这样正在颠覆零售行业的公司来说,确保我们在构建软件并将其推向用户时,能够快速迭代并在实验中学习大量东西,这非常重要。” “我们希望确保我们的工程师在构建软件时能够采纳 DevOps 思维模式。对我们来说,非常重要的是他们能够端到端地拥有生命周期,从设计时的构思,到发布并在生产环境中运行,包括从市场营销到电子商务、用户体验以及我们的内部配送中心运营。”

解决方案

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

影响

基础设施工程师 Oleksandr Snagovskyi 表示,在此之前,“即使考虑到我们已经在云中有所有基础设施、数据库和服务等所有这些优点”,建立一个新服务也意味着需要等待 2-4 周才能获得环境。使用 Kubernetes 后,新应用的上线时间从几天或几周缩短到几分钟或几小时。现在,基础设施工程师 Oleksii Asiutin 表示,“我们的开发人员可以实验现有应用并创建新服务,而且速度快得惊人。” 事实上,关键服务的部署时间平均缩短了约 50%。“前置时间”(Lead time)对于所有应用都在 20 分钟以内,使工程师能够每天部署多次。此外,3200 多个 Ansible 脚本已被弃用,转而使用 Helm Chart。更令人印象深刻的是,硬件成本下降了 56%,而 ThredUP 运行的服务数量却翻了一番。

作为最大的在线女性和儿童服装寄售商店,ThredUP 致力于让消费者优先考虑二手商品。联合创始人/CTO Chris Homer 表示:“我们正在颠覆零售行业,对我们来说,非常重要的是确保我们在构建软件并将其推向用户时,能够快速迭代并在实验中学习大量东西。”

但在过去几年中,ThredUP(于 2009 年启动,当时其单体应用运行在 Amazon Web Services 上)随着用户群突破 2000 万大关,感到了成长的烦恼。尽管公司已经开始将单体应用分解成微服务,但基础设施团队仍然在使用手动配置的服务器,这影响了生产力。Homer 表示:“我们配置它们只是为了尽可能快地推出,但缺乏标准化,随着我们不断发展,这变得越来越难以管理。” Homer 意识到,基础设施需要现代化,以支持公司所需的速度——以及文化。

Homer 说:“我们希望确保我们的工程师在构建软件时能够采纳 DevOps 思维模式。”“对我们来说,非常重要的是他们能够端到端地拥有生命周期,从设计时的构思,到发布并在生产环境中运行,包括从市场营销到电子商务、用户体验以及我们的内部配送中心运营。”

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

据基础设施团队称,关键的改进在于 Kubernetes 为开发人员提供了持续一致的体验。基础设施工程师 Oleksandr Snagovskyi 说:“这让开发人员可以在他们的应用将在生产环境中运行的同一环境中工作。”此外,“测试更容易,优化更容易,部署也更容易,因为一切都自动化完成了,”基础设施工程师 Oleksii Asiutin 说。“我们团队的主要目标之一是让开发人员的工作更轻松舒适,而我们通过 Kubernetes 正在实现这一点。他们可以实验现有应用并创建新服务,而且速度快得惊人。”

Snagovskyi 表示,在此之前,“即使考虑到我们已经在云中有所有基础设施、数据库和服务等所有这些优点”,建立一个新服务也意味着需要等待 2-4 周才能获得环境。使用 Kubernetes 后,由于配置简单且对基础设施团队的依赖极小,新应用的上线时间从几天或几周缩短到几分钟或几小时。

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

超过 3200 个 Ansible 脚本已被弃用,转而使用 Helm Chart。更令人印象深刻的是,硬件成本下降了 56%,而 ThredUP 运行的服务数量却翻了一番。

也许这种影响在零售业最繁忙的日子里最为明显。Homer 说:“Kubernetes 使得在像黑色星期五这样的日子里,能够以无缝且易于管理的方式进行自动扩缩。”“我们不再需要坐在那里添加实例、监控流量、做大量手动工作了。这些都为我们处理好了,相反,我们可以吃点火鸡、喝点酒,享受与家人在一起的时光了。”

对于 ThredUP 来说,Kubernetes 与公司改变零售业的愿景完美契合。Homer 说,ThredUP 的一些工作仍然非常依赖人工:“当我们的顾客将一袋袋物品寄到我们的配送中心时,今天这些物品就会被拍照、检查、贴标签并放到网上。”

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

可以将 Kubernetes 算作这些推动力之一。Homer 表示:“我们的未来是关于自动化,而云原生技术将解锁我们拥抱自动化并全力迈向未来的能力。”