9/11/25, 9:47 AM Monolithic application - Wikipedia
Monolithic application
In software engineering, a monolithic
application is a single unified software application
that is self-contained and independent from other
applications, but typically lacks flexibility.[1] There
are advantages and disadvantages of building
applications in a monolithic style of software
architecture, depending on requirements.[2]
Monolith applications are relatively simple and
have a low cost but their shortcomings are lack of
elasticity, fault tolerance and scalability.[3]
Alternative styles to monolithic applications include Monolithic applications can be compared to
monoliths, such as Uluru, Australia: a large single
multitier architectures, distributed computing and
(mono) rock (lith)
microservices.[2] Despite their popularity in recent
years, monolithic applications are still a good choice
for applications with small team and little complexity. However, once it becomes too complex, you
can consider refactoring it into microservices or a distributed application. Note that a monolithic
application deployed on a single machine, may be performant enough for your current workload
but it's less available, less durable, less changeable, less fine-tuned and less scalable than a well
designed distributed system.[4]
The design philosophy is that the application is responsible not just for a particular task, but can
perform every step needed to complete a particular function.[5] Some personal finance applications
are monolithic in the sense that they help the user carry out a complete task, end to end, and are
private data silos rather than parts of a larger system of applications that work together. Some
word processors are monolithic applications.[6] These applications are sometimes associated with
mainframe computers.
In software engineering, a monolithic application describes a software application that is designed
as a single service.[7] Multiple services can be desirable in certain scenarios as it can facilitate
maintenance by allowing repair or replacement of parts of the application without requiring
wholesale replacement.
Modularity is achieved to various extents by different modular programming approaches. Code-
based modularity allows developers to reuse and repair parts of the application, but development
tools are required to perform these maintenance functions (e.g. the application may need to be
recompiled). Object-based modularity provides the application as a collection of separate
executable files that may be independently maintained and replaced without redeploying the entire
application (e.g. Microsoft's Dynamic-link library (DLL); Sun/UNIX shared object files).[8] Some
object messaging capabilities allow object-based applications to be distributed across multiple
computers (e.g. Microsoft's Component Object Model (COM)). Service-oriented architectures use
specific communication standards/protocols to communicate between modules.
[Link] 1/2
9/11/25, 9:47 AM Monolithic application - Wikipedia
In its original use, the term "monolithic" described enormous mainframe applications with no
usable modularity.[9] This, in combination with the rapid increase in computational power and
therefore rapid increase in the complexity of the problems which could be tackled by software,
resulted in unmaintainable systems and the "software crisis".
Patterns
Here are common architectural patterns used for monolithic applications, each has its own trade-
offs:[3]
Layered architecture
Modular monolith
Microkernel architecture
References
1. Mishra, Mayank; Kunde, Shruti; Nambiar, Manoj (2018). "Cracking the monolith: Challenges in
data transitioning to cloud native architectures". Proceedings of the 12th European Conference
on Software Architecture: Companion Proceedings. New York, NY, USA: Association for
Computing Machinery (ACM). pp. 1–4. doi:10.1145/3241403.3241440 ([Link]
5%2F3241403.3241440). ISBN 9781450364836. S2CID 52295004 ([Link]
[Link]/CorpusID:52295004).
2. Harris, Chandler (2022). "Microservices vs. monolithic architecture: When monoliths grow too
big it may be time to transition to microservices" ([Link]
oservices-architecture/microservices-vs-monolith). [Link].
3. Fundamentals of Software Architecture: An Engineering Approach. O'Reilly Media. 2020.
ISBN 978-1492043454.
4. Monolith to Microservices Evolutionary Patterns to Transform Your Monolith. O'Reilly Media.
2019. ISBN 9781492047810.
5. Information Technology Services Monolithic Application ([Link]
Glossary/[Link]) Archived ([Link]
[Link]/Information/Glossary/[Link]) 2007-09-02 at the Wayback Machine Retrieved on
28 November 2019
6. Microsoft Three-tier Application ([Link]
Retrieved on 3 August 2007
7. "Cloud Adoption As A Part Of The Digital Transformation Journey" ([Link]
cloud-adoption-as-a-part-of-the-digital-transformation-journey/). [Link]. 2 March 2022.
8. Lutkevich, Ben. "dynamic link library (DLL)" ([Link]
definition/dynamic-link-library-DLL). [Link].
9. Raymond, Eric S. (2003). The Art of Unix Programming. Addison-Wesley Professional.
Retrieved from "[Link]
[Link] 2/2