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. It 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. Sander Mak explains that there’s a third way: the modularized application. Functional decomposition of your application 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 9 with its upcoming module system), and there’s a strong overlap between the microservices philosophy and development benefits—without incurring the penalty of operational complexity.
Sander explores the right (and wrong) reasons for going with a microservices architecture, as well as what a modularized application entails. You’ll see that splitting up an existing service or application into microservices isn’t always the clear winner. You’ll leave 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.
85. @Sander_Mak
Advantages of Modules
Strong but
Refactorable
Boundaries
"The [Linux] project is structured so
people can work independently,
Torvalds explained. "We've been
able to really modularize the code
and development model so we
can do a lot in parallel." - El Reg
106. @Sander_Mak
At the speed of light,
everything changes!
Dude, chill. The apple still
doesn't fall far from the tree.
107. @Sander_Mak
Don't Solve Problems
You Don't Have
At the speed of light,
everything changes!
Dude, chill. The apple still
doesn't fall far from the tree.
112. @Sander_Mak
Solve Problems You Do Have
In The Simplest Possible Way
At Least Read Up on Modular Development
In Your Tech Stack of Choice
Explicit
Dependencies
Strong
Encapsulation
Well-Defined
Interfaces