Monolithic Application Design

Technology grows day by day and gives flexibility to the end user to increase ease of use, save time, and money.

Nowadays everyone is looking at the cloud world, people wants there their system to be a part of it so that it can be accessible anywhere without any geographical barrier. Currently in the market there are a number of cloud competitors available to host applications or entire platform on the cloud, Microsoft is one of the key competitors with its Azure cloud computing.

There are a lot of things the cloud has provided which software industries can make use of to enhance their business, like IaaS and Paas are one of the key features.

If you are a Microsoft professional and your client is talking about hosting their on-premises application on cloud, the biggest challenge you will face: how wil you do that, what will be the approach you are going to suggest to client, so that it will have a minimum impact of existing functionality and also increase their business globally.

E.g. an on-premises application can be a single teir application, multi-teir application or a neatly coupled application.

One of the best solutions that could be provided is ‘Micro services’.

Now the question here is:

What is Micro Services?

Why do we need this?

What are the benefits I will get by choosing this?

Before moving on in this discussion first off I would like to clarify a few other software development approaches you must aware of…before deep diving into the micro service architecture.

Following are the points of discussion in the series of modules:

  • Monolithic application design
  • Distributed application design
  • Service oriented applications
  • Micro services


These are the applications developed as single component, a single deployable unit. In other words we can say an application which can be treated as a single executable unit.

Some e.g. of monolithic applications are MS word, MS excel, Notepad etc. These are the single tier applications

General application architecture would be :

The Application will be the deployable unit which contains different components of the application: 

  • Component: the application component will be something exposed outside the world for point of communication.

  • Layer: Application can have different layers e.g Business logic layer, database layer. etc.

  • Classes: Each layer will have different classes which may or may not interact with each other. 

With reference to below diagram if a monolithic application requiresa change a new UI component is required to be added, first of all developers will add the field on the data layer, then it may add some business logic which goes on the business logic layer and finally the UI component (text box) will be added to the UI layer.

Also in case of a large couple monolithic application your application may have different component which are interacting with each other (refer below diagram)

In the monolithic applications the request are severed in the following manner

User sends the instruction to the service (http request), request will be processed by the different component of application and finally response send back to the end user with new page.

Monolithic application has some advantages:

Also it has some downsides of using monolithic approach.
That's all about the monolithic approach in this session in the next version of this session we will talk the about distributed architecture, SOA and finally about the micro services.