Un'architettura monolitica è il tradizionale modello unificato per la progettazione di un programma software. Monolitico, in questo contesto, significa composto tutto d'un pezzo. Secondo il dizionario Cambridge, l'aggettivo monolitico significa anche troppo grande e non può essere modificato.
Il software monolitico è progettato per essere autonomo; i componenti del programma sono interconnessi e interdipendenti piuttosto che vagamente accoppiati come nel caso dei programmi software modulari. In un'architettura strettamente accoppiata, ogni componente e i suoi componenti associati devono essere presenti affinché il codice possa essere eseguito o compilato.
Inoltre, se un componente del programma deve essere aggiornato, l'intera applicazione deve essere riscritta, mentre in un'applicazione modulare, qualsiasi modulo separato (come un microservizio) può essere modificato senza influire su altre parti del programma. Le architetture modulari riducono il rischio che una modifica apportata all'interno di un elemento crei cambiamenti imprevisti all'interno di altri elementi, perché i moduli sono relativamente indipendenti. I programmi modulari si prestano anche a processi iterativi più prontamente dei programmi monolitici.
Tuttavia, ci sono anche vantaggi per le architetture monolitiche. I programmi monolitici hanno in genere un throughput migliore rispetto agli approcci modulari, come l'architettura dei microservizi (MSA) e possono essere più facili da testare ed eseguire il debug perché, con meno elementi, ci sono meno variabili che entrano in gioco.