Hoe je voor evenementschaal ontwerpt
De architectuurkeuzes die het verschil maken, zijn niet ingewikkeld in concept. Ze vragen wel discipline om vroeg toe te passen, omdat ze later moeilijk zijn toe te voegen.
Stateless applicatielaag. Elke request moet door elke serverinstantie afgehandeld kunnen worden. Geen lokale state, geen sticky sessions. Dit maakt horizontaal schalen triviaal: je voegt instanties toe, ze werken direct mee.
Agressieve caching. Op evenementschaal is caching geen optimalisatie, het is een overlevingsstrategie. Gebruik meerdere cachelagen: een in-memory cache dicht bij de applicatie voor de snelste data, een gedistribueerde cache voor gedeelde staat, en een CDN voor alles wat de client direct kan ontvangen. Stel je de vraag bij elke data-aanvraag: moet dit echt vers zijn, of kan het een paar seconden oud zijn?
Graceful degradation. Bepaal van tevoren wat er gebeurt als een component uitvalt. Een externe API die niet reageert: toon gecachede data of een vriendelijke foutmelding. De real-time verbinding die wegvalt: val terug op polling. Een database die overbelast raakt: serve een statusmelding. Een platform dat gedeeltelijk werkt is beter dan een platform dat volledig vastloopt.
Wachtrijen voor schrijfoperaties. Elke actie waarbij gebruikers data schrijven, zoals een stem uitbrengen of een formulier indienen, kan via een wachtrij lopen. De gebruiker ziet direct een bevestiging; de daadwerkelijke verwerking volgt asynchroon. Dit beschermt de database tegen write-pieken.