While designing solutions to solve complex problems, various approaches, best practices and latest sophisticated tools & technologies are used to ensure that implemented solutions duly solve the underlying problems and provide robust, highly efficient, scalable options for current and future needs.
When architecting a software solution; deciding between a fat monolithic architecture based solution and a fine-grained microservices architecture based solution is always among the major decisions that decide the future roadmap of any such solution.
In this article, we will talk about microservices and explain basic concepts of Microservice architecture and will talk about Monolithic Vs Microservices architecture.
What is a Microservice ? An overview of Microservice Architecture
Microservices architecture is an approach of solving a complex software problem by implementing smaller, fine-grained, independent, loosely coupled services which can talk to each other to form composite services based on underlying business problems being solved.
This approach of building such services separately and independently helps organizations to achieve plenty of benefits associated with this approach. Each microservice revolves around some specific business capability and consists of discrete tasks specific to that business need.
Before we talk any further about benefits associated with Microservices Architecture, It is important to first talk a bit about comparison between Monolithic and Microservices Architecture.
Monolithic Vs MicroService Architecture
In Monolithic Architecture, applications are developed and deployed as a whole in the form of a single solution for all the problems being addressed by the solution. This results in a single fat application which gets deployed to the runtime environment wholly.
In case of monolithic architecture, application might have been built with multiple layers for front-end, back-end and business logic but overall, entire solution is packaged as a single deployable artifact.
Microservices architecture is just opposite to Monolithic Architecture where smaller, loosely coupled, fine-grained services are designed, developed and deployed with a higher degree of independence & flexibility in terms of architectural decisions, technology stack selection, deployment options as well as scalability and performance tuning related approaches.
What are the Problems with Monolithic Architecture?
Monolithic architecture is still widely used for applications of various complexities in different business domains but there are various challenges and problems associated with Monolithic Architecture which need to be considered while architecting a software solution.
Some of the problems associated with Monolithic Architecture are as below:
- Complex Application with difficulty to scale, change and optimize for future needs.
- Deployment issues due to a single packaging without a control on individual services resulting in complete solution re-deployments even for some smaller tweaks, changes or bug fixes.
- Resistance to architectural and technology stack changes due to bigger impacts and higher re-work. E.g. changing a complex monolithic solution from Java to .Net might be a huge challenge.
- Performance Degradations with the passage of time as underlying database grows.
Why Microservices? Benefits of Microservices Architecture
With potential issues, concerns and challenges of monolithic architecture explained above, we reach to a good advocacy point for microservices architecture as a solution to all such problems.
Below are some of the major benefits of Microservices Architecture:
- Functional Separation based on business capabilities resulting in a better control.
- Ease of deployment with services independence without affecting the whole solution.
- Greater scalability with potential to scale-up or scale-down at individual service level as & when required.
- Higher level of flexibility with possibility to choose technology stack, tools, frameworks etc. at individual service levels without impacting other services.
- A better fine-grained fault tolerance at individual service level.
Below video tutorial covers Microservices Architecture topic in more detail.
If you have any further questions, feel free to comment below.
Pingback: Microservices Vs API: Difference Between API and Microservice