[Partie 1 sur 2]

Le blog Hike est apparu le 12 décembre 2012 et il y avait alors très peu de lecteurs. En 2016, nous avons atteint 100 millions d'utilisateurs enregistrés et 40 milliards de publications mensuelles. Mais cette croissance a mis en évidence le problème de l'extension de notre infrastructure. Pour l'éliminer, nous avions besoin d'une plateforme performante à un prix abordable. En 2016 et 2017, nous avons été confrontés à de nombreuses interruptions de travail, nous avons dû faire quelque chose de toute urgence, nous avons donc commencé à envisager différentes options.
Nous avions besoin d'une plate-forme cloud capable de créer, tester et déployer rapidement des applications dans un environnement cloud évolutif et fiable. À première vue, il peut sembler que toutes les principales plates-formes cloud sont similaires à bien des égards, mais elles présentent plusieurs différences fondamentales.
Nous diviserons cette publication en 2 parties:
- Raison du choix GCP
- Passer à GCP sans temps d'arrêt
Preuve de concept
Nous avons commencé par prouver l'exactitude du concept, dans lequel nous avons examiné la compatibilité de l'infrastructure existante avec les services offerts par la plate-forme cloud de Google Cloud, ainsi que des éléments planifiés pour un développement futur.
Domaines clés pour la validation du concept:
⊹ équilibreur de charge
⊹ Machine informatique
⊹ Réseaux et pare-feu
⊹ Sécurité
⊹ Disponibilité du cloud
⊹ Big data
⊹ Facturation
La confirmation du concept comprenait des tests et des vérifications de la bande passante des machines virtuelles / du réseau / de l'équilibreur de charge, ainsi que des services de stabilité, d'évolutivité, de sécurité, de surveillance, de charge, de Big Data et d'apprentissage automatique. En juin 2017, nous avons pris une décision importante pour migrer l'intégralité de l'infrastructure vers la plateforme cloud Google Cloud.
Nous voulions choisir une plateforme cloud capable de faire face aux innombrables défis que nous avons rencontrés:
⊹ équilibreur de charge:
Nous avons rencontré de nombreux problèmes liés à la gestion des clusters HAProxy locaux pour gérer quotidiennement des dizaines de millions de connexions utilisateur actives. Le Global Load Balancer (GLB) a résolu bon nombre de nos problèmes.

À l'aide de l'équilibrage de charge global GCP, une seule adresse IP anycast peut transmettre jusqu'à 1 million de demandes par seconde à divers serveurs GCP, tels que les groupes d'instances gérés (MIG), sans avoir besoin de «préchauffage». Notre temps de réponse global s'est amélioré de 1,7 à 2 fois depuis que GLB utilise une implémentation de pool qui vous permet de répartir le trafic sur plusieurs sources.

⊹ Machine informatique:
Il n'y avait pas de gros problèmes dans les ordinateurs eux-mêmes, mais nous avions besoin d'une plate-forme hautes performances à un prix abordable. Le débit total des machines virtuelles Google a augmenté de 1,3 à 1,5 fois, ce qui a permis de réduire le nombre total d'instances de machines virtuelles en cours d'exécution.
Les tests Redis ont été effectués avec un cluster de 6 copies (8 cœurs, 30 Go chacun). Sur la base des résultats ci-dessous, nous concluons que GCP fournit jusqu'à 48% (en moyenne) d'amélioration des performances pour la plupart des opérations REDIS et jusqu'à 77% pour des opérations REDIS spécifiques.
redis-benchmark -h -p 6379 -d 2048 -r 15 -q -n 10000000 -c 100

Le service d'informatique en nuage de Google Compute Engine (GCE) a fourni des avantages supplémentaires dans la gestion de notre infrastructure en utilisant les éléments suivants:
● Groupe d'instances gérées (MIG): MIG nous aide à maintenir les services d'application dans un environnement robuste avec des fonctionnalités multizones, au lieu d'allouer des ressources pour chaque zone. MIG identifie et corrige automatiquement les instances inopérantes dans un groupe pour assurer un fonctionnement optimal de toutes les instances.
● Migration dynamique: la migration dynamique permet de maintenir les instances de machine virtuelle même en cas de défaillance d'un système hôte, par exemple lors de la mise à jour du logiciel ou du matériel. En collaboration avec notre partenaire cloud précédent, nous avons reçu une notification concernant un événement de maintenance planifié et avons été obligés d'arrêter et de démarrer la machine virtuelle afin de passer à une machine virtuelle fonctionnelle.
● Machines virtuelles personnalisées: dans le cadre de GCP, nous pouvons créer nos propres machines virtuelles avec la puissance de traitement du processeur et la quantité de mémoire nécessaire pour des charges de travail spécifiques.
⊹ Réseaux et pare-feu:
La gestion de plusieurs réseaux et règles de pare-feu n'est pas facile et peut être risquée. Le VPC du réseau GCP est global par défaut et fournit une communication interrégionale sans configuration supplémentaire et sans changer la bande passante du réseau. Les règles de pare-feu offrent une flexibilité VPC pour les projets qui utilisent le nom de règle de balise.
Pour un réseau avec une faible latence et une bande passante plus élevée, nous avons été obligés de sélectionner des instances coûteuses avec une bande passante de 10 Gbit / s et des réseaux étendus activés sur ces instances.

⊹ Sécurité:
La sécurité est l'aspect le plus important pour tout fournisseur de services cloud. Dans le passé, la sécurité n'était pas disponible pour la plupart des services ou n'était qu'une option supplémentaire.
Les services cloud de Google sont cryptés par défaut. GCP utilise plusieurs niveaux de cryptage pour protéger les données. L'utilisation de plusieurs niveaux de cryptage protège les données de sauvegarde et vous permet de choisir la meilleure approche en fonction des exigences de l'application, par exemple, en utilisant le service Proxy Identity-Aware et en cryptant les données inactives par défaut.
De plus, GCP corrige les récentes vulnérabilités catastrophiques basées sur l'exécution catastrophiques dans la grande majorité des processeurs modernes (Meltdown, Spectre). Google a développé une nouvelle méthode de modification binaire appelée Retpoline , qui vous permet de contourner ce problème et d'apporter de manière transparente des modifications à l'ensemble de l'infrastructure de travail de manière invisible aux utilisateurs.
⊹ Disponibilité du cloud:
La disponibilité des ressources GCP diffère de celle des autres fournisseurs de solutions cloud, car la plupart des ressources GCP, y compris le panneau de contrôle, sont zonales ou régionales. Nous avons dû gérer plusieurs VPC pour des projets individuels à partir de comptes distincts qui devaient pairer une connexion VPC ou VPN pour une connexion privée. Nous avons également dû conserver une copie de l'image dans un compte séparé.
Dans Google Cloud, la plupart des ressources sont mondiales ou régionales. Ces ressources incluent le panneau de contrôle (où nous pouvons voir toutes les machines virtuelles de notre projet sur un seul écran), des images de disque, des conteneurs pour stocker des données (plusieurs régions du continent), VPC (mais des sous-réseaux séparés sont régionaux), l'équilibrage de charge global, la publication et abonnement, etc.

⊹ Big data:
Nous sommes passés d'une configuration analytique monolithique difficile à gérer à un système BQ entièrement géré, ce qui a conduit à des améliorations dans trois domaines:
● Augmentation de la vitesse de traitement des requêtes jusqu'à 50 fois.
● Systèmes de traitement de données entièrement gérés avec mise à l'échelle automatique.
● Le temps de traitement des données est passé de quelques heures à 15 minutes.
⊹ Charge:
Il était difficile de comparer différents fournisseurs de services cloud, car de nombreux services n'étaient pas similaires ou comparables, différaient pour différents scénarios d'utilisation et dépendaient de scénarios d'utilisation uniques.
Avantages GCP:
● Remises sur l'utilisation à long terme: appliquées à l'utilisation croissante des machines virtuelles lorsque certains seuils sont atteints. Nous pouvons recevoir automatiquement une remise allant jusqu'à 30% sur les charges de travail effectuées pendant la majeure partie du mois comptable.
● Facturation à la minute: lors de l'allocation d'une machine virtuelle dans GCE, des frais sont facturés pour une période minimale de 10 minutes, après quoi une facturation à la minute pour l'utilisation réelle de la machine virtuelle commence. Cela permet une réduction significative des coûts, car nous n'avons pas à payer une heure complète, même si l'instance de machine fonctionne moins d'une heure.
● Équipement supérieur, moins d'instances: nous avons constaté que pour presque tous les niveaux et applications, en utilisant GCP, vous pouvez effectuer la même charge de travail avec les mêmes performances mais moins d'instances.
● Engagement plutôt que redondance: un autre facteur est l'approche de GCP concernant le prix des instances de machine virtuelle. Dans AWS, le principal moyen de réduire le coût d'une instance d'une machine virtuelle consiste à acheter des instances réservées pour une période de 1 à 3 ans. Si la charge de travail nécessitait de modifier la configuration de la machine virtuelle ou si nous n'avions pas besoin de cette instance, nous devions la vendre sur le marché pour des instances réservées à un prix inférieur. GCP a une «remise sur l'engagement» qui s'applique lors de la réservation des ressources de processeur et de mémoire, peu importe les instances de machine virtuelle que nous utilisons.
Conclusion:
Sur la base de cette analyse détaillée, nous avons décidé de passer au GCP et avons commencé à travailler sur le schéma de transition et les listes de contrôle. Dans le prochain article, nous parlerons de ce que nous avons appris lors de la mise en œuvre de ce projet.