We are quite used to
building 3-layered (UI, business and data) monolithic applications and it’s
very difficult NOT to see this style of layering in any enterprise app that’s
worth its salt. This style of architecture is highly tried, tested and documented.
We know the merits and limitations of this style and how to work around the
limitations
While we know how to
trade-off the limitations of monolithic apps, there were frustrations around
the lack of agility in such approaches. Specifically on the maintainability and
scalability standpoints. If there is a change then the entire monolithic monster
(often a big .dll) will have to be regression/integration tested and pass
through a DevOps pipeline before hitting the production without affecting the
availability. Same way, when there is a surge in the demand for a specific
business function (like the payment function in a e-tailer like Amazon during
the holidays season), we scale out the whole app by provisioning a number of
horizontal boxes and load balancing the requests. With the advent of cloud, a
group of architects started working on a new (i.e. old wine in a new bottle)
architectural style and it worked very well in the enterprise/public cloud
scenarios. It’s time we take a look at it
In the Microservices
architecture, each business capability (like creating an order, authenticating
an user, payment in a ecom site etc.) is built as an independently deployable,
mini service. So one big monolithic app is decomposed into many different Microservices
that run in their own processes and the communication between them is strictly
through API service contracts often conforming to lightweight protocols
like http and REST. With the Microservices, if there is a change one small
module is going to be updated, if there is peak demand for a business function
that function alone is going to be scaled, not the entire app. Each module of
an app can be written in any language/technology as long as they support the
RESTful interfaces. To know more, you may see the web site of Martin Fowler .
Sensing the popularity of Microservices, Microsoft
introduced Microservices platform for Azure
No comments:
Post a Comment