Microservices Architecture

4 minutes read
on 24 June, 2019

Monolithic Versus Microservice Architecture


How Do They Compare


Microservices architecture is an architectural approach that connects independent business functionalities in the form of microservices to build complex business applications. Leveraging microservices architecture, a large application can be built as a suite of modular components or services.

It is easier to build and maintain a complex application when broken down into many small pieces that work together. Each layer has its own small team working on it so they are completely decoupled and separated from each other, allowing each service to run its own unique process and communicate autonomously without depending on the other teams or applications.

The ability of being separated and recombined, protects the entire system from getting outdated over time and better facilitates agile processes, making it an appealing method for organizations to adopt, especially for those who are still utilizing monolithic architecture.

With monolithic architecture, an application is built as a single unified system, which is usually one code-base. A monolith is often deployed all at once, both front-end and back-end code together, regardless of changes.

In some of the instances, monolith consists of three parts: a database, a client-side user interface (consisting of HTML pages and/or JavaScript running in a browser), and a server-side application. The server-side application will handle HTTP requests, execute domain-specific logic, retrieve and update data from the database, and populate the HTML views to be sent to the browser.

Contrasting facts about Monolithic and Microservices Architecture


Benefits of Monolithic Architecture


Less Cross-cutting Concerns


One of the key advantages of monolithic architecture is that most apps typically have a large number of cross-cutting concerns, such as logging, rate restricting and security features.

Reduced Operational Overhead


Having a large application means there’s only one application with the need to set up logging, monitoring, testing. It’s also generally less complex to deploy.

PERFORMANCE​


There can also be performance advantages since shared-memory access is faster than inter-process communication (IPC).

Drawbacks of Monolithic Architecture


Compactly Coupled


Monolithic app services tend to get compactly coupled and entangled as the application evolves, thus making it difficult to isolate services during independent scaling or code maintainability.

Tough to Understand


Monolithic architectures are harder to understand, because there may be dependencies, side-effects, which are not obvious when you’re looking at a particular service.

Benefits of Microservices Architecture


Loosely Coupled


Microservice architectures are generally better organized, as each microservice has a very specific job, and is not concerned with the jobs of other components.

Improved fault isolation


If one microservice fails, the others will continue to work

PERFORMANCE​


Under the right circumstances, microservices can also have performance advantages depending on how they’re organized because it’s possible to isolate hot services and scale them independently.

Easy integration and automatic deployment


Using open-source continuous integration tools

Code for different services


The code for different services can be written in different programming languages

Drawbacks of Microservices Architecture


Increased complexity


When compared to monolithic architecture, Microservices architecture is very complex and requires trained resources to understand

Greater Operational Overhead


Microservices are mostly deployed on their own virtual machines or containers, causing rapid growth of VM wrangling work.

Right Time to opt for microservices architecture over monolithic architecture


Circumstances prevailing, to use Monolithic Architecture


Team is at a very dormant stage


The team is small, between 3-5 members, and is thus unable to tackle a broader and high-overhead microservices architecture.

Building a hypothetical product or Proof of Concept


If it’s a new idea, it is likely going to pivot and evolve over time, so a monolith is ideal to allow for rapid product iteration. The same applies to a proof of concept where the goal is just to learn quickly, even if you end up throwing it away.

When the team does not possess any microservices experience


If the team has no prior experience with microservices unless they can justify taking the risk of learning “on the fly” at an advanced stage, it’s likely another sign that they should stick to a monolith to start.

Right time to switch to Microservices Architecture


Some scenarios that indicate that the team should start their next project using microservices


Need fast, self-supporting service delivery


Microservices allows for a quick, self-supporting delivery of individual parts within a larger, integrated system. Basically, depending on the team size or the growing business needs, it can take time to see service delivery gains versus starting with a monolith.

Plans to grow or expand business


Starting with microservices gets the team used to developing in separate small services from the beginning, and having teams separated by service boundaries makes it much easier to scale up the team size and business without introducing exponential complexity. This can even get frequently automated with container fleet management tools.

Conclusion


In this digital era of rapid changes, companies are keen to maximize productivity, embrace agility and improve customer experience. Therefore, they need to look beyond yesterday’s monolithic web applications and embrace microservices; whereby loosely-coupled architecture speeds development, testing, and deployment, accommodating today’s and tomorrow’s digital requirements.