The architecture of otto.de is based on the concept of vertical decomposition: the whole system is vertically split into several loosely coupled applications. Every „vertical“ is responsible for a single business domain such as „Order“, „Search & Navigation“, „Product“, etc. It has its own presentation layer, persistence layer and a separate database. From the development perspective, every vertical is implemented by exactly one team and no code is shared between the different systems. We have already described the details of this architecture in an article in OBJEKTspektrum (German), a different blog post (German) and at conferences like QCon (English).
For some time, a different approach to decompose large systems is becoming more and more popular: microservices. What are the similarities and differences of both kinds of architectures and how is it possible to get the best of both? This is what I want to discuss in this text.
Last week I attended the EuroClojure conference 2014. It was a truly fantastic conference in the beautiful city of Kraków. While the big conferences in the US attract thousands of participants, this one was rather cosy with some 300 participants. As a very good side effect of this, the conference was single tracked. So I missed none of the great talks.