Definitie
Een monoliet (Engels: monolith) is een softwaretoepassing waarvan alle onderdelen samen in één codebase en één installatie zitten. De webshop, het CRM-deel, de rapportage, ze draaien allemaal binnen dezelfde applicatie en delen dezelfde database. Updates raken alles tegelijk.
Monolieten staan vaak negatief in de techpers, maar onterecht. Voor veel projecten zijn ze de praktische keuze: simpeler te ontwikkelen, te testen en te beheren dan microservices. Pas bij grote teams of zware schaal worden de nadelen voelbaar.
Waarom het ertoe doet voor MKB
Voor MKB die eigen software laat bouwen is een monoliet bijna altijd het juiste startpunt. Eén ontwikkelaar of klein team kan het overzien, één set servers volstaat en bijhouden welke versie wat doet is doenlijk. Voor jouw bedrijf betekent dat lagere ontwikkel- en beheerkosten.
Het nadeel komt pas als de applicatie of het team groeit. Dan kan elke wijziging gevolgen hebben elders. Belangrijk om dan tijdig in te grijpen, voordat het systeem een zogenoemde “big ball of mud” wordt waarin niemand meer durft te veranderen.
Concreet voorbeeld
Een ingenieursbureau met 25 medewerkers laat 7 jaar geleden een projectbeheertool bouwen. Alles zit in één applicatie: uren, projecten, klanten, facturatie, rapportage. De oorspronkelijke ontwikkelaar werkte er solo aan en kon snel functionaliteit toevoegen.
Inmiddels werkt een team van 4 ontwikkelaars aan de tool. Het systeem werkt nog steeds, maar elke release vraagt zorgvuldige coördinatie. In plaats van halsoverkop op microservices over te stappen, koos het bedrijf voor een stapsgewijze aanpak: rapportage werd afgesplitst, de rest bleef monolithisch. Daarmee hield het bedrijf de voordelen en pakte alleen de echte pijnpunten aan.
Misverstanden en valkuilen
- “Monolieten zijn ouderwets.” Niet waar. Veel grote, succesvolle bedrijven draaien op monolieten (Shopify, Basecamp, GitHub had het lang). Goed ontworpen monolieten zijn vaak praktischer dan slecht ontworpen microservices.
- “Een monoliet kan niet schalen.” Wel degelijk, mits goed opgezet. Verticale schaling (zwaardere server) is zelfs vaak eenvoudiger dan bij microservices.
- “Eén bug crasht alles.” Bij slecht ontwerp wel. Bij goed ontwerp (foutafhandeling, isolatie van modules) kan een fout in één deel ook lokaal blijven.
- “Bij twijfel kies microservices.” Het tegendeel is meestal verstandiger. Microservices voegen complexiteit toe; begin simpel en split pas op als de pijn echt groot is.
Wanneer moet je hier wakker liggen, wanneer niet
Wakker liggen: als je monoliet zo groot is geworden dat niemand de volledige werking nog overziet, releases steeds spannender worden, en elke aanpassing nieuwe bugs veroorzaakt. Dat is het moment om delen af te splitsen of de codebase op te schonen.
Niet wakker liggen: als je werkende monoliet voldoet aan de behoefte van je bedrijf en het ontwikkelteam ermee uit de voeten kan. Niet repareren wat niet stuk is.
Gerelateerde termen
- Microservices: de moderne tegenhanger.
- Refactoring: vaak nodig om een monoliet gezond te houden.
- Technische schuld: monolieten kunnen er zwaar onder lijden.
- Database: monolieten delen één database, vaak een kenmerkende eigenschap.