Organizing code so that it is easy to deploy as it grows
We’ve all seen the monolithic model, one ever growing codebase that everyone contributes to. This is quick in the beginning but as the code grows it gets harder and harder to deploy. Deployments start to become less frequent. Now product teams need to cram more functionality into each deployment since they don’t want delays bringing functionality to market. The increased footprint of new functionality in the deployment means higher risk, so more QA involvement. Its a downward spiral.
One of the big challenges a Software Architect faces when building enterprise class systems is how to organize code into manageable units. The emphasis here is on the logistics of having lots of teams of engineers contributing to to your system and keeping it easy to deliver incremental improvements to your offering to your customers. Over the years there have been several models that approach this problem.
Your company could be start up building the next big thing. Maybe you’ve been hired to tame an existing monolithic system where it’s become cumbersome to deploy updates.
The we tried Services Oriented Architecture, but this approach was very painful because tracking failures in the system becomes very cumbersome, architects confuse it with object oriented paradigms, and managing the dependencies rapidly becomes complex.
Microservices Architecture is the next step in the ever evolving computer science behind building scalable solutions. The book below is incorporates lessons learned from the Services Oriented Architecture approach and builds upon the author’s real world experience. I recommend the book because it offers practical advice for dealing with real world engineering challenges in the business of software development.
By Sam Newman