Pourquoi une Architecture de Microservices ?

Partager

L’architecture microservices a été inventée pour résoudre certaines difficultés causées par les gros projets car avec le temps les projets informatiques ont tendance à grossir et petit à petit on étend les fonctionnalités existantes, avec de nombreux rajouts et peu de suppressions, on termine avec un mille feuilles fonctionnel compliqués et difficilement gérable.

Quand la quantité de code augmente, sa maintenance devient de plus en plus complexe. Même avec une architecture logicielle solide, les interdépendances entre les différentes briques augmentent avec le temps.

Le microservice est une méthode de développement d’applications logicielles en tant que suite de services modulables et indépendamment, dans lesquels chaque service exécute un processus qu’il communique à travers un mécanisme défini au préalable.

1)  Architecture monolithique :

Les applications monolithiques ont généralement un code source assez volumineux, ce qui est souvent intimidant voir même rebutant pour certains développeurs.  Lorsque des nouveaux développeurs rejoignent l’équipe de projet, il leur faut alors passer beaucoup de temps pour se familiariser avec le code source de l’application et comprendre les dépendances entre les modules.  Avec une architecture monolithique, il est difficile d’apporter des améliorations à l’application sans prendre le risque d’affecter les autres fonctionnalités. Toute modification de l’application entraîne plusieurs révisions et approbations qui augmentent le temps du cycle de déploiement .

Problème n°1 : Comment assurer la haute disponibilité des applications ?

Problème n°2 : Comment répondre rapidement aux nouvelles fonctionnalités métiers et faire évoluer les applications d’une façon très fréquente.

Problème n°3 : Comment être indépendant des technologies utilisées tout en sachant que ces technologies évoluent très vite. Architecture MicroservicesA Architecture Microservices  :

2) Architecture Microservices:              

L’architecture Microservices est implémentée pour des applications logicielles complexes et volumineuses.

Composés d’un ou plusieurs services, les Microservices peuvent être déployés indépendamment les uns des autres en restant faiblement dépendants.

Chacun de ces Microservices se concentre sur l’achèvement d’une fonctionnalité ou bien d’un module bien déterminé.

La figure ci-dessus représente un schéma simplifié d’une application basée sur l’architecture Microservices.

Chaque micro-service peut être:

  • Développé indépendamment
  • Avoir une base de données indépendante
  • testé indépendamment
  • déployé indépendamment
  • (Technologie différente des autres)

Les applications de microservice permettent aux développeurs de décomposer plus facilement leur travail en petites équipes indépendantes et d’intégrer ce travail au fur et à mesure.

En résumé, les microservices offrent les avantages suivants aux développeurs :

  • Service de taille petite :

Fondamentalement, un service ne doit pas exécuter plus qu’une fonctionnalité de la logique métier applicative, il sera donc facile à gérer par rapport à un contexte monolithique.

  • Ciblé: Comme mentionné précédemment, chaque microservice est conçu pour ne livrer qu’une seule fonctionnalité. Lors de la conception d’un microservice, l’architecte doit se préoccuper du service, qui sera son produit livrable.
  • Améliore les temps de déploiement et les temps de chargement pour IDE
  • Facilite le débogage en isolant les problèmes
  • Permet aux équipes de travailler indépendamment les unes des autres
  • Les équipes de développement peuvent être assez réduite en utilisant les toutes dernières technologies.

Pour être objectif, quelques inconvénients existent aussi :

  • Avec beaucoup de services, l’intégration et la gestion des applications peuvent s’avérer complexes
  • Gestion des mécanismes de communication entre tous les services
  • Consommation de mémoire souvent supérieure à une architecture monolithique

Conclusion :

Les microservices constituent un nouveau modèle pour les développeurs de logiciels : ils leur permettent de développer des applications d’entreprise beaucoup plus complexes sous la forme d’une suite de compartiments fonctionnels connexes.

Il s’agit clairement d’une idée puissante qui offre de sérieux avantages pour la conception et la mise en œuvre d’applications d’entreprise.

En contre-partie l’Architecture Microservice est coûteuse en terme d’infrastructure, il faut penser à cette architecture dans les cas où les projets sont volumineux et évoluent au cours du temps.

Mais nous retiendrons que les gros services mondiaux que sont

PAYPAL, NETFLIX, eBAY, AMAZON, TWITTER, SOUNDCLOUD et d’autres sont tous passés du monolithique aux microservices.

Houssem BELAID- Consultant FullStack JAVA / JEE