samiadrici-cloud-architecture-microservices

Microservices

Microservices 800 400 Samia Drici

Home >> Cloud Computing >> Microservices

Comme son nom l’indique, l’architecture microservices ou en microservices repose sur la création d’une application sous la forme d’un ensemble de petits services.

Caractéristiques des microservices

Dans une architecture en microservices, chaque service :

  • s’exécute dans son propre processus
  • communique avec d’autres processus avec des protocoles (HTTP/HTTPS, WebSockets, AMQP)
  • implémente une fonctionnalité métier de bout en bout
  • est développé de manière autonome
  • peut être déployé indépendamment
  • a son modèle de données de domaine et sa logique de domaine associés (souveraineté et gestion des données décentralisée).

Microservices et conteneurs

La conteneurisation est une méthode qui permet de virtualiser les ressources matérielles (systèmes de fichiers, réseau, processeur, mémoire vive, etc.) nécessaires à l’exécution d’une application. Dans le conteneur, sont aussi stockées toutes les dépendances des applications : fichiers, bibliothèques, etc. La conteneurisation propose une manière de virtualiser des ressources de manière légère, avec une isolation garantie par le système d’exploitation. Ces ressources sont ainsi plus facilement portables d’un système à un autre. C’est un puissant accélérateur de développement d’applications. Plus légers que les machines virtuelles, les conteneurs sont idéaux pour accueillir des microservices (à raison d’un par conteneur), auxquels ils apportent un certain degré d’indépendance.

Docker est le premier acteur du marché qui a lancé, en 2013, le concept de conteneurs d’applications qui conservent leur cycle de vie. Il a changé la manière de percevoir les conteneurs, qui, jusque-là, étaient considérés comme des machines virtuelles légères. L’approche de Docker en matière de conteneurisation repose sur la décomposition des applications : c’est-à-dire la capacité à réparer ou à mettre à jour une partie d’une application sans devoir désactiver l’ensemble de cette dernière.

Avantages des microservices

Fiabilité

Lorsqu’ils sont développés correctement, ces services indépendants n’ont aucun impact les uns sur les autres. Cela signifie que, lorsqu’un élément tombe en panne, l’ensemble de l’application ne cesse pas de fonctionner comme c’est le cas avec le modèle monolithique.

Déploiement facilité

L’indépendance des services permet aux équipes de travailler indépendamment les unes de autres. Elles peuvent mettre en production le nouveau code produit, sans risquer d’impacter le code d’autres équipes. Ainsi, elles délivrent de la valeur plus souvent, pouvant même aller jusqu’au déploiement continu.

Scalabilité automatique

La scalabilité automatique ou autoscaling est un principe fondamental du Cloud. Il consiste à augmenter les ressources automatiquement en cas de besoin et à les réduire lorsque celles-ci ne sont plus nécessaires. Votre application est alors en mesure d’absorber des pics de charge sans perte de performances. L’architecture en microservices permet de gérer automatiquement la mise à l’échelle horizontale (scale-out) des conteneurs via un orchestrateur, Kubernetes par exemple. Ainsi, votre application conteneurisée s’adapte à la charge nativement, sans nécessité de développement spécifique.

Optimisation financière

Le concept du “Pay As You Go”, identifié comme l’un des avantages du cloud, signifie que vous ne payez que ce que vous consommez réellement. L’autoscaling ne présente donc pas seulement des avantages en terme de performances applicatives. Il est également un élément clé de l’optimisation financière dans le cloud puisqu’il permet de n’augmenter sa consommation de ressources que lorsque la charge le nécessite. L’indépendance des services est également un atout pour l’optimisation financière. L’architecture en microservices vous permet d’effectuer un scale-out ciblé de la zone fonctionnelle qui nécessite plus de puissance de traitement ou plus de bande passante réseau pour satisfaire une demande ponctuelle, sans pour autant effectuer un scale-out d’autres zones de l’application qui n’en ont pas besoin.