Hier, Evernote a subi une panne entre 4h00 et 6h30 EDT. À 9h30, l'ensemble des utilisateur·ice·s connecté·e·s pouvaient utiliser l'application normalement. Afin de limiter les comportements malveillants, nous avons temporairement limité le nombre de tentatives de connexion pouvant être effectuées à partir d'un seul compte. À 11h30 aujourd'hui, le 5 octobre, nous avons supprimé la limite des tentatives de connexion.
À la suite de ces actions, certain·e·s client·e·s Evernote ont peut-être rencontré les problèmes suivants : l'impossibilité de se connecter à Evernote, l'impossibilité de synchroniser les modifications et une expérience produit globalement lente et peu réactive.
Qu'est-ce qui a causé cette panne ?
Une migration particulièrement importante (et complexe)
La panne s'est déclenchée lorsque nous avons migré une grande base de données chargée de gérer les connexions, les nouvelles inscriptions et les informations liées au profil utilisateur hors de l'infrastructure backend héritée d'Evernote, le Monolith.
Au cours des derniers mois, nous avons migré d'innombrables éléments de l'infrastructure backend vers un système plus moderne et plus fiable. Hier, nous avons effectué la migration finale des données Monolith. Nous pouvons maintenant avancer dans la transition de l’ensemble du système vers une nouvelle infrastructure et enfin avoir des fondations backend d’Evernote plus saines.
Renoncer au Monolith au profit d'une infrastructure plus décentralisée est un objectif de l'équipe Evernote depuis de nombreuses années. Il y a quelques mois, nous avons décidé de nous atteler à cette tâche ardue, mais essentielle.
Si le nom Monolith vous semble familier, c'est parce que je l'ai mentionné il y a quelque temps quand j'expliquais comment nous voulions pérenniser les fondations d'Evernote. En fait, le Monolith est une énorme et unique application Java Enterprise Edition qui gère le stockage et la synchronisation de plusieurs entités au sein d'Evernote. Le Monolith est extrêmement lourd, difficile à gérer, et a accumulé une dette technique importante au fil des années.
Cette dernière migration était de loin la migration Monolith la plus importante et la plus techniquement difficile à ce jour, et également l'une des plus cruciales. Mais en la réalisant, nous avons libéré un énorme potentiel pour apporter des améliorations plus rapides et plus efficaces à l’avenir.
La panne heure par heure
Afin de minimiser les interruptions de service, nous avions prévu de migrer la base de données à 3h30 EDT le 4 octobre. Cependant, une fois la migration terminée et les clients reconnectés, le Monolith n'était pas en mesure de traiter un nombre inhabituellement élevé de demandes entrantes. Malheureusement, nous avons été obligés de redémarrer l'ensemble du système et de réintroduire progressivement le trafic.
Voici la chronologie de ce qui s'est passé (toutes les heures correspondent à l'heure avancée de l'Est ou EDT).
4 octobre
3h30
- L'équipe commence la migration planifiée
4h00
- Une fois la migration terminée, nos serveurs sont dépassés par le nombre de requêtes entrantes alors que les clients tentent de se reconnecter
- Le Monolith n'a pas été en mesure de s'adapter pour répondre à la demande accrue
- Nous prenons des mesures immédiates et décidons de bloquer temporairement les requêtes des clients et de procéder au redémarrage des serveurs, ce qui entraîne la panne
- Pendant ce temps, les client·e·s rencontrent différents problèmes, notamment les suivants :
- Une expérience dans l'application lente et peu réactive
- L'impossibilité de synchroniser les notes, affichant soit un état de synchronisation inefficace, soit un message d'erreur indiquant que la synchronisation est temporairement suspendue
- (Pour les client·e·s qui ne sont pas connecté·e·s) L'impossibilité de se connecter à Evernote, avec soit une erreur 429 (Trop de demandes) soit un message indiquant qu'Evernote est temporairement indisponible
6h30
- Une fois les serveurs redémarrés, nous commençons à permettre aux clients de se reconnecter, en donnant la priorité aux fonctionnalités d'enregistrement des notes
- À ce stade, Evernote recommence à fonctionner normalement pour une partie des utilisateur·ice·s
- Au cours des trois heures suivantes, nous augmentons méthodiquement et progressivement le trafic jusqu'à ce que la majorité des fonctions principales d'Evernote soient restaurées
9h30
- L'ensemble des utilisateur·ice·s connecté·e·s peuvent utiliser l'application normalement
- Afin de continuer à protéger notre système, nous limitons temporairement le nombre de tentatives de connexion pouvant être effectuées à partir d'un seul compte
- Cela permet d'éviter que des acteurs malveillants potentiels attaquent notre système et compromettent sa stabilité ou la sécurité des données de nos client·e·s
- Malheureusement, ces limites s'appliquent aussi bien aux acteurs malveillants qu'aux utilisateur·ice·s légitimes ; par conséquent, certain·e·s client·e·s tentant de se connecter à Evernote peuvent rencontrer des difficultés
5 octobre
11h30
- Nous introduisons des limites spécifiques aux agresseurs et ramenons les limites globales à leur seuil habituel
- Nous observons des changements positifs dans les performances d'Evernote par rapport à avant la panne, ce qui signifie que la migration a eu l'effet escompté
- La latence globale est inférieure à celle d'avant la migration de la base de données
- Le RTE enregistre un taux d'erreur inférieur à celui d'avant la migration de la base de données - La panne est maintenant terminée et la migration est considérée comme terminée, si vous rencontrez toujours des problèmes de connexion ou de synchronisation, contactez notre équipe pour obtenir de l'aide
Un processus optimisé pour l'avenir
L’incident étant derrière nous, nous effectuons une analyse rétrospective complète des événements qui ont précédé la panne et qui se sont produits pendant celle-ci afin de pouvoir améliorer nos processus à l’avenir. Cette réflexion ne portera pas uniquement sur les aspects techniques, mais également sur nos communications : nous n'avons pas communiqué avec vous de manière assez efficace et rapide.
Nous veillerons tout particulièrement à ce que la page status.evernote.com soit mise à jour immédiatement dans de telles circonstances. Nous n'avons pas actualisé la page avant 10h30 hier, soit plusieurs heures après le début des problèmes, et un grand nombre d'utilisateur·ice·s confus·es m'ont contacté après avoir rencontré des problèmes et n'avoir trouvé aucune explication sur le site Web. J'en suis désolé.
Les pannes ne sont jamais agréables et nous apprécions votre patience pendant que nous cherchons une solution. Dans ce cas, la panne était la conséquence malheureuse d’un développement par ailleurs passionnant pour l’avenir d’Evernote. J'espère partager bientôt d'autres mises à jour (positives !) de ce type avec vous.
- Federico