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