Architecture Navixy : comment nous maintenons un temps de disponibilité de 99,99%.

Chez Navixy, nos clients nous demandent souvent comment le processus de fourniture de services est organisé du côté du serveur. Par exemple, à quoi faut-il s'attendre en cas de défaillance d'un des composants du système, existe-t-il une protection contre les temps d'arrêt ou la perte de données, comment gérons-nous les problèmes liés aux nœuds de réseau intermédiaires, etc.
Dans ce billet, nous vous emmènerons sous le capot de l'architecture Navixy. Nous n'entrerons pas dans les détails techniques, mais nous dévoilerons certaines des caractéristiques opérationnelles du système pour vous montrer comment il fonctionne réellement.
Tolérance aux pannes et fiabilité
Comme la plateforme Navixy fournit des services à des clients du monde entier 24 heures sur 24 et 7 jours sur 7, son fonctionnement sans faille et sa fiabilité doivent être au premier plan. Il est donc naturel que nos clients potentiels posent les questions suivantes au moment de décider de se connecter ou non au système : " Quelle est la tolérance aux pannes et la fiabilité du système ? Quelles sont les méthodes utilisées pour la sauvegarde ?
Pour réduire les risques de panne, le système est segmenté en plusieurs nœuds régionaux qui, bien qu'interconnectés, ne dépendent pas les uns des autres. Chaque nœud régional est construit selon un modèle commun et tolérant aux pannes, tandis que le nombre de serveurs exécutant des fonctions distinctes est choisi en fonction des exigences de traitement de la charge de travail pour chacun des nœuds. En termes de SLA (Service Level Agreement), nous nous engageons à maintenir notre indicateur de temps de fonctionnement cible à un niveau d'au moins 99,99 %, c'est-à-dire 52,56 minutes de temps d'arrêt par an. En 2020, notre temps de disponibilité n'est pas descendu en dessous de 99,999 %.
C'est lors de la conception de l'architecture du système que nous avons opté pour une segmentation en nœuds régionaux. Cela semblait être le moyen le plus simple de réduire les retards du réseau pour les clients accédant au système à partir de différents lieux géographiques, et cela permettait également de réduire l'impact des problèmes techniques régionaux sur la stabilité globale. Au cours de cette période, nous avons été témoins de difficultés rencontrées par d'autres fournisseurs mondiaux, qui ont entraîné des interruptions de la connectivité réseau de pays et de continents entiers. C'est dans cet esprit que nous faisons aujourd'hui de notre mieux pour atténuer ces risques.
Passons maintenant à un diagramme illustrant la disposition des nœuds régionaux au sein de Navixy.

Outre la tolérance aux pannes, nous effectuons régulièrement des sauvegardes et répliquons tous les composants clés nécessaires à la fourniture continue des services. Comme nous utilisons l'infrastructure Amazon AWS, le schéma de sauvegarde comprend à la fois le lancement d'un certain nombre de serveurs virtuels pour exécuter des fonctions spécifiques et leur distribution dans plusieurs centres de données au sein d'un point de présence géographique (PoP). Par exemple, un nœud régional à Francfort est réparti sur trois centres de données indépendants, tandis que toutes les bases de données sont répliquées de manière continue.
Nous sauvegardons également tous les serveurs clés sur une base quotidienne. Il s'agit de sauvegardes de bases de données, de disques virtuels ou de serveurs entiers.
Il convient de souligner que chaque serveur remplit une fonction distincte. Cela signifie que si l'un d'entre eux tombe en panne, le reste du réseau continuera à fonctionner sans être affecté. Dans un tel cas, nous déployons immédiatement un serveur similaire à partir d'un modèle préparé et y téléchargeons automatiquement la version actuelle de n'importe lequel de nos composants logiciels. Notre infrastructure CD/CI permet d'obtenir la dernière version prête à l'emploi de n'importe quel composant et de la déployer sur n'importe quel serveur. La procédure de déploiement est déclenchée automatiquement par ansible.
Augmenter la disponibilité globale
Outre des niveaux élevés de fiabilité, nous nous engageons à fournir à nos clients un accès rapide à nos services. Le système avec des nœuds régionaux distribués nous permet de localiser nos services plus près du consommateur final. Cependant, même en appliquant ce système, certaines régions peuvent avoir un accès limité en raison de lignes de communication encombrées ou de distances importantes. Pour atténuer ces facteurs, nous tirons parti du réseau de distribution de contenu CloudFlare CDN, qui s'est avéré plus performant que le simple transfert de données directement au client sur l'internet. Nos tests ont montré que cette approche peut réduire la latence de 50 % lors du chargement des portails des clients. À la mi-septembre 2020, nous avons achevé le passage à CloudFlare CDN pour tous les clients de Navixy.
Comme le travail avec CloudFlare peut comporter certains défis, nous sommes libres d'activer ou de désactiver le CDN CloudFlare "en cours de route" pour tous les utilisateurs ou des groupes de clients spécifiques. Lors d'un basculement, qu'il s'agisse d'un serveur de sauvegarde, d'une base de données ou de tout autre service, le basculement est transparent et n'est pas perçu par nos utilisateurs.
Stabilité et sécurité
Nous gardons constamment un œil sur notre infrastructure distribuée afin de garantir sa stabilité. Pour obtenir une vue d'ensemble de l'état actuel de tous les composants de l'infrastructure et garantir leur fonctionnement sans faille, nous utilisons les canaux suivants :
- Système de surveillance interne.
- Un service externe vérifiant la disponibilité des composants publics.
- Services intégrés d'Amazon signalant les problèmes liés à l'infrastructure d'Amazon et aux serveurs virtuels en cours d'exécution.
En ce qui concerne la sécurité du système, nous appliquons des politiques et des procédures strictes en matière de sécurité et de confidentialité des données des clients. L'accès aux nœuds régionaux est surveillé en permanence et réservé au personnel autorisé. Des listes de contrôle d'accès limitent l'accès à notre infrastructure en nuage aux seules adresses IP autorisées.
Conclusion
Traitant le trafic de centaines de milliers d'appareils GPS et recevant des millions de demandes de clients sur une base quotidienne, l'architecture des services Navixy reste simple à mettre en œuvre et offre de grandes possibilités d'évolutivité. La topologie de notre réseau nous permet d'augmenter linéairement les performances de n'importe lequel de nos nœuds, et d'en ajouter facilement un autre si nécessaire.
Notre priorité absolue est de fournir à nos clients des services tolérants aux pannes, fiables, abordables, stables et sûrs. Nous continuerons à travailler dur pour vous fournir des solutions techniques qui correspondent aux normes établies.
Nous espérons que ce billet vous a été utile et que vous avez appris quelque chose de nouveau. Pour toute autre question sur ce sujet, n'hésitez pas à nous contacter à l'adresse [email protected]. Et comme d'habitude, vous êtes toujours les bienvenus pour partager vos réflexions sur l'architecture des services dans la section des commentaires ci-dessous.