挑战
作为最大的女装和童装在线寄售商店,ThredUP 于 2009 年成立,其单体应用程序运行在 Amazon Web Services 上。尽管该公司几年前开始将单体应用程序拆分为微服务,但基础设施团队仍然在处理手工配置的服务器,这阻碍了生产力。联合创始人兼首席技术官 Chris Homer 表示:“我们只是为了尽快推出而配置它们,但没有标准化,随着我们的不断发展,管理起来变得越来越繁琐。”他们意识到,基础设施需要现代化,以实现公司所需的速度。Homer 补充说:“对于我们这样颠覆零售业的公司来说,确保我们在构建软件并将其推向用户时,能够快速迭代并从实验中学习,这非常重要。我们希望确保我们的工程师在构建软件时能够采纳 DevOps 思维。对我们来说,他们能够从设计构思到发布并在生产中运行,从营销到电子商务,用户体验以及我们内部配送中心运营,端到端地拥有整个生命周期,这非常重要。”
解决方案
2017 年初,公司采用了 Kubernetes 进行容器编排,并在一年内将整个基础设施迁移到 Kubernetes。
影响
“以前,即使我们已经拥有云端的所有基础设施、数据库和服务等所有这些好东西,”基础设施工程师 Oleksandr Snagovskyi 说,“设置一个新服务也意味着要等待 2-4 周才能获得环境。”有了 Kubernetes,新应用程序的发布时间从几天或几周缩短到几分钟或几小时。现在,基础设施工程师 Oleksii Asiutin 说,“我们的开发人员可以试验现有应用程序并创建新服务,所有这些都可以以惊人的速度完成。”事实上,关键服务的部署时间平均减少了大约 50%。“所有应用程序的‘交付周期’都在 20 分钟以内,这使得工程师每天可以多次部署。此外,3200 多个 Ansible 脚本已被 Helm charts 取代。令人印象深刻的是,硬件成本降低了 56%,而 ThredUP 运行的服务数量却增加了一倍。
但在过去几年里,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%。“Kubernetes 中快速部署和并行测试执行使得所有应用程序的‘交付周期’都在 20 分钟以内,”基础设施总监 Roman Chepurnyi 说,这使得工程师每天可以进行多次发布。他补充说,基础设施团队的工作负担也减轻了:“我们可以频繁地执行无缝升级,并保持集群性能和安全性最新,因为 Kubernetes 集群的操作系统级别强化和升级是非阻塞性的生产操作,不涉及与多个工程团队的协调。”
超过 3,200 个 Ansible 脚本已被 Helm charts 取代。令人印象深刻的是,硬件成本降低了 56%,而 ThredUP 运行的服务数量却增加了一倍。
也许在零售业最繁忙的日子里,这种影响最为明显。“Kubernetes 在‘黑色星期五’等日子里,能够以无缝且易于管理的方式实现自动扩缩,”Homer 说。“我们不再需要坐着添加实例、监控流量,做大量的手动工作。这一切都由它来处理,而我们则可以吃火鸡、喝葡萄酒,享受与家人在一起的时光。”
对于 ThredUP 而言,Kubernetes 与公司改变零售业的愿景完美契合。ThredUP 的一些工作仍然非常依赖人工:“当我们的客户将一袋袋物品送到我们的配送中心时,它们会被拍照、检查、贴标签,并立即上线,”Homer 说。
但在其他所有方面,“我们使用不同形式的技术来驱动我们所做的一切,”Homer 说。“我们有机器学习算法来帮助预测商品的销售可能性,这驱动了我们的定价算法。我们有个性化算法,可以查看图像并尝试确定风格,并在我们的系统中匹配用户的偏好。”
Kubernetes 是这些驱动因素之一。“我们的未来是关于自动化的,”Homer 说,“而在此背后,云原生技术将释放我们拥抱自动化并全力迈向未来的能力。”