Hoe we email.eu hebben gebouwd · Deel 6 van 7

Hoe we email.eu overeind houden: meet de belofte, niet het proces

Onze publieke statuspagina laat dezelfde cijfers zien waarop we onszelf uit bed bellen. Metingen van buiten naar binnen, waakhonden voor storingen in slow motion, cloudonderhoud overleven, en de nachtelijke kopie die honderden kilometers verderop staat.

Elke provider zegt "betrouwbaarheid is onze hoogste prioriteit", meestal in de verontschuldiging. Deze post is de versie zonder verontschuldiging: wat we werkelijk draaien om email.eu overeind te houden, wat we hebben gebouwd voor de dagen dat er toch iets stukgaat, en waarom onze publieke statuspagina dezelfde cijfers laat zien waarop we onszelf uit bed bellen. Deel 6 van de reeks.

Meet als een klant, niet als een server

De fundamentele fout in monitoring is je servers vragen hoe ze zich voelen. Servers zijn optimisten. Het proces draait, de poort staat open, de schijf heeft ruimte, en ondertussen kan een klant geen mail versturen door een hostnaam in een certificaat of een vastgelopen wachtrij twee lagen hoger.

Onze monitoring is dus van buiten naar binnen gebouwd. Metingen lopen tegen elke pijler zoals een gebruiker hem zou bereiken: via de publieke adressen, over de echte protocollen, met controle op de antwoorden die een echt programma nodig heeft. De mail-TLS-waakhond uit deel 3 is het duidelijkste voorbeeld: een certificaat kan geldig en vertrouwd zijn en tóch die ene hostnaam missen waar een streng mailprogramma op staat, en alleen een controle die verbindt zoals dat programma zal het merken, dus zo verbindt de onze. Het patroon, "meet de belofte en niet het proces", geldt door het hele platform: metingen melden zich aan waar een gebruiker zich zou aanmelden en halen op wat een gebruiker zou ophalen.

Diezelfde metingen voeden status.email.eu. Er zit geen marketinglaag tussen onze alarmering en de publieke pagina; het beschikbaarheidscijfer dat je ziet is berekend uit de controles die ons wakker maken. Een statuspagina die tijdens storingen met de hand wordt bijgewerkt is een persbericht. De onze is een meetinstrument.

Waakhonden voor storingen in slow motion

Storingen krijgen alle aandacht, maar de gebreken die een platform werkelijk uithollen zijn de langzame: een schijf die over weken volloopt, een certificaatvernieuwing die een hostnaam laat vallen, een nachtelijke taak die stil stopt. Voor elk daarvan draaien we een kleine waakhond wiens enige taak professioneel pessimisme is. Eén kijkt dagelijks naar de mailcertificaten, zoals hierboven. Eén kijkt naar de vrije schijfruimte van de databases en klaagt lang voordat "lang voordat het uitmaakt" urgent wordt. Het patroon is bewust dom: een piepkleine onafhankelijke controleur per bekende langzame storing, want een subtiel monitoringsysteem is nog iets dat subtiel kan falen. Elke keer dat we een nieuwe langzame storingsvorm vinden, krijgt die zijn eigen waakhond, en de verzameling wordt alleen maar groter.

Ontwerp voor de slechte dag: neem aan dat de vloer beweegt

Onze cloudleverancier vervangt periodiek de machines onder het Kubernetes-cluster. Kernelpatches, hardwareonderhoud, routine en min of meer onaangekondigd. In een beheerde cloud beweegt de vloer, en het is onze taak daar een non-event van te maken. Alles wat kritisch is draait dus met minstens twee replica's, en, net zo belangrijk, de planner krijgt expliciet te horen welke paren nooit gelijktijdig offline mogen, zodat onderhoud machines leegt in een volgorde die elke dienst zijn quorum laat houden. De maatstaf voor een onderhoudsnacht is niet "we waren snel weer in de lucht". Het is "er is niets waarneembaars gebeurd".

De kopie die ergens anders woont

Redundante servers beschermen tegen machines die falen. Ze beschermen niet tegen de grotere, zeldzamere categorieën: een gebeurtenis op de schaal van een datacentrum, of een operationele fout die zich braaf naar elke replica kopieert. Daarvoor worden de kerngegevens van klanten elke nacht gekopieerd naar een tweede OVH-regio honderden kilometers verderop, op aparte infrastructuur.

Een back-up waar niemand naar kijkt is een hoop en geen back-up, dus de kopie heeft zijn eigen meting: de beheeromgeving controleert hoe fris de kopie in de andere regio is en behandelt een verouderde kopie als een incident op zichzelf, en niet als iets om tijdens een ramp te ontdekken. We houden ons hier aan dezelfde regel als overal: beweer niet meer dan er in productie draait. Naarmate we nieuwe producten toevoegen hoort hun data in die kopie krijgen bij het uitleveren, en de frisheidscontroles zijn de handhaving.

Waar je ons aan kunt houden

Wat we beloven is structuur: twee van alles wat kritisch is, bewust klein gehouden schadegebieden, waakhonden die problemen naar boven brengen voordat klanten dat doen, een statuspagina die ons niet kan vleien, en eerlijke antwoorden daarop als er wel iets stukgaat. Betrouwbaarheid is geen heldendaad. Het is het geduldig wegnemen van elke reden om er een nodig te hebben.

Als laatste in de reeks, deel 7: de zestig seconden nadat je op aanmelden klikt, en dat is waar elke pijler in deze reeks tegelijk moet werken.