Monolithic Architecture

Posted: May 14, 2018 in Microservices
Tags: , ,

A monolithic software product is a single, indivisible unit that will generally grow to a large size.

In a typical client-server architecture, a monolithic product lives on the server, where it handles HTTP requests, executes logic, and interacts with the database. It contains a single executable that performs all of the server-side functions for an application.

For example, to update the behavior of a product page, a developer would access the same code base as they would to add a new customer service feature. In a monolith, everything is managed and served from the same place. The size and simplicity of monolithic software products are both their strengths and their weaknesses.

How Monolithic Architectures Help Productivity ?

The primary benefit of a monolithic application is the simplicity of its infrastructure, which can make it faster to deploy and scale.

To deploy a monolithic application, only one file or directory has to be handled. This makes deployment fairly straightforward. Since the entire application’s codebase is in one place, only one environment has to be configured to build and deploy the software. In most cases, this means less time spent figuring out how to get deploy and deliver your application to your end users.

How Monolithic Architectures Hurt Productivity ?

Monolithic applications tend to become more cumbersome over time. Without close attention to how code is being written and maintained, a monolith can become dangerously brittle. This magnifies each bump in the road for your business as new challenges and demands arise for your products.

On the development side, monoliths can hinder agility. As mentioned prior, monolithic applications are very tightly coupled and can become a complex web of code as the product evolves. Thus, it can be extremely difficult for developers to manage over time.

This situation can be intimidating to new and seasoned developers alike, who would prefer to not have to wrangle a massive code base that has evolved over the years. As a result, more time is spent finding the correct line of code, and making sure it doesn’t have side effects. Thus, less time is spent writing new features that actually improve the product.

The Bottom Line on Monolithic Architectures

It isn’t a bad idea to build a monolithic application, but it is a bad idea to let a monolithic application grow out of control.

A monolithic code base is common, and often a byproduct of rapid product success. But as the application grows, there is a breaking point where it’s difficult to keep up with the pace of market demand. A monolithic code base becomes too cumbersome to be efficient in delivering new features and keeping ahead of the market. Integrations with other applications also become expensive.

Monoliths are agile at the start, allowing a business to get a product off the ground quickly. However, more consideration should be given to the architecture of the application when more time is being spent fixing existing code rather than building new features.

After a certain point, you should consider whether a microservices architecture might be more appropriate.

microservices_archit.png

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s