Microservice vs Monolithic Architecture


As the technology is evolving and disrupting the overall businesses, innovation in overall Architecture paradigm is shifting drastically. If we see the Technology Architecture of 90s, they were more sort of modular in nature with languages like Visual Basic were thriving. Then came object oriented era and Architectural concepts gain a paradigm shift. Languages like Java, C++ gain their ground and for the first time we had seen platform agnostic solutions, where you can write the code once and run on any platform i.e. Windows, linux, AIX etc.

Technology revamp was not happening only on the core level, such changes gave birth to concepts of frameworks. Frameworks are the best practices in solution architecture to enhance the ability of underlying systems, which were consolidated by industry specialists and later practiced by overall technology industry. To enhance the capability of systems and increase the capability of integration, industry came up with the framework of Monolith Architecture one of the example for Monolith Architecture is Enterprise Service Bus. The sole purpose of Enterprise Service Bus was to allow Applications to be interoperable in any kind of environment. To allow them to interface and integrate with surrounding applications in the protocol of their choice. ESB is placed as the middleware between source and destination, it provides capability of transforming one protocol to other protocol. But as the industry grew we see the dependency on the ESB causes performance impacts, downtimes, single point of failures and so forth. And in order to mitigate the shortcomings of monolith architecture, industry came up with the new framework which is now known as Microservices Architecture.





Microservices architecture is the combination of Modular and Monolith Architecture. In modular architecture, each module serves a unique purpose from functional perspective. In monolith architecture, modules are unique services deployed on separate infrastructure to avoid downtime, to make it more scalable and robust and to enhance the overall performance.




To dig deep into pros and cons of Microservices and Monolith Architecture, following table illustrates the comparative analysis of pros and cons of respective Architecture frameworks.

Microservices Architecture
Monolith Architecture
Pros:
-          Each service is developed and deployed independently, which means an update to any one component does not require the entire application to come down in order to deploy the update.
-          Since each service is deployed independently, they can also be developed in different languages as per the requirement.
-          Applications using microservices are robust as a whole. Since each service is deployed independently, chances of application keep responding in case of any service failure are much higher.

Cons:
-          Splitting an application into multiple microservices generates more artifacts to manage.
-          Since the overall number of nodes are increased testing each service require more time and effort.
-          Monolith architecture has in-memory service communication whereas microservices architecture require communication over the network which entails network latency.
Pros:
-          Monolith Architecture works on shared memory architecture, which entails major performance advantage.
-          Testing process is easier and faster compare to microservices architecture.
Cons:
-          Difficult to change and incorporate changes since the application is typically large and complex to understand.
-          Redeployment required for the entire application with each update.
-          Continuous deployment is made very difficult.
-          Difficult to scale when modules having different functionalities have conflicting resource requirements.


Comments

Popular posts from this blog

Open Source Technologies