Systems must be clean too. An invasive architecture overwhelms the domain logic and impacts agility.
-- Bob Martin Clean Code
ACT 1
It's 2014 in Enterprise Development. You've been developing for a few years in an enterprise setting - or even a start-up entering middle-age, learning a lot from peers and articles and conferences. Both your domain and engineering knowledge have grown in leaps and bounds. One day you realize that your are, most often, solving problems incidental to the core business problem your team/business-unit/department/division say they are solving. What gives?
I have been thinking about incidental complexity a lot recently. I've also been thinking about Agile, especially since Dave Thomas' Time to Kill Agile blog post. In any case, incidental complexity and agility are related - we will come back to this later. The crux is this: we read lots of articles about exciting development ... about solving exciting problems.
We want to move fast and solve exciting problems too.
We can get back to solving interesting problems instead of incidental complexities with Microservices.
Martin Fowler and James Lewis recently published a blog in installments on martinfowler.com/articles/microservices.html[Microservices]. - Examples - Turning Point: Remember, we want to develop with Agility.
-
The Crisis: Our develoment cycles are dragging us down.
-
The Solution: We can use microservices to return to the "startup"
-
The Climax: If you want to go back to the days when you were solving essential business problems instead of incidental complexity, microservices are a way to go.
-
The Resolution: Microservices are obviously not a silver bullet; some have already taken issue with Fowler and Lewis' mere mention of the word. However, Microservices are a valid architecture for those of us working in Enterprise who yearn to tackle Essential Business Problems again.