- Tech
- 16 juli 2019
- Leestijd: 3 minuten
Storingen bij Moneybird: vervelend maar ook leerzaam!
De afgelopen twee weken waren leerzaam voor de engineers van Moneybird. Nadat we in 2018 grote verbeteringen doorgevoerd hebben aan onze infrastructuur, hadden we dit jaar tot nu toe geen grote storingen bij Moneybird. Twee weken geleden kwam daar verandering in, waardoor we helaas niet de hoge kwaliteit dienstverlening hebben kunnen leveren die jullie van ons gewend zijn. We delen in deze blog graag wat we geleerd hebben en hoe we ervoor gaan zorgen dat dit in de toekomst niet meer gaat gebeuren!
Hoe gaan we om met een storing? #
Als je met software werkt, kan een storing helaas altijd gebeuren. Hoewel onze nieuwe architectuur veel beter bestand is tegen storingen, betekent dat niet dat we nooit meer een storing kunnen hebben. Er staan daarom altijd 3 engineers uit een poule van 6 engineers standby om storingen te verhelpen. Zij kunnen 24 uur per dag een telefoontje krijgen zodra onze systemen merken dat er iets mis gaat.
Na het telefoontje gaan de engineers op onderzoek uit. Soms blijkt een melding vals alarm te zijn, andere keren verhelpt de storing zich vanzelf. Maar in sommige gevallen, moeten we echt ingrijpen om te zorgen dat onze klanten geen last hebben van de storing. Dit kan betekenen dan we servers gaan bijschalen of processen stoppen die fouten bevatten.
Uiteindelijk komt er uit elke storing een zogenaamde post mortem. Daarin omschrijven we de storing, de oorzaak, of de meldingen hun werk deden en hoe we dit in de toekomst kunnen voorkomen. Regelmatig bevat een post mortem een reeks verbeteringen die we in de dagen na een storing uitrollen.
Wat hebben we afgelopen weken geleerd? #
Afgelopen 2 weken hadden we last van een reeks kortere storingen, waarbij we op het ergste moment ongeveer 45 minuten zeer slecht bereikbaar waren. Helaas hadden we de oorzaak niet snel in het vizier, waardoor de storing continu terug kon komen. Ondertussen hebben we een aantal mogelijke oorzaken van de storing gevonden en kunnen we dus terugkijken op wat we geleerd hebben:
- Onze monitoring moet uitgebreid worden om niet alleen naar een volledige storing te kijken, maar ook signalen te geven als we langzame wijzigingen zien. In dit geval bleek Moneybird continu een beetje langzamer te worden, zonder dat we dit door hadden.
- Een tijdslimiet tegen te zware database queries bleek na een recente upgrade van onze database niet meer alle scenario's af te dekken. Hierdoor konden queries oneindig doorlopen, met als gevolg dat de database alsmaar trager werd. Het tijdslimiet is ondertussen aangescherpt voor alle scenario's.
- Een aantal queries in onze code bleken onnodig zwaar te zijn, waardoor ze een grote belasting op de database vormden. Omdat we deze queries miljoenen keren per dag uitvoeren, konden ze een grote invloed hebben op de snelheid van Moneybird. We hebben de queries herschreven en beter gekeken hoe vaak de queries uitgevoerd moeten worden.
- Als we na een storing weer online zijn, moeten we waakzaam zijn dat onze achtergrondtaken niet allemaal tegelijk hun achterstand gaan bijwerken. Dat kan een nieuwe storing opleveren.
- Automatisch schalende servers op basis van hoe druk de servers zijn, kan ook averechts werken als de servers het tijdelijk rustig krijgen tijdens een storing. Zodra de storing voorbij is, kunnen we niet snel genoeg opschalen om voldoende capaciteit te hebben.
- Onze communicatie met onze klanten en het team intern, kan beter. Daarom introduceren we een Moneybird statuspagina (opent in nieuw tabblad) waarop de engineers iedereen op de hoogte houden van de voortgang tijdens een storing. Daarnaast hebben we onze procedures rondom storingen verbeterd.
Hoewel we blij zijn dat we zoveel hebben mogen leren, begrijpen we ook dat dit ten koste is gegaan van onze service naar jullie. We willen alle klanten die overlast hebben ondervonden onze excuses aanbieden. Elke storing nemen we serieus zodat we zorgen dat de kans op een volgende storing weer een stukje kleiner is. Bedankt voor jullie geduld!