Containerisation de microservices pour le déploiement dans le cloud

Render image of a cloud containing servers that are connected to a client system via a network.

Faits clés

Contexte

Les services hébergés jusqu'à présent en interne seront à l'avenir mis à disposition dans le cloud. L'objectif est de profiter des avantages d'une méthode de mise à disposition conteneurisée.

Situation avant

Jusqu'à présent, les services de l'environnement web étaient mis à disposition sur des serveurs propres en tant que services Windows. Comme le cloud doit être utilisé à l'avenir comme plateforme de mise à disposition, cette approche ne convient plus et doit être modernisée. L'évolutivité est également limitée. Si les besoins en ressources augmentent considérablement, il faut d'abord mettre en place et intégrer un nouveau serveur.

Objectif

Les objectifs suivants ont été identifiés :

  • Les services peuvent être fournis indépendamment de la plate-forme sous-jacente
  • L'évolutivité des différents services doit être simplifiée et optimisée.
  • Les nouveaux développeurs peuvent commencer à développer le backend localement sans grande configuration et l'exécuter facilement

Mise en œuvre

L'autre objectif de la migration vers le cloud implique que les services doivent être mis à disposition dans un cluster Kubernetes. C'est pourquoi le choix de la conteneurisation s'est porté sur Docker.

Il s'agissait tout d'abord de passer d'un déploiement sur des systèmes Windows à un déploiement sur des systèmes Linux. Pour cela, les dépendances ont été analysées. Une constatation importante a été que, par exemple, pour la bibliothèque PDF, des adaptations devaient être effectuées afin d'exploiter une version Linux fonctionnelle avec les bons paramètres.

Pour optimiser la taille de l'image, les images créées ont été analysées en profondeur à l'aide de l'outil "dive". Pour obtenir le meilleur résultat possible, quelques modifications ont été apportées afin de réduire la taille de l'image.

Un autre aspect important était la possibilité d'exécution locale sur des ordinateurs de développement. Cela doit permettre une collaboration simplifiée entre les prestataires de services externes afin qu'ils puissent mieux soutenir le processus de développement. Pour ce faire, des solutions équivalentes ont été recherchées pour tous les services externes requis, comme la base de données, Redis ou le système de messagerie, qui peuvent être exécutés dans un conteneur Docker. Celles-ci ont été câblées avec les services dans un fichier Docker Compose afin de permettre une exécution en un seul clic.

Ma contribution

Comme j'étais très curieux de la technologie et de la configuration, j'ai apporté un soutien intensif à ce projet afin d'améliorer l'expérience des développeurs et de permettre le déploiement futur dans le cloud. Pour cela, je me suis occupé de la recherche de solutions pour les bibliothèques et les services dépendants afin de rendre l'exécutabilité possible dans Docker. J'ai également créé les fichiers de définition de construction (Dockerfiles) et analysé les images avec "dive". Enfin, j'ai fusionné les artefacts via la définition Docker Compose et permis l'exécution de l'environnement en un seul clic sur les ordinateurs de développement.

Technologies utilisées

La mise en œuvre a été effectuée avec Docker et Docker Compose. Kubernetes n'a été utilisé que lors d'une itération ultérieure, où il s'agissait d'un déploiement concret dans le cloud.

Avantages pour le client

La première étape du déploiement vers le cloud est franchie. Grâce aux résultats du travail de base, le client peut à tout moment demander le déploiement dans le cloud. En outre, l'utilisation des prestataires de services externes a été améliorée. Le client peut ainsi mieux utiliser le budget qui lui a été attribué. Lors de l'intégration de nouveaux collaborateurs, les coûts ont également été réduits de 11 %, car il y a désormais moins d'étapes nécessaires pour configurer l'environnement backend sur l'ordinateur du développeur et l'exécutabilité peut être garantie plus rapidement.

Vous souhaitez migrer votre application vers la plate-forme en nuage et avez besoin d'aide pour y parvenir ?