A monolithic application is a single-tiered software application in which the user interface and data access code are combined into a single program on a single platform.

It's also an application that runs multiple components in the same process, on the same system.

An opposite concept of a monolithic application would be using a microservices architecture where the application is split into different components and each component becomes an application of its own.

This kind of architecture makes it possible to have autonomous teams work on individual pieces of the application without breaking the functionality of the other parts.

Most successful microservice stories have started with a monolith that got too big and was broken up. Most of the not-so-great microservice stories are due to the fact that the system was built as a microservice from scratch.

At FastRuby we have experience working in applications with both types of architectures.

Despite this, there are many types of software applications, and we don't advocate for any one in particular. Sometimes a monolith is good enough, sometimes microservices are best. Sometimes having multiple monoliths is the way to go.

As always, the best architecture depends on the type of problems the system needs to solve; the underlying technology; and the teams that are working on the business.