公司Zalando 位置柏林,德国 行业在线时装

挑战

Zalando是欧洲领先的在线时尚平台,自2008年成立以来经历了指数级增长。2015年,Zalando计划进一步扩大其原有的电子商务网站,包括新的服务和产品激进的转换产生自主的、自组织的团队。这种变化需要一个可以随着工程组织的增长而扩展的基础设施。Zalando的技术部门开始重写其应用程序,使其可以用于云计算,并开始将其基础设施从本地数据中心转移到云计算上。当团队迁移到亚马逊网络服务(AWS):“我们看到了团队在AWS的基础设施和云形成方面的痛苦,”开发效率主管亨宁·雅各布斯(Henning Jacobs)说。“对于团队和合规来说,仍然有太多的运营开销。”为了提供更好的支持,引入了集群管理。

解决方案

该公司现在使用Kubernetes编排在AWS上运行Docker容器。

影响

在旧的基础架构下,“很难正确地接受新技术,DevOps团队被认为是一个瓶颈,”Jacobs说。“现在,有了这个云基础设施,他们有了这种打包格式,可以包含在Linux内核上运行的任何东西。这让很多人很开心。工程师喜欢自主。”

当亨宁·雅各布斯(Henning Jacobs) 2010年进入Zalando时,这家公司才成立两年,只有180名员工,经营着一家面向欧洲消费者购买时装的在线商店。

Zalando的开发效率主管Jacobs说:“它最初是一个PHP电子商务网站,很容易上手,但却不能满足业务需求。”

当时,该公司开始从德国本土向欧洲其他市场扩张。时至今日,Zalando已拥有14,000多名员工,2016年营收36亿欧元,业务遍及15个国家。他表示:“随着各方面的增长和不断的扩大,这已经成为一生一次的经历。”

更不用说对雅各布斯这样的基础设施专家来说,这是一个独特的机会。就在他加入之后,该公司开始在内部重写所有申请。“这是我们的总体战略,”他说。“例如,我们从自己的物流仓库开始,但一开始你不知道如何做物流软件,所以你有一些供应商的软件。然后我们用我们自己的软件代替了它,因为用现成的软件是没有竞争力的。你需要根据自己的具体业务需求优化这些流程。”

在重写他们的应用程序的同时,Zalando设定了一个目标,要从基本的电子商务扩展到一个提供多租户的平台,在分类和风格上大幅增加,甚至是当日送达你自己的个人在线造型师

规模扩张的需求最终引领该公司走上了云本地之路。它对基于微服务的软件体系结构的拥抱也起到了同样的作用,该体系结构给了工程团队更多的自主权和项目所有权。“向云的转移是必要的,因为在数据中心,你不可能有独立的团队。你有相同的基础设施,而且非常同质化,所以你只能运行你的Java或Python应用,”雅各布斯说。

Zalando开始将其基础设施从两个本地数据中心转移到云上,这就需要将旧的应用程序迁移到云上。“我们决定彻底分手,”雅各布斯说。“我们的亚马逊网络服务基础设施的设置是这样的:每个团队都有自己的AWS账户,这是完全孤立的,意味着没有“提升和转移”。基本上,您必须重写应用程序,使其能够在云环境下使用,甚至包括持久化层。我们勇敢地回到绘图板,重新做了一切,首先选择Docker作为一个通用的集装箱,然后从那里构建基础设施。”

公司一开始决定推迟编排,但随着团队迁移到AWS,“我们看到了团队在AWS的基础设施和云形成方面的痛苦,”雅各布斯说。

Zalandos 200多个自主工程团队决定使用什么技术,并可以使用自己的AWS帐户操作自己的应用程序。这种设置被证明是一个合规挑战。即使有了严格的规则和自动的法规遵循检查,工程团队和it法规遵循在解决法规遵循问题上还是负担过重。“违规行为会出现,这是我们在扫描云基础设施时检测到的,”Jacobs说。“一切皆有可能,但没有强制措施,所以你必须忍受违规(并解决它们),而不是从一开始就预防错误。这意味着团队的开销——以及法规遵循和操作的开销。在AWS上启动新的EC2实例也需要时间,这影响了我们的部署速度。”

Jacobs说,团队意识到他们需要“利用从集群管理中获得的价值”。当他们在2015年第一次考虑平台即服务(PaaS)选项时,市场是分散的;但“现在似乎有一个明确的赢家。”选择Kubernetes似乎是个不错的选择。”

与Kubernetes的过渡始于2016年Zalando黑客周参与者将他们的项目部署到Kubernetes集群。从那里,60名技术基础设施部门的成员进入了公司——然后,工程团队一个接一个地进入公司。雅各布斯说:“我们总是先和他们交谈,确保每个人的期望都很明确。”“然后我们进行一些Kubernetes培训,主要是针对我们的CI/CD设置进行培训,因为我们用户的用户界面主要是通过CI/CD系统进行的。但他们必须了解Kubernetes的基本概念和API。接下来是每周与每个团队进行同步,以检查他们的进展。一旦他们生产出了一些东西,我们就想看看在我们可以改进的基础上是否一切正常。”

目前,Zalando正在运行最初的40个Kubernetes集群,并计划在可预见的未来扩大规模。当Zalando开始将应用程序迁移到Kubernetes时,效果立竿而起。Kubernetes是我们端到端的无缝开发体验的基石。我们能够使用一个一致的、声明性的API将想法交付到生产中。”Jacobs说。“自我修复的基础设施提供了基于低级最佳实践的高级抽象的无障碍体验。我们预计所有Zalando交付团队将在Kubernetes提供的最先进的、可靠的、可扩展的集群基础设施上运行他们的集装箱应用程序。”

对于旧的内部基础设施,“很难适当地接受新技术,DevOps团队被认为是一个瓶颈,”Jacobs说。“现在,有了这个云基础设施,他们有了这种打包格式,可以包含在Linux内核中运行的任何东西。这让很多人很开心。工程师们喜欢这种自主性。”

在Zalando的Kubernetes实现中遇到了一些挑战。Jacobs表示:“我们是一个由7人组成的团队,为不同的工程团队提供集群,我们的目标是为所有团队提供非常可靠的体验。”“我们不想要宠物集群。我们不想了解他们的工作量;它应该能在盒子外面工作。考虑到这一点,集群自动伸缩非常重要。有许多不同的集群管理方法,而这不是核心的一部分。因此,我们创建了两个组件来供应集群,为集群建立注册表,并管理整个集群生命周期。”

Jacobs的团队还致力于改善kubernetes与aws的集成。因此你受到了很大的限制。你需要基础设施来扩展每个独立团队的想法。”此外,“仍有许多最佳实践缺失,”雅各布斯说。例如,该团队最近解决了一个pod安全政策问题。他说:“Kubernetes已经有了一个概念,但没有记录下来,所以有点棘手。”庞大的Kubernetes社区为解决这个问题提供了很大的帮助。为了帮助其他公司走上同样的道路,雅各布斯将他的团队所学汇编成一份名为在生产中运行Kubernetes

最终,Kubernetes让Zalando得以引进并维护公司为发展平台所设想的新产品。”时尚的建议产品使用了Scala,在我们之前的基础设施上实现这一点是很困难的,”Jacobs说。“这是一种变通方法,团队需要平台团队提供更多支持,因为他们使用了不同的技术。现在Kubernetes是自主的。无论工作量是多少,团队都可以按照自己的方式去做,Kubernetes可以防止其他瓶颈。”

展望未来,雅各布斯认为Zalando的新基础设施是该公司正在开发的其他东西的伟大实现者,从新的物流软件,到连接品牌的平台功能,再到数据科学家构想的产品。雅各布斯说:“一种设想是,如果你看下一部詹姆斯·邦德(James Bond)电影,看到他穿的衣服,你应该能够自动订购,并让它在一个小时内送到你那里。”“这是关于连接整个时尚领域。如果所有人都在同一个数据中心中运行,这显然是不可能的,因此非常受限。你需要基础设施来扩展每个独立团队的想法。”

雅各布斯说,对于其他考虑这项技术的公司来说,他不一定会建议他们完全按照Zalando的方式来做。“如果你准备在某些事情上失败,那么这样做是可以的,”他说。“你需要设定正确的期望。不是每件事都行得通。重写应用程序和这种类型的组织变革可能具有破坏性。我们移动的第一个产品非常关键。有很多依赖关系,而且花费的时间比预期的要长。也许我们应该从一些不那么复杂、不那么重要的业务开始,只是为了尝试一下。”

但一旦他们走到另一边,“大家都清楚,没有什么大的选择,”雅各布斯补充道。“Kubernetes API允许我们以一种与云提供商无关的方式运行应用程序,这让我们在未来几年可以自由地重新访问IaaS提供商。Zalando Technology从迁移到Kubernetes中受益,因为我们能够利用我们现有的知识创建一个工程平台,为我们的工程师提供灵活性和速度,同时显著降低运营开销。我们期待Kubernetes API成为PaaS基础设施的全球标准,并对这一进程的持续感到兴奋。”

Baidu