{"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":"containerisierung-von-microservices-fuer-die-bereitstellung-in-der-cloud","status":"publish","type":"page","link":"https:\/\/niwadev.com\/de\/projects-and-professional-experience\/containerization-of-microservices-for-deployment-in-the-cloud\/","title":{"rendered":"Containerisierung von Microservices f\u00fcr die Bereitstellung in der 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\">Eckdaten<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Firma <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>Rolle: Backend Software Entwickler (angestellt)<\/li>\n\n\n\n<li>Zeitraum: November 2021 bis Dezember 2021<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Hintergrund<\/h2>\n\n\n\n<p>Die bisher in-house gehosteten Services sollen k\u00fcnftig in der Cloud bereitgestellt werden. Dabei m\u00f6chte man von den Vorteilen einer containerisierten Bereitstellungsmethode profitieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Situation vor Umsetzung<\/h2>\n\n\n\n<p>Die Services der Weblandschaft wurden bisher auf eigenen Servern als Windows-Dienste bereitgestellt. Da die Cloud k\u00fcnftig als Plattform f\u00fcr die Bereitstellung verwendet werden soll, passt dieser Ansatz nicht mehr und muss modernisiert werden. Die Skalierbarkeit ist ebenfalls eingeschr\u00e4nkt. Bei bedeutend h\u00f6herem Ressourcenbedarf muss erst ein neuer Server aufgesetzt und eingebunden werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zielsetzung<\/h2>\n\n\n\n<p>Folgende Ziele wurden identifiziert:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Services k\u00f6nnen unabh\u00e4ngig der zugrunde liegenden Plattform bereitgestellt werden<\/li>\n\n\n\n<li>Die Skalierbarkeit einzelner Services soll vereinfacht und optimiert werden<\/li>\n\n\n\n<li>Neue Entwickler k\u00f6nnen lokal ohne gro\u00dfes Setup mit der Entwicklung am Backend beginnen und dieses einfach ausf\u00fchren<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Umsetzung<\/h2>\n\n\n\n<p>Die weitere Zielsetzung f\u00fcr die Migration in die Cloud beinhaltet, dass die Services in einem Kubernetes-Cluster bereitgestellt werden sollen. Daher fiel die Wahl zur Containerisierung auf Docker.<\/p>\n\n\n\n<p>Zuerst stand die Umstellung von einem Deployment auf Windows-Systeme auf eine Bereitstellung auf Linux-Systemen an. Daf\u00fcr wurden die Abh\u00e4ngigkeiten analysiert. Eine wichtige Feststellung war, dass beispielsweise f\u00fcr die PDF-Bibliothek Anpassungen vorgenommen werden m\u00fcssen, um eine lauff\u00e4hige Linux-Version mit den richtigen Einstellungen zu betreiben.<\/p>\n\n\n\n<p>Zur Optimierung der Image-Gr\u00f6\u00dfe wurden die erstellten Images mithilfe des Tools \u201edive\u201c intensiv analysiert. Um das Optimum herauszuholen, wurden daraufhin einige \u00c4nderungen vorgenommen, die das Image verkleinerten.<\/p>\n\n\n\n<p>Ein wichtiger Aspekt war zudem die lokale Ausf\u00fchrbarkeit auf Entwicklungsrechnern. Dies soll eine vereinfachte Zusammenarbeit von externen Dienstleistern erm\u00f6glichen, damit diese im Entwicklungsprozess besser unterst\u00fctzen k\u00f6nnen. Dazu wurden f\u00fcr alle extern ben\u00f6tigten Dienste, wie z. B. die Datenbank, Redis oder dem Messaging System \u00e4quivalente L\u00f6sungen recherchiert, die in einem Docker Container ausgef\u00fchrt werden k\u00f6nnen. Diese wurden zusammen mit den Services in einer Docker Compose Datei verdrahtet, um eine Ausf\u00fchrung \u00fcber einen einzigen Klick zu erm\u00f6glichen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mein Beitrag<\/h2>\n\n\n\n<p>Da ich sehr neugierig auf die Technologie und das Setup war, habe ich intensiv bei diesem Projekt unterst\u00fctzt, um das Entwicklererlebnis zu verbessern und die k\u00fcnftige Bereitstellbarkeit in die Cloud zu erm\u00f6glichen. Dazu habe ich mich um die Recherche nach L\u00f6sungen f\u00fcr Bibliotheken und abh\u00e4ngigen Diensten gek\u00fcmmert, um die Ausf\u00fchrbarkeit in Docker m\u00f6glich zu machen. Des Weiteren erstellte ich die Build-Definitionsdateien (Dockerfiles) und analysierte die Images mit \u201edive\u201c. Zum Schluss verheiratete ich die Artefakte \u00fcber die Docker Compose Definition und erm\u00f6glichte die 1-Klick-Ausf\u00fchrung der Umgebung auf den Entwicklungsrechnern.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Eingesetzte Technologien<\/h2>\n\n\n\n<p>Die Umsetzung erfolgte mit Docker und Docker Compose. Kubernetes kam erst in einer sp\u00e4teren Iteration zum Einsatz, wo es um die konkrete Bereitstellung in der Cloud ging.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kundennutzen<\/h2>\n\n\n\n<p>Der erste Schritt f\u00fcr das Deployment in die Cloud ist getan. Mithilfe der Ergebnisse aus der Grundlagenarbeit kann der Kunde jederzeit die Bereitstellung in die Cloud veranlassen. Zudem wurde die Auslastung externer Dienstleister verbessert. Somit kann der Kunde das beauftragte Budget besser ausnutzen. Beim Onboarding neuer Mitarbeiter reduzieren sich die Kosten ebenfalls um 11 %, da nun f\u00fcr das Setup der Backend-Umgebung auf dem Entwicklerrechner weniger Schritte notwendig sind und die Ausf\u00fchrbarkeit schneller sichergestellt werden kann.<\/p>\n\n\n<div class=\"gb-container gb-container-09dc38ee\">\n\n<p>Sie m\u00f6chten Ihre Anwendung auf die Cloud-Plattform verlagern und ben\u00f6tigen Unterst\u00fctzung bei der Umsetzung?<\/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\/de\/kontakt\/\" target=\"_blank\" rel=\"noreferrer noopener\">Kontaktieren Sie mich noch heute!<\/a><\/div>\n<\/div>\n\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Die bisher intern gehosteten Dienste sollen k\u00fcnftig in der Cloud bereitgestellt werden. Lesen Sie hier, wie das Problem in diesem Projekt gel\u00f6st wurde.<\/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\/de\/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\/de\/wp-json\/wp\/v2\/pages\/560","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/comments?post=560"}],"version-history":[{"count":1,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/pages\/560\/revisions"}],"predecessor-version":[{"id":858,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/pages\/560\/revisions\/858"}],"up":[{"embeddable":true,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/pages\/537"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/media\/561"}],"wp:attachment":[{"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/media?parent=560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}