Decompose the Monolith
Author: Shane Larson
Monolithic applications slowly become too large and difficult to change . As the code base grows is becomes harder to implement new features and dependencies become more complex. This slows down the rate of innovation.
When demand on a single service requires scaling of the application, the entire monolith must be scaled. This impacts the economics of the application because resources that could be used elsewhere are dedicated to scaling some features that don't necessarily need to be scaled for the sake of ones that do.
With a microservices architecture, each application component runs as its own service and communicates with other services using API's. Microservices are built around business capabilities, each performing only a single function. This makes it possible to scale out only the required services, rather than the entire application.
This also provides for rapid innovation because new business capabilities can be added by simply creating new microservices which act independently yet in concert with one another. Capacilities can be added and also recombined to create new features, services and products as well.
Deconstructing the Monolith
Deconstructing a monolithic application can be hard. It must be completed in iterative projects that allow for pieces of functionality to slowly be migrated out of the application. Each iterative release should be made up of at least one atomic change to the overall solution architecture. Slowly microservices can be extracted from the old monolith and it can eventually be retired and replaced by a microservices architecture.
Not a Silver Bullet
Microservices are not intended for every scenario. There needs to be a solid architectural plan in place in order to deconstruct a monolithic application, and it does not make sense in every scenario. It helps to start the design process with the parts that are important to the business and that require frequent change.
Software Engineer - Solutions Architect
Builder of Tiny Cabins in Alaska
My current focus is in the areas of Microservices, API Frameworks, Cloud Native Architecture, Robotics, and DevOps.
I work as a Solutions Architect in the financial industry.
I also build tiny cabins in Alaska.
Author of Building Microservices with NodeJs
Microservices enable us to develop software in small pieces that work together but can be developed separately, one of the reasons why enterprises have started embracing them. For the past few years, Node.js has emerged as a strong candidate for developing these microservices because of its ability to increase developers' productivity and applications performance. This video is an end-to-end course on how to dismantle your monolith applications and embrace the microservice architecture.