When microservices evolved from the dominant monolithic enterprise IT approach it began to look as if smaller was, in fact, better. Today we examine how microservices, the new, agile and flexible approach to enterprise development, shattered the monolith and became the architecture du jour.
In our previous blog post of this five-part series on microservices, we examined how when enterprise IT was emerging from the mainframe-dominance era developers intentionally built systems in a monolithic way. As time went on, we began to see some of the limitations that called for a new approach and microservices rose to the foreground.
But why microservices?
There is certainly nothing wrong with the standard three-tiered database style of architecture. As a matter of fact, over the years, the three-tier architecture evolved into an N-Tier architecture, with more than three but still discrete tiers. The N-Tier architectural style ran into trouble because of the considerable pressure put on when a single instance of an application was running in a production environment. All clients, whether they were humans or systems, communicated with that one application server.
What has happened over time—and it is a fundamental change—is the substantial increase in the size of the applications organizations are attempting to deploy. Look at Netflix, Facebook and LinkedIn—these are massive applications. Even inside the enterprise, it is now not uncommon for a single massive application to be deployed for enterprise-wide or customer-facing use. There are hundreds of thousands of users today, as opposed to years ago when applications were mostly built in stovepipes and silos for departmental use. As a result, the complexity of trying to scale an N-Tier architecture built using a monolithic approach now outweighs the benefits of using that design.
That design is very difficult to fan out. In contrast, with a microservices approach, fanning out the processing and load across multiple instances is much easier to manage operationally and lends itself to making use of newer elastic scaling capabilities.
A microservices-based architecture is oriented toward separating storage and functionality discretely, so there can be many more instances of how things get stored and many more copies of that implementation running in an environment. Because of this kind of distributed architecture, some of the largest applications today are able to scale to sizes previously unheard of. Applications today are built for millions of connected users, and that is much of what is driving the move away from a monolithic approach and towards microservices.
Next time we’ll examine the difference – and there is an important difference – between microservices and SOA.