Entrez dans l’ère du cloud avec l’hyper-scaling

D’une architecture monolithique …

Depuis longtemps, le coût et la complexité des infrastructures informatiques influent fortement sur le processus de développement des applications. Cette influence est accentuée avec des applications critiques nécessitant de la mise à l’échelle et de la haute disponibilité. Même avec l’arrivée de la virtualisation, l’infrastructure système est restée relativement statique et, de ce fait, les applications ont été développées sans une grande flexibilité à l’esprit, principalement basées sur le modèle 3-tiers.

Ce modèle monolithique résulte du manque de flexibilité des infrastructures systèmes. En découlent des cycles de développement et de mises à jour longs et la nécessité de tester en profondeur les différents tiers pour détecter et prévenir les effets de bord.

3-Tier model cloud

…vers une architecture cloud flexible et moderne

La montée en force du Cloud a provoqué une révolution dans le développement d’applications et la gestion des systèmes d’informations. Les coûts des infrastructure systèmes et les temps de déploiement ont diminué, tandis que la disponibilité et la flexibilité ont grandement augmenté. Les containers contribuent à cette évolution de l’agilité avec un démarrage ultra rapide et une standardisation du packaging des applications.

Pour accompagner ces changements, les modèles de développement d’applications ont dû évoluer pour profiter des avantages du Cloud : l’architecture en « microservices ».

Une application en « microservices » est décomposée en entités logiques indépendantes qui travaillent de concert pour assurer les fonctionnalités de l’application. L’aspect principal de ce modèle est basé sur le mot « micro ». En effet, l’application doit être composée de petits services, entendez « légers », assurant seulement une unique fonction logique. Chaque « microservice » peut communiquer avec les autres, généralement via des API Restful, pour partager des données. Pour finir, les « microservices » doivent pouvoir se mettre à jour de manière indépendante les uns des autres.

Microservices cloud

Avec ce modèle, les applications deviennent alors plus flexibles. Les cycles de développement s’en retrouvent raccourcis, les mises à jour n’impactent plus la globalité de l’application et chaque service peut être mis à l’échelle en fonction de la charge indépendamment. De plus, ce modèle fonctionne particulièrement bien avec les containers : des « micro-VM » à démarrage rapide et facilement déployable sur n’importe quelle architecture. Cerise sur le gâteau, il est possible de combiner un système d’intégration continue avec la flexibilité des containers pour permettre aux développeurs de mettre en jour de manière transparente et sans impact leurs applications.

La haute-disponibilité à grande échelle : Hyper-Scaling

« D’accord, les microservices, c’est une architecture flexible. Mais concrètement ça veut dire quoi ? ».

Les microservices ont changé le mode de scaling des applications en passant d’un modèle vertical à un modèle horizontal. Dans le cas des applications monolithique avec un modèle 3-tiers, il n’était possible que de faire de la mise à l’échelle verticale ou scale up/down. Le scale up consiste à ajouter des ressources physiques (CPUs, RAM, …) à un serveur pour augmenter les performances. Même si l’arrivée de la virtualisation a permis de simplifier l’ajout et la gestion des ressources, les différents tiers n’étaient pas pensés pour utiliser plus d’un ou deux serveurs : le tiers « données » est généralement composé d’un serveur maître et d’un serveur esclave. De plus, la scale up était majoritairement définitif et nous nous retrouvions avec des ressources gaspillées pendant les zones creuses d’activité.

En découpant une application en petite entité logique indépendante, il est possible d’effectuer de la mise à l’échelle horizontale ou scale out/in. Au lieu d’augmenter les ressources d’un seul serveur, vous augmentez le nombre d’instances d’un service donné. En associant le scaling out avec un load balancer, le service est capable d’absorber des pics de charge soudains et importants facilement. Dans le même principe, il est possible de scale in le service pour réduire le nombre d’instances et donc les coûts.

J’ai un projet d’externalisation

Il est même aujourd’hui possible de réaliser le scale out/in automatiquement en fonction de certaines métriques : CPU, … Par exemple, si un groupe d’instances utilise 90% du CPU pendant plus de 10 minutes, une (ou plusieurs) nouvelle(s) instance(s) seront déployées pour absorber la charge. Et inversement, des instances seront stoppées si la charge de travail diminue pour réduire les coûts opérationnels.

Service Autoscale Azure Cloud

L’architecture « microservices » permet de bénéficier d’une certaine flexibilité et simplifie le cycle de vie d’une application. Il reste cependant un point à aborder : la haute disponibilité. En effet, même si l’application est décomposée en « microservices », pourvu qu’elle s’exécute sur un serveur unique il est très probable qu’un jour une panne survienne, rendant l’application indisponible. Ce scénario n’est pas envisageable pour des sites de banques en ligne ou encore des sites d’e-commerces. Il est donc primordial de déployer les applications sur des infrastructures hautement disponibles.

Hyper Scaling Openhost

Application « microservices » hébergée chez Openhost et Azure

En associant l’architecture « microservices » avec une plateforme compatible, vous êtes en capacité de déployer ces services n’importe où. Les mises à jour se propagent de manière transparente et contrôlée et vos services s’adaptent automatiquement à la charge de travail. Vous pouvez, par exemple, utiliser le cloud privé ou le cloud infogéré Openhost pour héberger votre plateforme de « microservices ». En ajoutant Service Fabric d’Azure, il devient possible de répartir globalement et géographiquement vos services pour assurer des performances et une disponibilité maximale.

Le Cloud a changé le mode de consommation de l’information. Aujourd’hui, il est possible de déployer des infrastructures et des applications quasi-instantanément, à bas coût et à n’importe quelle échelle. L’agilité et la disponibilité apportée par le Cloud a modifié les architectures applicatives monolithiques en un modèle plus flexible et moderne : les « microservices ». Utilisée avec une plateforme de containers, cette nouvelle architecture permet de bénéficier de l’hyper-scaling avec une haute-disponibilité maximale et une mise à l’échelle rapide et flexible.