Comment l’avènement des microservices va changer la conception de l’infrastructure des datacenters

Basés sur les principes de l’architecture orientée services, les microservices tirent parti des conteneurs logiciels et de l’informatique distribuée pour permettre de créer rapidement de nouvelles applications cloud.

L’essor que connaissent aujourd'hui les microservices est directement lié à la nécessité de gérer les pics et creux de la demande. Quand un grand nombre de clients affluent en même temps vers un site internet et commencent à solliciter le service qui y est proposé, chacun des divers composants requis pour assurer ce service peut se « dilater » de façon élastique pour s’adapter à l’ampleur de la charge à absorber.

C’est par leur approche des charges et de leur provisionnement que les microservices se distinguent avant tout des infrastructures informatiques classiques. Sur la plupart des applications multicouches, des serveurs physiques ou des machines virtuelles étaient jusqu’alors utilisés pour héberger de grandes parties de l’application. Les machines physiques tendaient à être provisionnées à l’excès afin de pouvoir absorber la charge prévisionnelle, même si ce surdimensionnement peut occasionner des dépenses inutiles si les pics attendus ne se concrétisent pas.

La virtualisation a justement été développée pour limiter ce risque et permettre aux entreprises de maximiser l’usage de leurs ressources informatiques physiques. Les machines virtuelles peuvent être provisionnées pour composer avec une hausse soudaine de la charge, mais elles dépendent toujours d’un ensemble de serveurs physiques implantés dans un lieu précis.

En comparaison, les microservices reposant sur le recours à des conteneurs logiciels peuvent être distribués plus efficacement vers une multitude de points de l’infrastructure physique. De nouveaux conteneurs plus proches de la source de demande peuvent ainsi être provisionnés. Dans le cas d’une application web déployée à l’échelle mondiale, ces nouveaux conteneurs peuvent être activés dans la zone géographique la plus proche du lieu d’où émane la demande du client, de sorte à réduire les temps de latence. La clé est de s’assurer que les données sont bien dupliquées sur les serveurs installés dans ces zones.

Une des difficultés tient en l’imprévisibilité de la demande. Jusqu’ici, les entreprises désireuses d’optimiser leur gestion des pics de demande n’avaient guère d’autre choix que d’y consacrer des budgets importants ou de s’en remettre à la virtualisation pour maximiser les taux d’utilisation. Néanmoins, les architectures utilisées en entreprise jusqu’alors n’étaient conçues ni pour composer avec les niveaux de fluctuation qui peuvent prévaloir aujourd'hui ni pour protéger les parties de l’infrastructure applicative excessivement sollicitées lors des pics de demande. Pour peu que s’ajoutent à cela des processus mieux adaptés à la gestion du provisionnement que du déprovisionnement, le gaspillage de ressources est inévitable.

L’objet des microservices est de limiter ce gâchis et les dépenses afférentes en permettant de provisionner les ressources plus efficacement dans l’ensemble du Datacenter, plutôt qu’au sein d’une application monolithique.

Pour que des applications conçues à partir d’éléments d’informatique distribuée puissent prendre en charge des microservices, il convient de gérer ceci de plus près. Lorsque le fonctionnement d’un service requiert l’adjonction de composants de data streaming, ceux-ci peuvent être ajoutés automatiquement et de façon coordonnée. De la même façon, si une base de données doit s’étendre à un certain nombre de nœuds, ces derniers peuvent être ajoutés.

Cela étant, tandis qu’une base de données distribuée comme Cassandra tendra à gagner en volume au fil du temps, un service de streaming reposant sur une architecture telle que Kafka variera presque tous les jours. De même, l’utilisation d’outils comme Apache Spark à des fins d’analyse de données en temps quasi-réel sera aussi soumise à des fluctuations. Selon que la demande augmente et diminue, les ressources présentes au sein du Datacenter peuvent être déplacées et affectées à d’autres postes. Il est ainsi possible d’optimiser l’efficacité et la résilience au sens large dans l’ensemble de l’application cloud plutôt que d’examiner une à une ses différentes couches dans cette optique.

Cette variabilité des niveaux des composants de l’application peut permettre de réduire la quantité de ressources physiques à solliciter. En allouant ces dernières de façon plus dynamique, on peut en effet réduire la taille de l’environnement dans son ensemble et ainsi économiser de l’espace et des ressources financières. Les pics de demande les plus extrêmes peuvent être compensés par le recours à des services supplémentaires sur le cloud hybride ou public. Lorsque la duplication des données présente tous les gages de fiabilité, l’opération n’est pas bien compliquée.

Appliquée à la conception de Datacenters, l’utilisation des microservices va permettre aux entreprises de diminuer leur recours aux machines physiques, dont certaines pourront prendre la forme d’un serveur physique doté du strict minimum pour prendre en charge des conteneurs. Pour orchestrer le fonctionnement du Datacenter, des outils comme Kubernetes ou Mesos permettront de gérer le provisionnement et de garder le contrôle de ces conteneurs.

En parallèle, il importera toutefois que les entreprises – a fortiori celles qui sont implantées sur plusieurs sites – puissent compter sur des tuyaux plus larges, capables d’acheminer davantage de connectivité. Elles pourront par exemple décider de se doter de Datacenters plus petits, mais fonctionnant de façon plus distribuée, ou bien se tourner vers des tierces parties ou des fournisseurs de cloud public pour renforcer leurs services. Quelle que soit la stratégie retenue, le réseau qui sert de fil conducteur à ces multiples sites aura une incidence majeure sur la qualité du service.

Dans un futur proche, la conception des microservices devrait suivre la même évolution que celle des Datacenters, qui avait commencé par la virtualisation des serveurs x86. Cela étant, ce phénomène s’accompagnera d’un gain de flexibilité dans la façon dont les conteneurs logiciels sont affectés à des machines physiques à des fins de traitement. Le remplacement de certaines sections au sein de chaque application peut se faire avec un minimum d’impact sur l’ensemble du service, ce qui représente un moyen supplémentaire d’améliorer la résilience et l’efficacité du système.

Pour les entreprises qui n’hébergent pas de données confidentielles au sein de ces applications, les stratégies mêlant le recours à des fournisseurs externes et à des services sur le cloud public verront les Datacenter adopter une architecture de plus en plus minimaliste. Pour celles qui doivent composer avec des contraintes de confidentialité et de conformité, l’adoption des microservices conduira à une utilisation accrue de ressources informatiques physiques en interne. On devrait ainsi voir dans un futur proche des Datacenter dont l’utilisation et le rendement seront maximisés par rapport à ceux utilisés aujourd'hui pour des applications plus classiques.