Zalando 从一体性架构转变为微服务的历程

阅读数:1670 2016 年 2 月 21 日

话题:语言 & 开发架构

业界最负盛名的微服务大会Microxchg 2016上周于德国柏林举办。来自ZalandoRodrigue Schaefer为听众进行了一场演讲,Zalando 是一家在欧洲处于领先地位的时尚品牌科技公司,在总共上万名员工之中有一千多名是技术工作者。Rodrigue 在演讲中讲述了该公司如何将他们的系统从一个一体性的架构迁移至微服务的过程。

该系统原先的一体性应用是由 Java、Spring 及 Postgres 等技术所构建的,代码非常臃肿,并且充斥着大量的依赖,由此引起了许多协作方面的问题,最终造成了开发周期的逐渐缓慢。随着团队规模的扩大,bug 的比重也随之上升。为了巩固现有的系统而引入了许多僵化的流程,导致创新工作难以开展。此外,由于使用的技术栈有些“陈旧”,也造成了招聘进度的缓慢,并且增加了招聘工作的困难。

公司终于意识到他们应该给予团队充分的信任,而不是强行控制,这意味着每个团队都能够按照自身的技术、以及能够从其他部门那里所获得的帮助等条件来选择最适合自己的技术栈与工具。微服务的迁移工作目前已经开展了 9 个月,技术上的变化包括使用AWS进行设置、用Docker进行部署以及用AppdynamicsZmon进行监控,整个迁移过程已经完成了 90%。

对于这样一个大型公司来说,一旦将整个系统都构建在微服务架构上,就必须做好这 200 多个微服务随时可能发生故障的准备。开发者对于服务要承担起端到端的职责,从 DevOps 到 QA,直至部署过程。每个团队对于其他团队来说都必须表现为一种交付服务的SaaS平台,即使对于内部服务也一样。API 优先的概念则意味着全部 70 多个团队必须对于 API 规则保持一致。实现以上目标离不开制订各种规则的主体文档、充分的同行审查、以及对于业务实体的一致的理解。

至于在合规性与安全性方面,Zalando 遵循了四眼原则,并大量应用了审查记录跟踪的做法,以确保每个变更都可以追溯到具体的代码提交者。

新的系统不允许在不同的微服务之间使用共享的库,因此每个团队都必须实现开源,并遵循公司所建立的规则。最后,跨多个团队的测试服务是由一个跨职能的业务促进单位所实现的。

本次演讲的视频可以在Youtube上观看。

查看英文原文:From Monolith to Microservices, Zalando's Journey