The trade-offs between Monolithic vs. Distributed Architectures
Matheus Felisberto
TL;DR
This paper analyzes the trade-offs between monolithic and distributed architectures in the context of cloud computing, arguing that there is no free lunch in architectural design. It combines theoretical foundations with practical patterns and case studies to compare characteristics, patterns, and decision criteria across styles such as layers, microkernels, event-driven systems, and microservices. Key contributions include a structured view of quality attributes, data-management patterns (Saga, eventual consistency patterns, and querying strategies), and decision guidance on cost and observability, along with a cautionary note on the trend of reverting from microservices to monoliths. The practical impact lies in equipping architects with a framework to balance performance, cost, scalability, and reliability, and in highlighting when hybrid or iterative approaches may be the most effective choice.
Abstract
Software architects frequently engage in trade-off analysis, often confronting sub-optimal solutions due to unforeseen or overlooked disadvantages. Such outcomes can detrimentally affect a company's business operations and resource allocation. This article conducts a critical review of archi- tectural styles, particularly focusing on the strengths and weaknesses of both monolithic and distributed architectures, and their relationship to architectural characteristics. It also explores the role of cloud computing in transitioning from monolithic to distributed-based applications. Utilizing a broad range of sources, including papers and books from both industry and academia, this research provides an overview from theoretical foundations to practical applications. A notable trend observed is a shift back from distributed to monolithic architectures, possibly due to factors such as cost, complexity, and performance.
