Sander is a Fellow at Luminis in The Netherlands, where he crafts modular and scalable software, most often on the JVM, but with a touch of TypeScript when needed. He also is a Java Champion and author of the O'Reilly book 'Java 9 Modularity' (see javamodularity.com). As an avid conference speaker, Sander loves sharing knowledge, also through his blog at http://branchandbound.net and as Pluralsight instructor.
Microservices promise a scalable architecture, increased flexibility, and better performance. But then you find out what’s actually involved in designing and running a microservices-based architecture. Turns out it’s not that straightforward after all.
Often the discussion around microservices is framed by a false dichotomy between the messy monolith and the lean and mean microservices architecture. Fortunately, there’s a third way: the modularized application. Functional decomposition doesn’t imply that every component has to become its own independent process.
Modularization is about strong encapsulation, well-defined interfaces, and explicit dependencies. Many languages offer in-process modularization features (for example, Java with its all-new module system). In this session we explore the right (and wrong) reasons for going with a microservices architecture, as well as what a modularized application entails. There’s a place for both independently deployed microservices and larger applications with a strong internal modular structure. Choose wisely.