Gestion d’applications distribuées micro-services

Gestion d’applications distribuées micro-services

Profil Étudiant(e) niveau fin de bachelier ou master
Prérequis Connaissance de base des principes fondamentaux du cloud computing
Connaissance de Linux, Java (un plus)
Bonne compréhension de l’anglais technique écrit
Durée Minimum 12 semaines

Contexte

Les micro-services ou architectures orientées micro-services sont un style d’architecture permettant de définir des services modulables et indépendants, dans lequel chaque service exécute un processus unique.

Ces services sont généralement packagés en conteneurs et déployés dans un environnement CaaS (Containers en tant que Service /Containers as a Service). Les CaaS sont une catégorie de services Cloud permettant aux développeurs de logiciels de télécharger, d’organiser, d’exécuter, de gérer, de mettre à l’échelle et d’arrêter des conteneurs en utilisant l’interface web ou l’API d’un fournisseur. Comme c’est généralement le cas pour les services Cloud, les utilisateurs de CaaS payent uniquement pour les ressources qu’ils utilisent.

Les micro-services se définissent comme étant facilement testables et maintenables, peu couplés et axés sur une fonctionnalité. Ce type d’architecture a de nombreux avantages : mise à l’échelle (scalabitilé) granulaire, ré-utilisabilité des composants, déploiement indépendant, faible couplage, interopérabilité du sytème (intégration facilitée de nouvelles technologies), facilite la création de tests unitaires,… Si les micro-services offrent une grande flexibilité, ils génèrent davantage de complexité : comment intégrer et combiner efficacement les services, comment assurer la gestion du trafic/connectivité entre les différents services, comment équilibrer les charges, quid de la confidentialité des communications/échanges, comment s’assurer que l’application fonctionne correctement (tests d’intégration fonctionnels, gestion des pannes) ? comment s’assurer de la résilience du système, comment centraliser les logs du système ?

Le maillage de services ou service mesh permet de répondre à ces problématiques. Les services mesh tels que Istio, permettent de gérer, via un ensemble de règles et de définitions, les communications d’une application micro-service : chaque micro-service d’une application est associé à un proxy (sidecar) qui sera capable d’appliquer des règles préalablement définies : sécurisation des échanges, règles de routage, stratégie de résilience (circuit breaker), intégration avec un API-Gateway… Ces proxy sont orchestrés par un "control pane".

Travail à réaliser
La première partie du stage consiste à établir un état de l’art des technologies permettant de mettre en œuvre un service mesh sur une application distribuée composée de micro-services :

Comparaisons des fonctionnalités d’outils
Association d’ outils (notamment pour le reporting)
Le service mesh devra être directement intégré à Kubernetes et devra être le plus générique possible afin de pouvoir être intégré à d’autres applications.

Suite à cette évaluation, le service mesh devra être mis en œuvre dans un cas d’utilisation lié à un projet de recherche du Cetic.

Enfin, le stage se termine par une documentation détaillée et une présentation.

Keywords

CaaS, Micro-services, service-mesh, Istio, Kubernetes, API-Gateway, conteneurs, docker

Encadrement :

L’entièreté du travail sera encadré. La ou le stagiaire utilisera une plateforme de développement permettant le suivi constant de ses progrès. Elle / il devra également faire preuve d’autonomie et d’esprit innovant.

Références

Contact

Fabian Steels