Microservices are a way of breaking large software projects into loosely coupled modules, which communicate with each other through simple Application Programming Interfaces (APIs).
Microservices have become increasingly popular over the past few years. The modular architectural style, based on the philosophy of breaking large software projects into smaller, independent, and loosely coupled modules, has gained prominence among developers for its dynamic and agile qualities in API management and execution of highly defined and discrete tasks.
Simply stated, microservices are really nothing more than another architectural solution for designing complex – mostly web-based – applications. Microservices have gained prominence as an evolution from SOA (Service Oriented Architecture), an approach that was designed to overcome the disadvantages of traditional monolithic architectures. In this blog post, we’ll explore the evolution of development from monolithic architectures towards microservices and its underlying justifications.
The Evolution from Monolithic Architecture
Let’s start with a simple example.
Suppose I need to build a classic web application using Java. The first thing I will do is design a Presentation Layer (the user interface), followed by an Application Layer, which handles all of the business logic. This is followed by an Integration Layer to enable loose coupling between various components of the Application Layer. Finally, I will design a Database Layer that will be accessible to the underlying persistence system.
To run the entire application, I will create either a WAR or EAR package and deploy it on an application server (like JBoss, Tomcat, or WebLogic). Because I have packaged everything as an EAR/WAR, my application becomes monolithic in nature, which means that even though we have separate and distinguishable components, all are packaged together.
Here’s an illustration:
You may already be familiar with the characteristics of monolithic applications depending on your development experience. However, this example also stands to illustrate some of the