lundi 18 avril 2016

Les microservices - Introduction

Microservices, de quoi parle t'on ? 

Wikipedia en donne la définition suivante :
En informatique, les microservices est un style d'architecture logiciel à partir duquel un ensemble complexe d'applications est décomposé en plusieurs processus indépendants et faiblement couplées, souvent spécialisés dans une seule tâche. Les processus indépendants communiquent les uns avec les autres en utilisant des API langage-agnostiques.
Des API REST sont souvent employées pour relier chaque microservice aux autres. Un avantage avancé est que lors d'un besoin critique en une ressource, seul le microservice lié sera augmenté, contrairement à la totalité de l'application dans une architecture classique, par exemple une architecture trois tiers. Cependant, le coût de mise en place, en raison des compétences requises, est parfois plus élevé.

Le but est de fragmenter ce qui aurait du être une application monolithique souvent difficile à tester et maintenir en de multiples petites applications faiblement couplées qui communiquent entre elles avec des protocoles de communication simple.

Avantages et Inconvénients

Les avantages 

  • Chaque microservice est relativement petit, il répond à une fonctionnalité bien spécifique. Il est donc plus facilement testable.
  • Tous les services peuvent être développés de façon indépendant les uns des autres, il est donc plus facile à déployer. Chaque microservice peut donc avoir son propre langage de programmation et choisir la meilleur "pile technologique" pour répondre au besoin.
  • Plus facile à développer, il est donc plus facile à maintenir ou à faire évoluer.
  • Les pannes sont plus isolées. Si un service tombe en panne il y a peut d’impact sur les autres.

Les inconvénients

  • Il ne faut pas sous-estimer la complexité du développement d'une architecture distribuée. Il ne faut pas hésiter à utiliser des frameworks ou des librairies pour simplifier la mise en place d'une telle architecture.
    • De par leur nombre, le déploiement et la gestion peuvent devenir complexe. Il faut mettre en place un système de monitoring.
    • La forte dépendance au réseau : une hausse du trafique dû aux nombreux appelles entre microservice ainsi qu'une forte dépendance au bon fonctionnement de celui-ci : pas de réseau implique pas de message entre microservice

    Les communications

    Aujourd'hui on retrouve principalement 2 fonctionnements pour les microservices :
    • fonctionnement par ressources, qui utiliseront des api REST, avec un fonctionnement principalement synchrone.
    • fonctionnement par messages, qui utiliseront des bus logicielles "simples" avec un fonctionnement principalement asynchrone.

    Liens

    Wikipedia : Microservices
    Martin Fowler : Microservices, a definition of this new architectural term
    Microservice architecture patterns and best practices

    dimanche 18 janvier 2015

    Revue du web S3-2015

    Quelques liens intéressant :