挑战
ThredUP 是最大的女性和儿童服装在线寄售商店,成立于 2009 年,最初是一个运行在亚马逊云服务上的单体应用程序。尽管该公司几年前就开始将单体应用拆分为微服务,但基础设施团队仍在处理手工服务器,这阻碍了生产力。“我们配置它们只是为了尽快将它们推出,但没有标准化,随着我们不断发展,管理它们变得越来越繁琐,”联合创始人/首席技术官 Chris Homer 说道。他们意识到,需要对基础设施进行现代化改造,以实现公司所需的快速发展。“对于像我们这样颠覆零售行业的公司来说,确保我们在构建软件并将其交付给用户时,能够快速迭代并从实验中学习,这一点非常重要,”Homer 补充道。“我们希望确保我们的工程师在构建软件时能够拥抱 DevOps 理念。对我们来说,他们能够从头到尾拥有整个生命周期,从设计构想到交付和生产运行,从营销到电子商务、用户体验和我们内部配送中心的运营,这一点非常重要。”
解决方案
2017 年初,该公司采用 Kubernetes 进行容器编排,并在一年内将整个基础设施迁移到 Kubernetes。
影响
基础设施工程师 Oleksandr Snagovskyi 表示,以前,“即使考虑到我们已经在云中拥有所有基础设施、数据库和服务以及所有这些优势,”设置一项新服务也意味着仅仅为了获得环境就要等待 2-4 周的时间。借助 Kubernetes,新的应用程序推出时间已从几天或几周缩短到几分钟或几小时。现在,基础设施工程师 Oleksii Asiutin 表示,“我们的开发人员可以尝试现有的应用程序并创建新的服务,并且可以非常快速地完成所有这些工作。”事实上,关键服务的部署时间平均减少了约 50%。“交付时间”对于所有应用程序来说都不到 20 分钟,这使得工程师能够每天进行多次部署。此外,3200 多个 Ansible 脚本已被弃用,转而使用 Helm 图表。令人印象深刻的是,硬件成本降低了 56%,而 ThredUP 运行的服务数量却翻了一番。
但在过去几年中,ThredUP 在其用户数量突破 2000 万大关后,感受到了成长的烦恼。该公司成立于 2009 年,最初是一个运行在亚马逊云服务上的单体应用程序。尽管该公司已开始将单体应用拆分为微服务,但基础设施团队仍在处理手工服务器,这阻碍了生产力。“我们配置它们只是为了尽快将它们推出,但没有标准化,随着我们不断发展,管理它们变得越来越繁琐,”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 图表。令人印象深刻的是,硬件成本降低了 56%,而 ThredUP 运行的服务数量却翻了一番。
也许这种影响在零售业最繁忙的日子里最为明显。“Kubernetes 使我们能够在黑色星期五这样的日子里以无缝且易于管理的方式实现自动扩展,”Homer 说道。“我们不再需要坐在那里添加实例、监控流量、做很多手动工作。这些都由我们代劳了,我们可以吃点火鸡,喝点酒,享受与家人的时光。”
对于 ThredUP 来说,Kubernetes 完全符合该公司对如何改变零售业的愿景。ThredUP 所做的一些事情仍然非常依赖人工:“当我们的客户将成袋的商品送到我们的配送中心时,它们会被拍照、检查、贴标签,然后在当天上线,”Homer 说道。
但在其他所有方面,“我们都使用不同形式的技术来推动我们所做的一切,”Homer 说道。“我们有机器学习算法来帮助预测商品的销售可能性,这推动了我们的定价算法。我们有根据图像确定风格并在我们系统中匹配用户偏好的个性化算法。”
将 Kubernetes 视为其中一个驱动力。“我们的未来完全取决于自动化,”Homer 说道,“而在这背后,云原生技术将释放我们拥抱自动化并全力走向未来的能力。”