Microservices promise a scalable architecture, increased flexibility and better performance. But then you find out what’s actually involved in designing, developing and running a microservices-based architecture and it turns out it’s not that straightforward after all. Often the discussion around microservices is framed in a false dichotomy between the messy monolith and the lean and mean microservices architecture. In this talk we’ll see there’s a third way: the modularised application. Functional decomposition of your application doesn’t imply every component has to become its own independent process. Modularisation is about strong encapsulation, well-defined interfaces and explicit dependencies. Many languages offer in-process modularisation features, for example Java 9 with its upcoming module system. There’s a strong overlap with the microservices philosophy and development benefits, without incurring the penalty of operational complexity. We’ll explore what the right (and wrong) reasons are for going with a microservices architecture, but also what the alternative of a modularised application entails. You’ll see that splitting up an existing service or application into microservices isn’t always the clear winner. After this session you’ll be able to choose between the alternatives for the right reasons. There’s a place for both independently deployed microservices and larger applications with a strong internal modular structure. Choose wisely!