Eventual consistency is een belofte over gedistribueerde data: als je stopt met wijzigingen, worden alle kopieën uiteindelijk gelijk, ook al verschillen ze heel even. Het is de regel die veel grote, verspreide systemen gebruiken om snel en online te blijven, in plaats van elke kopie te dwingen om op exact hetzelfde moment overeen te komen.

Denk aan een groepschat waarbij iedereen een wankel mobiel signaal heeft. Je stuurt een bericht en het komt bij sommige vrienden eerder aan dan bij andere. Een paar seconden zien mensen verschillende versies van het gesprek, maar zodra de signalen bijtrekken, ziet iedereen dezelfde thread. Dat korte gat is eventual consistency in actie. Je ziet het vaak in NoSQL-systemen en in caches zoals Redis, waar snelheid en beschikbaarheid zwaarder wegen dan perfecte overeenstemming op elke milliseconde.

De reden dat dit bestaat is natuurkunde en uitval. Als data op servers in verschillende steden staat, is ze perfect in de pas houden traag en breekt het zodra één server onbereikbaar is. Eventual consistency accepteert een minieme, tijdelijke afwijking zodat het hele systeem blijft reageren.

Je komt het vaker tegen dan je denkt. Plaats een reactie op een drukke site en een vriend aan de andere kant van de wereld ziet hem misschien een seconde of twee later. Wijzig je profielfoto en de oude blijft soms nog even op een paar plekken hangen tot elke cache ververst. Dat gat is bijna altijd een kwestie van milliseconden, en voor een feed of een teller merkt of maalt niemand erom.

Bij TopDevs kiezen we alleen voor eventual consistency waar een korte vertraging onschadelijk is, en houden we harde garanties voor de data die het zich echt niet kan veroorloven om ook maar een seconde achter te lopen.