Am 4. Oktober kam es bei Evernote zwischen 4:00 Uhr und 6:30 Uhr (UTC−4) zu einer systemweiten Störung. Ab 9:30 Uhr konnten alle angemeldeten Nutzerinnen und Nutzer die App wieder wie gewohnt verwenden. Mit dem Ziel, böswilliges Verhalten einzuschränken, haben wir vorübergehend die Anzahl der Anmeldeversuche für jedes einzelne Konto begrenzt. Am 5. Oktober um 11:30 Uhr wurde die Begrenzung der Anmeldeversuche wieder aufgehoben.
Infolge dieser Maßnahmen sind bei einigen Evernote-Kunden möglicherweise folgende Probleme aufgetreten: Sie konnten sich nicht bei Evernote anmelden, Änderungen nicht synchronisieren bzw. erlebten das Produkt allgemein als kaum reagierend und träge.
Wie kam es dazu?
Eine besonders wichtige (und knifflige) Phase der Migration
Die Störung wurde ausgelöst, als wir eine äußerst umfangreiche Datenbank, die für die Verwaltung von Anmeldungen, Neuregistrierungen und Daten zu den Nutzerprofilen zuständig ist, aus der veralteten Backend-Infrastruktur von Evernote, dem sogenannten Monolithen, in unser neues System überführt haben.
Im Laufe der vergangenen Monate haben wir etliche Elemente unserer Backend-Infrastruktur auf ein moderneres und zuverlässigeres System überführt. Am 4. Oktober haben wir die abschließende Migration der Daten aus unserem alten Monolith-System durchgeführt. Mit Abschluss dieses letzten ausstehenden Schritts können wir nun mit der Umstellung des gesamten Systems auf eine neue Infrastruktur fortfahren und das Fundament des Backends von Evernote endlich in einen weitaus zuverlässigeren Zustand überführen.
Die Abkehr vom Monolithen zugunsten einer stärker dezentral organisierten Infrastruktur ist seit vielen Jahren ein Ziel des Evernote-Teams, und vor wenigen Monaten haben wir diese anspruchsvolle, aber unerlässliche Aufgabe endlich in Angriff genommen.
Wenn dir der Begriff „Monolith“ im Zusammenhang mit Evernote vertraut vorkommt, liegt das vermutlich daran, dass ich ihn bereits vor einiger Zeit im Blogartikel über die zukunftssichere Gestaltung der Grundstrukturen von Evernote erwähnt habe. Im Wesentlichen handelt es sich beim Monolithen um eine einzige, riesige Java Enterprise Edition-Anwendung, die das Speichern und Synchronisieren zahlreicher Elemente innerhalb von Evernote ermöglicht. Der Monolith ist äußerst komplex, lässt sich nur schwer verwalten und hat im Laufe der Jahre etliche technische Altlasten angehäuft.
Diese letzte Migration war die mit Abstand umfangreichste und technisch anspruchsvollste Migration im Zusammenhang mit dem Monolith-System, die wir durchgeführt haben, und darüber hinaus eine der bedeutendsten. Jetzt, da wir sie hinter uns gebracht haben, verfügen wir endgültig über das erforderliche Potenzial, um Verbesserungen und Optimierungen in Zukunft noch schneller und effektiver umzusetzen.
Ein tiefgehender Einblick in die Systemstörung
Um den Service möglichst störungsfrei zu halten, planten wir die Migration der Datenbank für den 4. Oktober um 3:30 Uhr (UTC−4). Als die Clients nach Abschluss der Migration die Verbindung wieder herzustellen versuchten, war der Monolith jedoch nicht in der Lage, eine überdurchschnittlich hohe Anzahl eingehender Anfragen zu verarbeiten. Leider waren wir dadurch gezwungen, das gesamte System neu zu starten und den Datenverkehr schrittweise wieder aufzunehmen.
Nachstehend findest du einen Überblick über die Geschehnisse (sämtliche Zeitangaben beziehen sich auf die Eastern Daylight Time, UTC−4):
4. Oktober
03:30 Uhr
- Das Team begann mit der geplanten Migration.
04:00 Uhr
- Nach Abschluss der Migration waren unsere Server mit der Anzahl der eingehenden Anfragen überfordert, da die Clients gleichzeitig versuchten, wieder eine Verbindung herzustellen.
- Der Monolith war nicht in der Lage, die erhöhte Nachfrage zu bewältigen.
- Wir haben umgehend reagiert und entschieden, alle Client-Anfragen vorübergehend zu blockieren und den Neustart der Server zu ermöglichen, was zu dem erlebten Ausfall führte.
- Während dieses Zeitraums können bei den Kunden folgende Probleme aufgetreten sein:
- Langsame und kaum reagierende Bedienung und Nutzung der App;
- Keine Synchronisation der Notizen möglich, wobei entweder der Status einer erfolglosen Synchronisation oder eine Fehlermeldung angezeigt wurde, die besagte, dass die Synchronisation vorübergehend angehalten wurde;
- (Wenn du nicht angemeldet warst) Keine Anmeldung bei Evernote möglich, wobei entweder ein Fehler „429“ (zu viele Anfragen) oder die Meldung erschien, dass Evernote vorübergehend nicht verfügbar sei.
06:30 Uhr
- Sobald die Server neu gestartet waren, begannen wir damit, den Clients das erneute Verbinden zu gestatten, wobei die Funktionalität zum Speichern von Notizen Vorrang hatte.
- Ab diesem Zeitpunkt kehrte Evernote für viele Nutzer und Nutzerinnen wieder mit der gewohnten Funktionalität zurück..
- Im Laufe der folgenden drei Stunden haben wir den Datenverkehr methodisch nach und nach erhöht, bis der Großteil der Kernfunktionen von Evernote wiederhergestellt war.
09:30 Uhr
- Alle angemeldeten Nutzerinnen und Nutzer konnten die App wieder wie gewohnt verwenden.
- Um unser System weiterhin zu schützen, haben wir vorübergehend die Anzahl der Anmeldeversuche begrenzt, die von jedem einzelnen Konto aus unternommen werden konnten.
- Dies geschah, um zu verhindern, dass potenziell böswillige Personen unser System angreifen und dessen Stabilität oder die Sicherheit der Daten unserer Kunden gefährden konnten.
- Leider betraf diese Einschränkung naturgemäß sowohl böswillige als auch rechtmäßige Nutzerinnen und Nutzer, sodass einige Kunden Probleme damit hatten, sich bei Evernote anzumelden.
5. Oktober
11:30 Uhr
- Wir haben missbrauchsspezifische Limits eingeführt und das globale Limit auf seinen normalen Wert zurückgesetzt.
- Im Vergleich zu der Zeit vor dem Ausfall haben wir in Bezug auf die Leistung von Evernote bereits positive Veränderungen festgestellt, was darauf hindeutet, dass die Migration den beabsichtigten Effekt hatte.
- Die Latenzzeiten fallen insgesamt deutlich kürzer aus als vor der Datenbankmigration.
- Die Echtzeitbearbeitung verzeichnet eine niedrigere Fehlerquote als vor der Datenbankmigration.
Zum jetzigen Zeitpunkt ist der Systemausfall überstanden und die Migration kann als abgeschlossen betrachtet werden. Solltest du nach wie vor Probleme beim Anmelden oder Synchronisieren haben, wende dich bitte an unseren Kundenservice, um direkte Unterstützung zu erhalten.
Ein besseres Verfahren für die Zukunft
Nachdem wir diesen Vorfall nun hinter uns gelassen haben, werden wir die Ereignisse vor und während der Systemstörung gründlich analysieren, damit wir unsere Prozesse für die Zukunft optimieren können. Dabei geht es uns nicht nur um die technischen Aspekte, sondern auch um unsere Kommunikation. Wir hätten viel gezielter und frühzeitiger mit euch allen kommunizieren sollen.
Insbesondere werden wir sicherstellen, dass der Servicestatus unter status.evernote.com in solchen Situationen unverzüglich aktualisiert wird. Wir haben diese Seite am 4. Oktober erst gegen 10:30 Uhr aktualisiert (also mehrere Stunden nach Auftreten der Probleme), und etliche verunsicherte Kunden haben sich an uns gewandt, nachdem sie auf Probleme gestoßen waren, ohne dass weitere Informationen auf unserer Website verfügbar waren. Hierfür möchte ich bei euch allen um Entschuldigung bitten.
Betriebsausfälle sind grundsätzlich unangenehm und wir danken euch für eure Geduld, während wir an einer Lösung gearbeitet haben. In diesem Fall war die Störung eine unglückliche Folge einer eigentlich erfreulichen Entwicklung für die Zukunft von Evernote. Ich hoffe, dass ich schon bald mehr über solche (positiven!) Neuigkeiten berichten kann.
– Federico