Monoliths
Monolith means made of one stone. In the context of software architecture, a monolith refers to a large system designed and developed as a single unit. In a monolithic architecture, there’s typically a single code base, a unified database, and one deployable artifact.
Having a single code base means it usually relies on individual developers’ efforts to keep the code tidy and clean. There’s little room to enforce separation of concerns by design since all code is hosted in a single place. This often results in all the components, modules, and functionalities of the application being tightly coupled and interdependent.
A unified database, typically relational only, in a monolithic application is likely to produce a major – if not only one – schema that contains all the entities from all functionalities. Moreover, each entity table will contain all the columns that address all business concerns related to the entity. There may also be...