4 leçons que nous avons tirées de notre dernière mise à niveau de l'infrastructure

Publié: 2022-05-04

Mise à niveau des infrastructures. Une tâche courante, surtout pour une entreprise SaaS comme la nôtre, n'est-ce pas ?

Eh bien, notre dernière n'était pas la mise à jour logicielle typique car nous y avons ajouté une petite touche.

L'objectif principal était de mettre à niveau notre logiciel vers la dernière version, mais cette fois, nous avons inclus deux étapes supplémentaires au projet : réduire le nombre d'adresses IP que nos clients doivent autoriser et obtenir une redondance de la base de données.

Et bien que la majorité de la mise à jour se soit déroulée sans heurts, nous avons également connu des interruptions de service en cours de route.

Dans les lignes suivantes, nous partagerons des informations sur les coulisses de la raison pour laquelle nous avons effectué la mise à niveau, comment elle s'est déroulée et quels sont nos plus grands apprentissages.

Allons droit au but !


Pourquoi nous avons effectué la mise à niveau en premier lieu et ce qu'elle comprenait

Nous comprenons la responsabilité que nous avons et le rôle que NitroPack joue dans le succès des entreprises de nos clients. C'est pourquoi il est crucial de garantir des performances optimales, les normes de sécurité les plus élevées et la stabilité du service 24h/24 et 7j/7.

La mise à niveau régulière de notre infrastructure est l'un des nombreux moyens d'assurer tout cela. Et comme mentionné précédemment, cette mise à niveau particulière comportait trois parties :


1. Mettez à jour notre logiciel vers la dernière version stable

En tant que solution basée sur le cloud, toutes les optimisations que NitroPack effectue pour nos plus de 100 000 sites clients sont effectuées sur notre infrastructure. Actuellement, nous utilisons plus de 100 serveurs pour exécuter le service. Avec cette mise à jour, nous avons dû mettre à jour le logiciel qui orchestre notre flotte de serveurs vers la dernière version stable.


2. Réduisez le nombre d'adresses IP que nos clients doivent autoriser

En termes simples, notre processus de liste blanche d'adresses IP n'était pas convivial.

Avant la mise à jour, nos clients devaient autoriser plus de 40 adresses IP qui desservaient le trafic sortant (requêtes) de NitroPack vers les sites des clients. De plus, ces adresses IP n'étaient pas fixes, ce qui signifie que lorsqu'un de nos serveurs se retire, un nouveau serveur propose une adresse IP différente.

Ce processus de génération de nouvelles adresses IP a obligé nos clients à autoriser régulièrement des dizaines de nouvelles adresses afin que NitroPack puisse optimiser avec succès leurs sites.

Après la mise à jour, nos clients n'ont besoin d'autoriser que trois adresses IP fixes et immuables.


3. Atteindre la redondance de la base de données

Pendant longtemps, nous voulions obtenir une redondance de la base de données car cela améliorerait les performances globales du site Web et du tableau de bord de NitroPack, et nous serions en mesure d'améliorer la sécurité du service. De plus, cette mise à jour nous permettrait d'effectuer de futures mises à jour de la base de données sans aucun temps d'arrêt.

Avec ces objectifs à l'esprit, nous avons décomposé le processus en deux étapes, nous laissant une journée entre les deux afin que nous ayons eu une bonne dose de répit :

Étape 1 : (4 novembre) : réduire le nombre d'adresses IP
Étape 2 : (6 novembre) : redondance de la base de données et mise à jour du logiciel du serveur

Mais tout ne s'est pas déroulé selon nos attentes.


Ce qui ne s'est pas passé comme prévu

Malgré notre préparation minutieuse, nous avons rencontré des problèmes inattendus dans les trois mises à jour. Voici ce qui s'est passé :

Problème n°1 : Problèmes de connectivité pendant le processus de mise à jour IP

Le 4 novembre, nous devions effectuer une mise à jour préliminaire du service, visant à réduire le nombre d'adresses IP pour le trafic sortant de NitroPack.

La version initiale comportait un bogue logiciel interne qui ne permettait pas à notre service de créer des connexions sortantes dans certains cas. Malheureusement, ce problème n'est apparu que lorsque notre infrastructure a connu des situations de pointe de trafic. C'est pourquoi nous n'avons pas détecté le problème sur notre environnement de staging lors des tests initiaux. Le problème de connectivité a empêché NitroPack d'effectuer des optimisations sortantes de manière fiable, et certains de nos clients ont connu une instabilité de service pendant quelques heures.

La bonne nouvelle est que notre équipe de développement a réussi à atténuer le problème rapidement en mettant à jour le logiciel de notre client HTTP.


Problème n° 2 : la sauvegarde de la base de données a pris plus de temps que prévu

Lorsque nous avons commencé à travailler sur la redondance de la base de données le 6 novembre, nous avons rapidement découvert que cela prendrait beaucoup plus de temps que prévu. Cela nous a obligés à pousser la mise à niveau du logiciel du serveur un jour plus tard.

Mais c'était avec de bonnes intentions en tête. Nous voulions être extrêmement prudents avec la sauvegarde de la base de données en premier lieu afin que nous puissions effectuer la redondance sans aucun problème.


Problème n°3 : une erreur de serveur a ralenti le processus de mise à niveau du logiciel

Lorsque nous avons commencé à déployer la mise à niveau du logiciel serveur le 7 novembre, un petit nombre (moins de 1 %) des serveurs ont commencé à générer des erreurs inattendues qui ont finalement empêché le déploiement de la mise à jour et ralenti l'ensemble du processus. Il n'y avait aucun moyen de résoudre les problèmes nous-mêmes et nous avons été obligés de les transmettre à notre fournisseur de serveur.

Bien que cela semble être un petit accroc, compte tenu de l'ampleur de la tâche, cette erreur inattendue a provoqué chez une petite partie (moins de 2 %) des clients de NitroPack de brèves interruptions de service intermittentes.


Problème n°4 : des erreurs CDN 502 inattendues ont provoqué une instabilité du service

Lorsque nous pensions avoir terminé la mise à niveau, notre système de surveillance a commencé à enregistrer des occurrences fréquentes d'erreurs CDN avec le code d'état HTTP 502.

Malheureusement, l'erreur a affecté tous nos clients, provoquant une instabilité de la livraison des ressources CDN pendant quelques jours. Après avoir examiné le problème, nous avons publié une mise à jour logicielle qui corrige définitivement l'instabilité du service.

Une fois que tout fonctionnait correctement avec NitroPack, nous avons fait une réunion rétrospective pour réfléchir à ce que nous pourrions améliorer à l'avenir en fonction de nos enseignements tirés de cette mise à niveau de l'infrastructure.

Mesures que nous prenons pour nous assurer que les mêmes problèmes ne se reproduiront plus à l'avenir

Dans l'ensemble, nous sommes fiers de la façon dont l'ensemble de la mise à niveau s'est déroulé. Nous avons connu une instabilité de service occasionnelle, mais de manière contrôlée, et nous avons réussi à éviter les temps d'arrêt de l'ensemble du service pour l'ensemble de la clientèle.

Cependant, nous savons que nous féliciter et nous concentrer entièrement sur ce qui s'est bien passé ne nous fera pas avancer en tant qu'entreprise et service.

C'est pourquoi nous souhaitons communiquer les améliorations que nous allons implémenter afin d'effectuer les futures mises à jour de manière encore plus efficace. Voici les points principaux :

Environnement de mise en scène compatible avec les tests de résistance

Cela nous permettra de détecter les erreurs qui ne se produisent que dans des situations à volume élevé avec des dizaines de milliers de requêtes. Par exemple, cela nous aurait aidés à identifier à l'avance les problèmes de client HTTP et de connexions réutilisables, et nous aurions pu exécuter la mise à jour IP sans interruption.


Meilleurs systèmes de surveillance et d'alerte

Sur la base des problèmes survenus lors de cette mise à niveau, nous avons pu identifier les domaines dans lesquels nous manquions à la fois de surveillance et d'alerte. La bonne nouvelle est que nous avons déjà configuré les deux pour ces zones.


Meilleure collaboration inter-équipes et communication client plus proactive

Étant donné que les différentes équipes impliquées dans la mise à niveau n'étaient pas idéalement synchronisées les unes avec les autres, nous estimons que nous ne pouvions pas tout à fait communiquer de manière proactive et en temps opportun l'avancement de la mise à niveau à nos clients existants. Nous avions notre page status.nitropack.io pour que tout le monde puisse suivre ce qui se passait avec la mise à jour, mais cela ne suffisait pas.

La prochaine fois, nous communiquerons la progression de la mise à niveau sur autant de canaux que possible, y compris les réseaux sociaux, les e-mails, le tableau de bord et le site Web !


Meilleure coordination avec notre fournisseur de serveur

Pour les futures mises à jour, nous nous efforcerons d'améliorer la coordination avec notre fournisseur de services afin de garantir des solutions rapides aux problèmes inattendus. Cela nous aidera à gérer plus efficacement les erreurs de serveur imprévues.

Enfin, nous tenons à remercier tous nos clients pour leur patience et leur compréhension. Votre confiance est notre force motrice pour améliorer constamment notre service.