avatarMehmet Ozkaya

Summary

The web content discusses the relevance and utility of Monolithic Architecture in modern software development, particularly for small to medium-sized applications, despite the rise of Microservices Architecture.

Abstract

The article "Monolithic Architecture is Shining" delves into the Monolithic Architecture style, emphasizing its continued usefulness in current projects, especially for e-commerce applications. It explains that Monolithic Architecture involves designing and deploying an application as a single unit, which simplifies development, testing, and deployment processes. The article acknowledges the challenges of Monolithic Architecture, such as difficulty in managing large codebases and parallel development, but also highlights its benefits, including ease of debugging and deployment. The piece contrasts Monolithic Architecture with Microservices, noting that the choice between the two should be based on the application's non-functional requirements. Experts like Chris Richardson, DHH, and Kelsey Hightower are cited, suggesting that no architecture is universally superior, and the best choice depends on the specific needs of the project. The article advocates for a Modular Monolithic approach, potentially leveraging serverless and fully managed components, as a scalable and evolvable solution for many software projects.

Opinions

  • Chris Richardson points out that no architecture is perfect, and each style has its own set of trade-offs.
  • DHH (David Heinemeier Hansson) and Kelsey Hightower believe that Monolithic Architecture remains a valid and often preferable choice for many applications in the 2020s.
  • The author suggests that a Monolithic Architecture can be a good starting point for small e-commerce applications with a limited number of users and requests per second.
  • Kelsey Hightower proposes that a Modular Monolithic Architecture, combined with serverless technologies and fully managed components, could be the perfect architecture for most software projects.
  • The article emphasizes the importance of selecting an architecture that aligns with the application's non-functional requirements to avoid over-engineering and unnecessary costs.
  • The author agrees with the experts' opinions and stresses that Microservices should not be the default choice, as Monolithic Architecture can still be the best option for many scenarios.

Monolithic Architecture is Shining

In this article, we are going to learn Monolithic Architecture and how Monolithic Architecture still so useful for current projects.

Monolithic Architecture

By this article, we are going to learn Monolithic Architecture, Benefits and Challenges of Monolithic Architecture and Design our E-Commerce application with Monolithic Architecture.

I have just published a new course — Design Microservices Architecture with Patterns & Principles.

Architecture Design Journey

There are many approaches and patterns that evolved over decades of software development, and all have their own benefits and challenges.

Architecture Design Journey

We have get requirements and now we can continue to our flow, which is learning phase of architectures. So we have started with understanding existing approaches to architecting our e-commerce application and evolve and shifting to the microservices. In order to understand cloud-native microservices, we need to understand what are monolithic applications and how led us to move from Monolithic to microservices.

So according to our application requirements, its good to start small and basic architectures as much as possible. Since we have decided to start a small e-commerce application that get small amount of concurrent user and request per seconds, it seems good to start with Monolithic Architecture.

Design Architecture Circle

We are in Learning step of our article series, for that reason, we will learn

  • Monolithic Architecture
  • When to use Monolithic Architecture
  • Benefits of Monolithic Architecture
  • Challenges of Monolithic Architecture

What is Monolithic Architecture

A monolithic architecture is a traditional approach to software development. Monolithic architecture is an architectural pattern of designing and developing a complete application as a single unit. For example, a traditional application will have a frontend, API, services, load balancer, and database. If you build everything together and deploy it on the server, that’s called a monolithic architecture, where services tightly couple together.

When it comes to legacy applications, we can say that most of legacy applications are mainly implemented as a monolithic architecture. If all the functionalities of a project exists in a single codebase, then that application is known as monolithic application. In the monolith pattern, everything from user interface, business codes and data access operations is included in the same codebase.

Monolithic Architecture

All application concerns are contained in a single big deployment. Even the Monolithic applications can design in different layers like presentation, business and data layer and then deploy that codebase as single jar/war file.

Developing your application as a monolith architecture might seem like going backward in architectural evolution, but in some cases Monolithic Architecture still best option to design your application architecture, especially when you required to strong consistency.

There are several advantages to the monolith approach that we will discuss them in the upcoming articles. But let me say some main advantages and disadvantages here. Since it is a single code base, its easy to pull and get started to project. Since project structure in 1 project and easy to debug business interactions across different modules.

Unfortunately, the monolith architecture has lots of disadvantages, we can say that;

  • It becomes too large in code size with time that's why its really difficult to manage.
  • Difficult to work in parallel in the same code base.
  • Hard to implement new features on legacy big Monolithic applications
  • Any change, requires deploying a new version of the entire application.

and so on. As you can see that we understand Monolithic Architecture.

Why Monolithic Architecture is shining ?

Monolithic architecture remains a popular topic in software development because it is a simple and straightforward approach to building applications. In a monolithic architecture, all the components of an application are combined into a single, tightly-coupled codebase, making it easier to develop, test, and deploy the application. This simplicity also makes it easier to understand the flow of data and control in the system, and can lead to faster development times for smaller applications.

However, as applications grow in size and complexity, the monolithic architecture can become difficult to maintain and scale. The tightly-coupled nature of the codebase makes it difficult to update individual components without affecting the entire system, and can lead to increased downtime during deployments.

Despite these challenges, many organizations continue to use monolithic architecture, particularly for small to medium-sized applications, due to its simplicity and ease of development. Additionally, the recent trend towards microservices has led to an increase in interest in monolithic architecture as a contrast and comparison point.

Monolithic or Microservices Architecture ?

The choice between monolithic and microservices architecture is a common question in software architecture because it is a fundamental decision that affects the design, development, and maintenance of a software system.

For that reason its good to hear from experts on Software Industry.

From Chris Richardson

Let me continue with tweet from Chris Richardson:

https://twitter.com/crichardson?lang=en

As you can see that he is pointing out that there is no perfect architecture and all architecture styles are a architecture pattern and non of them better than other.

From DHH

Lets continue to another tweet from DHH.

The Majestic Monolith — Signal v. Noise (signalvnoise.com)

Here you can see that DHH and Kelsey agree with Monolithic architecture is still very valid architecture in 2020s. So that means we should consider Monolithic architecture as the same level with Microservices architecture when we design our applications.

The main idea is here, we must pick the architecture that satisfies your application’s non-functional requirements, like scalability, availability and so on. Yes everyone wants to design high scalable and high available systems but as an software architect you should focus on problem and ask yourself

  • Is it required for your application ?

To avoid unnecessary cost and resource usage and to avoid over-engineering of that problem. Because when you apply advanced architecture for your small problem, you did anti-pattern implementation and loose benefits of your application nature like easy to develop , debug and deploy options and so on.

From Kelsey Hightower

Lets continue to another tweet thread from Kelsey Hightower.

https://twitter.com/kelseyhightower/status/1621184564956893189
https://twitter.com/kelseyhightower/status/1621184564956893189

Here you can see that Kelsey go one more step and offers that if we follow Modular Monolithic Architecture and build on Serverless and fully managed components, this would be prefect architecture most of software projects.

I also strongly agree with Kelsey for most of cases, but of course in some cases Microservices are un-avoidable chooses for large-scaled applications. The idea from Kelsey is that if you start with that setup, it can evolve and scale very easily for future requirements.

After this article, you can continue to

Or you can continue with Microservices:

Step by Step Design Architectures w/ Course

I have just published a new course — Design Microservices Architecture with Patterns & Principles.

In this course, we’re going to learn how to Design Microservices Architecture with using Design Patterns, Principles and the Best Practices. We will start with designing Monolithic to Event-Driven Microservices step by step and together using the right architecture design patterns and techniques.

Monolithic
Monolithic Architecture
Software Architecture
Microservices
Microservice Architecture
Recommended from ReadMedium
avatarKevin Wong
Uber System Design

Draft Notes

2 min read