挑战
作为最大的女性和儿童服装在线寄售商店,ThredUP 于 2009 年推出,使用在亚马逊网络服务上运行的单体应用程序。尽管该公司在几年前开始将单体应用程序分解成微服务,但基础设施团队仍然在处理手工制作的服务器,这阻碍了生产力。联合创始人兼 CTO 克里斯·霍默说:“我们只是为了尽快推出它们而配置了它们,但没有标准化,随着我们不断发展,这成为一个越来越难管理的任务。”他们意识到,基础设施需要现代化才能实现公司所需的敏捷性。霍默补充说:“对于像我们这样的颠覆零售行业的公司来说,确保我们在构建软件并将其呈现给用户时,能够以快速循环的方式进行,并在实验中学习大量知识至关重要。”“我们希望确保我们的工程师在构建软件时能够拥抱 DevOps 思维方式。对我们来说,至关重要的一点是,他们能够从头到尾拥有整个生命周期,从设计阶段的构思,到将其交付并运行在生产环境中,从营销到电子商务,用户体验以及我们内部的配送中心运营。”
解决方案
在 2017 年初,该公司采用了 Kubernetes 进行容器编排,并在一年内将整个基础设施迁移到了 Kubernetes 上。
影响
基础设施工程师奥列克桑德·斯纳戈夫斯基说,以前,“即使考虑到我们已经拥有云基础设施、数据库、服务和所有这些好的东西”,设置一项新服务意味着要等待 2-4 周才能获得环境。有了 Kubernetes,新的应用程序推出时间已从几天或几周缩短到几分钟或几小时。基础设施工程师奥列克西·阿西乌廷说:“现在,我们的开发人员可以对现有应用程序进行实验并创建新服务,而且速度飞快。”实际上,关键服务的部署时间平均减少了约 50%。所有应用程序的“前置时间”都不到 20 分钟,使工程师能够每天部署多次。此外,3200 多个 Ansible 脚本已被 Helm 图表取代。更令人印象深刻的是,硬件成本下降了 56%,而 ThredUP 运行的服务数量却增加了一倍。
但在过去几年里,ThredUP(于 2009 年推出,使用在亚马逊网络服务上运行的单体应用程序)感受到了成长之痛,因为其用户群超过了 2000 万。虽然该公司已开始将单体应用程序分解成微服务,但基础设施团队仍然在处理手工制作的服务器,这阻碍了生产力。霍默说:“我们只是为了尽快推出它们而配置了它们,但没有标准化,随着我们不断发展,这成为一个越来越难管理的任务。”霍默意识到,基础设施需要现代化才能实现公司所需的敏捷性——以及文化。
霍默说:“我们希望确保我们的工程师在构建软件时能够拥抱 DevOps 思维方式。”“对我们来说,至关重要的一点是,他们能够从头到尾拥有整个生命周期,从设计阶段的构思,到将其交付并运行在生产环境中,从营销到电子商务,用户体验以及我们内部的配送中心运营。”
在 2017 年初,霍默在 Kubernetes 容器编排中找到了解决方案。该公司在一年内将整个基础设施迁移到了 Kubernetes 上,从其网站应用程序开始,最后是其运营后端。团队现在也使用 Fluentd 和 Helm。“最初,有些人对转向云原生技术带来的价值表示怀疑,但当我们完成这一过程时,人们很快就开始意识到拥有无缝升级和轻松回滚的好处,而无需担心发生什么,”霍默说。“它释放了开发人员快速部署、学习的信心,即使你犯了错误,也可以轻松回滚,没有任何问题。”
根据基础设施团队的说法,关键改进是 Kubernetes 为开发人员提供的始终如一的使用体验。基础设施工程师奥列克桑德·斯纳戈夫斯基说:“它可以让开发人员在与应用程序将在生产环境中运行的环境相同的环境中工作。”此外,基础设施工程师奥列克西·阿西乌廷说:“它变得更容易测试、更容易优化、更容易部署,因为所有事情都是自动完成的。”“我们团队的主要目标之一是让开发人员的生活更舒适,我们正在通过 Kubernetes 实现这一目标。他们可以对现有应用程序进行实验并创建新服务,而且速度飞快。”
斯纳戈夫斯基说,以前,“即使考虑到我们已经拥有云基础设施、数据库、服务和所有这些好的东西”,设置一项新服务意味着要等待 2-4 周才能获得环境。有了 Kubernetes,由于配置简单且对基础设施团队的依赖性很小,新应用程序的推出时间已从几天或几周缩短到几分钟或几小时。
实际上,关键服务的部署时间平均减少了约 50%。基础设施总监罗曼·切普尼说:“Kubernetes 中快速的部署和并行测试执行使所有应用程序的‘前置时间’都不到 20 分钟”,这使工程师能够每天进行多次发布。他补充说,基础设施团队的工作也变得不那么繁重了:“我们可以频繁地执行无缝升级,并保持集群性能和安全性最新,因为 Kubernetes 集群的操作系统级加固和升级对于生产运营来说是非阻塞的活动,并且不涉及与多个工程团队协调。”
3200 多个 Ansible 脚本已被 Helm 图表取代。更令人印象深刻的是,硬件成本下降了 56%,而 ThredUP 运行的服务数量却增加了一倍。
也许在零售业最繁忙的日子里,影响最为明显。霍默说:“Kubernetes 在黑色星期五等繁忙的日子里以一种无缝且易于管理的方式实现了自动扩展。”“我们不再需要坐在那里添加实例、监控流量、进行大量手动工作。这些都由我们处理,因此我们可以真正享受火鸡、喝点酒,享受与家人的时光。”
对于 ThredUP 来说,Kubernetes 非常适合该公司对改变零售业的愿景。ThredUP 做的一些事情仍然非常手动:“当我们的客户将装有商品的袋子寄到我们的配送中心时,它们会被拍照、检查、贴标签,然后在今天上线,”霍默说。
但霍默说,在所有其他方面,“我们使用不同的技术形式来驱动我们所做的一切”。“我们有机器学习算法来帮助预测商品的销售可能性,这驱动了我们的定价算法。我们有个性化算法,它们查看图像并试图确定风格,并在我们的系统中匹配用户的偏好。”
Kubernetes 也是这些驱动因素之一。霍默说:“我们的未来完全取决于自动化”,而云原生技术将释放我们拥抱自动化的能力,并全力以赴走向未来。”