{"id":560,"date":"2024-02-28T11:38:52","date_gmt":"2024-02-28T10:38:52","guid":{"rendered":"https:\/\/niwadev.com\/?page_id=560"},"modified":"2025-01-13T14:48:28","modified_gmt":"2025-01-13T13:48:28","slug":"conteneurisation-des-microservices-pour-le-deploiement-dans-le-nuage","status":"publish","type":"page","link":"https:\/\/niwadev.com\/fr\/projects-and-professional-experience\/containerization-of-microservices-for-deployment-in-the-cloud\/","title":{"rendered":"Containerisation de microservices pour le d\u00e9ploiement dans le cloud"},"content":{"rendered":"<div class=\"gb-container gb-container-7737f87d\">\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash-1024x576.webp\" alt=\"Render image of a cloud containing servers that are connected to a client system via a network.\" class=\"wp-image-561\" srcset=\"https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash-1024x576.webp 1024w, https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash-300x169.webp 300w, https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash-768x432.webp 768w, https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash-18x10.webp 18w, https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash.webp 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Faits cl\u00e9s<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Entreprise <a href=\"https:\/\/www.lew-sc.de\/lew-sc\" target=\"_blank\" rel=\"noopener\" title=\"LEW Service &amp; Consulting GmbH\">LEW Service &amp; Consulting GmbH<\/a><\/li>\n\n\n\n<li>R\u00f4le : d\u00e9veloppeur de logiciels backend (CDI)<\/li>\n\n\n\n<li>P\u00e9riode : Novembre 2021 \u00e0 d\u00e9cembre 2021<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Contexte<\/h2>\n\n\n\n<p>Les services h\u00e9berg\u00e9s jusqu'\u00e0 pr\u00e9sent en interne seront \u00e0 l'avenir mis \u00e0 disposition dans le cloud. L'objectif est de profiter des avantages d'une m\u00e9thode de mise \u00e0 disposition conteneuris\u00e9e.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Situation avant<\/h2>\n\n\n\n<p>Jusqu'\u00e0 pr\u00e9sent, les services de l'environnement web \u00e9taient mis \u00e0 disposition sur des serveurs propres en tant que services Windows. Comme le cloud doit \u00eatre utilis\u00e9 \u00e0 l'avenir comme plateforme de mise \u00e0 disposition, cette approche ne convient plus et doit \u00eatre modernis\u00e9e. L'\u00e9volutivit\u00e9 est \u00e9galement limit\u00e9e. Si les besoins en ressources augmentent consid\u00e9rablement, il faut d'abord mettre en place et int\u00e9grer un nouveau serveur.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Objectif<\/h2>\n\n\n\n<p>Les objectifs suivants ont \u00e9t\u00e9 identifi\u00e9s :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Les services peuvent \u00eatre fournis ind\u00e9pendamment de la plate-forme sous-jacente<\/li>\n\n\n\n<li>L'\u00e9volutivit\u00e9 des diff\u00e9rents services doit \u00eatre simplifi\u00e9e et optimis\u00e9e.<\/li>\n\n\n\n<li>Les nouveaux d\u00e9veloppeurs peuvent commencer \u00e0 d\u00e9velopper le backend localement sans grande configuration et l'ex\u00e9cuter facilement<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Mise en \u0153uvre<\/h2>\n\n\n\n<p>L'autre objectif de la migration vers le cloud implique que les services doivent \u00eatre mis \u00e0 disposition dans un cluster Kubernetes. C'est pourquoi le choix de la conteneurisation s'est port\u00e9 sur Docker.<\/p>\n\n\n\n<p>Il s'agissait tout d'abord de passer d'un d\u00e9ploiement sur des syst\u00e8mes Windows \u00e0 un d\u00e9ploiement sur des syst\u00e8mes Linux. Pour cela, les d\u00e9pendances ont \u00e9t\u00e9 analys\u00e9es. Une constatation importante a \u00e9t\u00e9 que, par exemple, pour la biblioth\u00e8que PDF, des adaptations devaient \u00eatre effectu\u00e9es afin d'exploiter une version Linux fonctionnelle avec les bons param\u00e8tres.<\/p>\n\n\n\n<p>Pour optimiser la taille de l'image, les images cr\u00e9\u00e9es ont \u00e9t\u00e9 analys\u00e9es en profondeur \u00e0 l'aide de l'outil \"dive\". Pour obtenir le meilleur r\u00e9sultat possible, quelques modifications ont \u00e9t\u00e9 apport\u00e9es afin de r\u00e9duire la taille de l'image.<\/p>\n\n\n\n<p>Un autre aspect important \u00e9tait la possibilit\u00e9 d'ex\u00e9cution locale sur des ordinateurs de d\u00e9veloppement. Cela doit permettre une collaboration simplifi\u00e9e entre les prestataires de services externes afin qu'ils puissent mieux soutenir le processus de d\u00e9veloppement. Pour ce faire, des solutions \u00e9quivalentes ont \u00e9t\u00e9 recherch\u00e9es pour tous les services externes requis, comme la base de donn\u00e9es, Redis ou le syst\u00e8me de messagerie, qui peuvent \u00eatre ex\u00e9cut\u00e9s dans un conteneur Docker. Celles-ci ont \u00e9t\u00e9 c\u00e2bl\u00e9es avec les services dans un fichier Docker Compose afin de permettre une ex\u00e9cution en un seul clic.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ma contribution<\/h2>\n\n\n\n<p>Comme j'\u00e9tais tr\u00e8s curieux de la technologie et de la configuration, j'ai apport\u00e9 un soutien intensif \u00e0 ce projet afin d'am\u00e9liorer l'exp\u00e9rience des d\u00e9veloppeurs et de permettre le d\u00e9ploiement futur dans le cloud. Pour cela, je me suis occup\u00e9 de la recherche de solutions pour les biblioth\u00e8ques et les services d\u00e9pendants afin de rendre l'ex\u00e9cutabilit\u00e9 possible dans Docker. J'ai \u00e9galement cr\u00e9\u00e9 les fichiers de d\u00e9finition de construction (Dockerfiles) et analys\u00e9 les images avec \"dive\". Enfin, j'ai fusionn\u00e9 les artefacts via la d\u00e9finition Docker Compose et permis l'ex\u00e9cution de l'environnement en un seul clic sur les ordinateurs de d\u00e9veloppement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Technologies utilis\u00e9es<\/h2>\n\n\n\n<p>La mise en \u0153uvre a \u00e9t\u00e9 effectu\u00e9e avec Docker et Docker Compose. Kubernetes n'a \u00e9t\u00e9 utilis\u00e9 que lors d'une it\u00e9ration ult\u00e9rieure, o\u00f9 il s'agissait d'un d\u00e9ploiement concret dans le cloud.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Avantages pour le client<\/h2>\n\n\n\n<p>La premi\u00e8re \u00e9tape du d\u00e9ploiement vers le cloud est franchie. Gr\u00e2ce aux r\u00e9sultats du travail de base, le client peut \u00e0 tout moment demander le d\u00e9ploiement dans le cloud. En outre, l'utilisation des prestataires de services externes a \u00e9t\u00e9 am\u00e9lior\u00e9e. Le client peut ainsi mieux utiliser le budget qui lui a \u00e9t\u00e9 attribu\u00e9. Lors de l'int\u00e9gration de nouveaux collaborateurs, les co\u00fbts ont \u00e9galement \u00e9t\u00e9 r\u00e9duits de 11 %, car il y a d\u00e9sormais moins d'\u00e9tapes n\u00e9cessaires pour configurer l'environnement backend sur l'ordinateur du d\u00e9veloppeur et l'ex\u00e9cutabilit\u00e9 peut \u00eatre garantie plus rapidement.<\/p>\n\n\n<div class=\"gb-container gb-container-09dc38ee\">\n\n<p>Vous souhaitez migrer votre application vers la plate-forme en nuage et avez besoin d'aide pour y parvenir ?<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/niwadev.com\/fr\/contact\/\" target=\"_blank\" rel=\"noreferrer noopener\">Contactez-moi d\u00e8s aujourd'hui !<\/a><\/div>\n<\/div>\n\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Les services pr\u00e9c\u00e9demment h\u00e9berg\u00e9s en interne seront \u00e0 l'avenir fournis dans le nuage. D\u00e9couvrez ici comment le probl\u00e8me a \u00e9t\u00e9 r\u00e9solu dans le cadre de ce projet.<\/p>","protected":false},"author":1,"featured_media":561,"parent":537,"menu_order":32,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-560","page","type-page","status-publish","has-post-thumbnail"],"aioseo_notices":[],"uagb_featured_image_src":{"full":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash.webp",1200,675,false],"thumbnail":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash-150x150.webp",150,150,true],"medium":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash-300x169.webp",300,169,true],"medium_large":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash-768x432.webp",768,432,true],"large":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash-1024x576.webp",1024,576,true],"1536x1536":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash.webp",1200,675,false],"2048x2048":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash.webp",1200,675,false],"trp-custom-language-flag":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/growtika-WELyMatW3mw-unsplash-18x10.webp",18,10,true]},"uagb_author_info":{"display_name":"niwadev.com","author_link":"https:\/\/niwadev.com\/fr\/blog\/author\/niwadev-com\/"},"uagb_comment_info":0,"uagb_excerpt":"The services previously hosted in-house are to be provided in the cloud in future. Read here how the problem was solved in this project.","_links":{"self":[{"href":"https:\/\/niwadev.com\/fr\/wp-json\/wp\/v2\/pages\/560","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/niwadev.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/niwadev.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/niwadev.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/niwadev.com\/fr\/wp-json\/wp\/v2\/comments?post=560"}],"version-history":[{"count":1,"href":"https:\/\/niwadev.com\/fr\/wp-json\/wp\/v2\/pages\/560\/revisions"}],"predecessor-version":[{"id":858,"href":"https:\/\/niwadev.com\/fr\/wp-json\/wp\/v2\/pages\/560\/revisions\/858"}],"up":[{"embeddable":true,"href":"https:\/\/niwadev.com\/fr\/wp-json\/wp\/v2\/pages\/537"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/niwadev.com\/fr\/wp-json\/wp\/v2\/media\/561"}],"wp:attachment":[{"href":"https:\/\/niwadev.com\/fr\/wp-json\/wp\/v2\/media?parent=560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}