A monolithic architecture is the traditional unified model for the design of a software program. Monolithic, in this context, means composed all in one piece. According to the Cambridge dictionary, the adjective monolithic also means both too large and unable to be changed.
Monolithic software is designed to be self-contained; components of the program are interconnected and interdependent rather than loosely coupled as is the case with modular software programs. In a tightly-coupled architecture, each component and its associated components must be present in order for code to be executed or compiled.
Furthermore, if any program component must be updated, the whole application has to be rewritten, whereas in a modular application, any separate module (such as a microservice) can be changed without affecting other parts of the program. Modular architectures reduce the risk that a change made within one element will create unanticipated changes within other elements, because modules are relatively independent. Modular programs also lend themselves to iterative processes more readily than monolithic programs.
However, there are benefits to monolithic architectures as well. Monolithic programs typically have better throughput than modular approaches, such as the microservice architecture (MSA) and they can be easier to test and debug because, with fewer elements there are fewer variables that come into play.