Pour faire fonctionner le site web le plus populaire au monde, les ingénieurs de Google connaissent une chose ou deux pour s'assurer de la haute disponibilité du site. Dans le dernier numéro de l'ACM (Association for Computer Machinery), ils révèlent quelques uns de leurs secrets pour le maintien opérationnel sur les grands systèmes.

Avec des systèmes IT très denses, Google peut accuser des lenteurs sur des noeuds individuels soulignent Jeffrey Dean, spécialiste de l'infrastructure chez Google et Luiz André Barroso, en charge du coeur de l'architecture du géant du web, dans leur article intitulé « The tail at scale ». Néanmoins, si les noeuds lents ne peuvent pas être supprimés, ils ont conçu une solution pour offrir un service toujours aussi rapide pour l'utilisateur. « Il s'agit d'un sujet important. Lorsque vous avez une demande qui a besoin de recueillir des informations sur plusieurs machines, intrinsèquement certaines de ces machines seront lentes », constate Ion Stoica, professeur d'informatique à l'Université de Berkeley en Californie et co-fondateur de Conviva, éditeur spécialisé dans l'optimisation des flux vidéo.

Il ajoute que la réponse réside, comme les services Internet, « à essayer de réduire de plus en plus les temps de réponse ». Cependant, « ce problème devient de plus en plus difficile à résoudre, car les infrastructures auront moins de temps pour s'adapter quand quelque chose va mal », continue le professeur et de compléter « il y a donc une zone de recherche et de développement qui focalisera l'attention ces prochaines années ».

Analyser la variabilité des performances

Observer la variabilité des performances est particulièrement importants pour des grandes architectures comme Google, car des problèmes de performances sur un seul noeud peuvent entraîner des retards qui affectent de nombreux utilisateurs. « La variabilité dans la latence des infrastructures est amplifiée au niveau du service », insistent les auteurs de l'article. Par exemple, si on considère un serveur qui répond généralement à une demande en 10 millisecondes, mais qu'il prendre une seconde à chaque 100ème requête.

Dans un environnement avec un serveur unique, cela signifie que l'utilisateur qui sera le 100èmerecevra une réponse lente. Mais si chaque requête est assurée par 100 serveurs, alors 63 utilisateurs sur 100 obtiendront une réponse lente, ont calculé les auteurs. Cette variabilité des performances peut se produire pour plusieurs raisons : le partage de ressources avec l'exécution de plusieurs applications sur un seul serveur ou la longueur de la file d'attente.

Des techniques pour remédier aux ralentissements de performances

Les ingénieurs de Google travaillent sur des techniques pour atténuer un ralentissement des performances des noeuds individuels comme partitionner plus et de manière plus légère les charges de travail, mais aussi mieux gérer les tâches routinières de maintenance. Ainsi, dans l'article, les deux responsables parlent d'une technique appelée Hedged Request dans laquelle les requêtes sont doublées et envoyées à plusieurs serveurs, on valide la première réponse qui est renvoyée.

Une autre méthode est la mise en place de micro-partitions, ou plusieurs partitions sur chaque machine, ce qui permet à l'entreprise d'affiner le load balancing. Enfin, un dernier procédé consiste à mettre en pratique la « latency-induced probation » dans laquelle les serveurs lents sont vite repérés et exemptés de charges supplémentaires.

Pour Ion Stoica, « la plupart des techniques décrites par Google serait applicable à des petites opérations IT, même si les effets ne sont pas aussi prononcés que dans un grand déploiement comme celui de Google ».