From Monolith to Microservices, Zalando's Journey
Last week Microxchg 2016, one of the leading conferences about microservices was held in Berlin, Germany. Rodrigue Schaefer from Zalando, a leading fashion technology company in Europe with over 10,000 employees, 1000 of them in technology, gave a speech about their transition from a monolithic application to microservices.
Using Java, Spring and Postgres stack in their monolithic application was causing a bloated codebase with many dependencies, coordination problems and eventually slower development cycles. Bug density was increasing as the team size grew and adding rigid processes to consolidate it meant that innovation suffered. Also, an “old” tech stack meant that hiring was getting slower and more difficult.
Giving trust instead of control to different teams, means that each and every team gets to pick their own technology stack and tools, taking into account their skills and the availability to get help from other departments. After nine months into the microservices transition, using AWS for provisioning, Docker for deployment and Appdynamics and Zmon for monitoring, 90% of the migration has been already done.
The mindset in such a large company around microservices dictates that with 200 microservices, one has to expect that all of them may fail at one time or another. Developers get end to end responsibility from devops to QA to deployment. Each team must act as a SaaS to the other teams, delivering a service, even if it is purely internal. And API first means that all 70 different teams must align on API rules. These are all consolidated by a master document around rules of play, thorough peer review and a shared concept of business entities.
On the compliance and security aspect, Zalando uses the four eyes principle and extensive usage of audit trails to make sure that every change can be traced back to the individual that made it.
By banning shared libraries across different microservices, all teams are forced to open source and play by the company established rules. Finally, testing services across teams is done by a cross functional business assurance unit.
The presentation video is available on Youtube.