{"id":26208,"date":"2024-02-29T23:40:19","date_gmt":"2024-02-29T22:40:19","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=26208"},"modified":"2024-03-01T02:02:26","modified_gmt":"2024-03-01T01:02:26","slug":"die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/","title":{"rendered":"Die Meere der Systemtechnik navigieren: Eine Reise durch die Bereitstellung einer Aktien-Webanwendung in der Cloud"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Auf zu neuen Ufern: Einleitung<\/h3>\n\n\n\n<p class=\"has-text-align-justify\">Die Cloud-Computing-Technologie hat die Art und Weise, wie Unternehmen Anwendungen entwickeln, bereitstellen und skalieren, revolutioniert. In diesem Beitrag, der im Rahmen der Vorlesung \u201c143101a System Engineering und Management\u201d entstanden ist, werden wir uns darauf konzentrieren, wie eine bereits bestehende Webanwendung zur Visualisierung und Filterung von Aktienkennzahlen auf der IBM Cloud-Infrastruktur bereitgestellt werden kann. Dabei liegt der Fokus nicht auf der Anwendung selbst, sondern vielmehr auf den verwendeten Cloud-Ressourcen und dem Prozess der automatisierten Bereitstellung mithilfe von Terraform. Ziel ist es, eindr\u00fccklich zu zeigen, wie die Verwendung von cloud-native Ressourcen und Tools die Hochverf\u00fcgbarkeit, Skalierbarkeit und Effizienz einer Webanwendung gew\u00e4hrleisten kann.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Den Kurs festlegen: \u00dcberblick Architektur<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Aufbau der Aktien Webanwendung<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Dashboard2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"581\" data-attachment-id=\"26230\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/dashboard2\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Dashboard2.png\" data-orig-size=\"2540,1440\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Dashboard2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Dashboard2-1024x581.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Dashboard2-1024x581.png\" alt=\"\" class=\"wp-image-26230\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Dashboard2-1024x581.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Dashboard2-300x170.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Dashboard2-768x435.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Dashboard2-1536x871.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Dashboard2-2048x1161.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Die Webanwendung, die vorab im Rahmen der Veranstaltung \u201c143111a Web Application Architecture\u201d entstanden ist, umfasst die folgenden Services:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Next.js Frontend<\/strong>: Eine interaktive Anwendungsoberfl\u00e4che, die es Benutzern erm\u00f6glicht, Kennzahlen von Aktien (KGV, KBV, etc.) auf einem Dashboard anzeigen zu lassen und neue, interessante Aktien durch eine Filter-Funktion zu finden.<\/li>\n\n\n\n<li><strong>Node.js Web-Server<\/strong>: Ein Backend-Server, der Anfragen vom Frontend entgegennimmt und verarbeitet. Der Web-Server ist f\u00fcr die Authentifizierung des Nutzers zust\u00e4ndig und speichert die Nutzerdaten in einer MongoDB.<\/li>\n\n\n\n<li><strong>Python-Server<\/strong>: Ein Server, der Aktiendaten von einer externen Aktien-API abruft und sie f\u00fcr das Web-Server-Backend bereitstellt. Eine Redis Datenbank wird zum Cachen von Aktiendaten verwendet, da t\u00e4glich nur eine beschr\u00e4nkte Anzahl an Requests an die externe API gerichtet werden k\u00f6nnen.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Architektur der Cloud Infrastruktur<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large is-style-rectangular\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Infrastruktur.drawio.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"746\" data-attachment-id=\"26229\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/infrastruktur-drawio\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Infrastruktur.drawio.png\" data-orig-size=\"1102,803\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Infrastruktur.drawio\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Infrastruktur.drawio-1024x746.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Infrastruktur.drawio-1024x746.png\" alt=\"\" class=\"wp-image-26229\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Infrastruktur.drawio-1024x746.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Infrastruktur.drawio-300x219.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Infrastruktur.drawio-768x560.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Infrastruktur.drawio.png 1102w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">Networking mit Virtual Private Cloud<\/h5>\n\n\n\n<p class=\"has-text-align-justify\">Die Verwendung einer VPC (Virtual Private Cloud) als logisch isoliertes Netzwerk innerhalb der \u00f6ffentlichen IBM Cloud Infrastruktur erm\u00f6glicht es, Cloud-Ressourcen in einer privaten und sicheren Umgebung zu betreiben. Die VPC wird in der Region Frankfurt bereitgestellt und erstreckt sich \u00fcber drei Zonen, wobei jede Zone einem physischen Datenzentrum in dieser Region entspricht. Durch die geografische Redundanz des Netzwerks \u00fcber drei voneinander unabh\u00e4ngige Datenzentren kann die Verf\u00fcgbarkeit des Netzes gew\u00e4hrleistet werden, selbst wenn eines dieser Datenzentren ausfallen sollte. Die VPC verf\u00fcgt au\u00dferdem \u00fcber einen reservierten Adressbereich(Subnet) und ein \u00f6ffentliches Gateway in jeder Zone, um Services organisieren und mit dem Internet verbinden zu k\u00f6nnen. Die Regulierung von eingehendem und ausgehendem Netzwerkverkehr auf die VPC kann durch die Verwendung von Sicherheitsgruppen und Zugriffskontrolllisten bewerkstelligt werden.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Orchestrierung mit Kubernetes<\/h5>\n\n\n\n<p class=\"has-text-align-justify\">Der zentrale Baustein der Infrastruktur ist ein Kubernetes Cluster, das in der VPC als Einzel-Zonen-Cluster mit einer Node bereitgestellt wird. Kubernetes (altgriechisch f\u00fcr <em>Steuermann<\/em>, passend zum Seemanns-Thema dieses Beitrags) ist eine Open-Source-Plattform, die eine automatische und skalierbare Container-Orchestrierung bietet. Dies erm\u00f6glicht es, Anwendungen flexibel zu skalieren und automatisch auf wechselnde Lasten zu reagieren. Die containerisierten Services der Aktien-Webanwendung werden durch Deployments in Pods im Cluster bereitgestellt. Zus\u00e4tzlich verf\u00fcgt jeder Pod \u00fcber einen eigenen Kubernetes-Service, der ihn innerhalb des Clusters f\u00fcr andere Pods freigibt. Nur der Pod, in dem das Next.js-Frontend gehostet wird, verf\u00fcgt \u00fcber einen zus\u00e4tzlichen Loadbalancer-Service, der eine Verbindung \u00fcber das Internet erm\u00f6glicht. Durch die Verwendung von Kubernetes kann eine hohe Verf\u00fcgbarkeit der einzelnen Services garantiert werden, da ein gecrashter oder fehlerhafter Pod automatisch neu gestartet wird.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Persistenter Speicher mit MongoDB und Redis<\/h5>\n\n\n\n<p class=\"has-text-align-justify\">Die persistente Datenspeicherung wird durch die Verwendung von IBM Cloud Databases for MongoDB und Redis sichergestellt. Beide Datenbanken werden au\u00dferhalb des VPC Netzwerkes in der IBM Cloud bereitgestellt. MongoDB erm\u00f6glicht die effiziente Speicherung von Daten in einem dokumentenorientierten NoSQL-Format, w\u00e4hrend Redis als In-Memory-Datenbank eine schnelle Datenverarbeitung und -abfrage erm\u00f6glicht. Um von dem Kubernetes Cluster auf die Datenbanken zugreifen zu k\u00f6nnen, werden Service Credentials ben\u00f6tigt, welche \u00fcber ein sog. Service Binding als Kubernetes Secret im Cluster hinterlegt werden und von Pods verwendet werden k\u00f6nnen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Architektur der CI\/CD Infrastruktur<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/CICD_pipeline.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"631\" data-attachment-id=\"26209\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/cicd_pipeline\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/CICD_pipeline.png\" data-orig-size=\"1347,830\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"CICD_pipeline\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/CICD_pipeline-1024x631.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/CICD_pipeline-1024x631.png\" alt=\"\" class=\"wp-image-26209\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/CICD_pipeline-1024x631.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/CICD_pipeline-300x185.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/CICD_pipeline-768x473.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/CICD_pipeline.png 1347w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Unser Projekt sollte auf jeden Fall eine effiziente CI\/CD Pipeline haben, die wir f\u00fcr Automatisierungen nutzen k\u00f6nnen. Ebenfalls soll durch Versionskontrolle die Zusammenarbeit erleichtert werden, da \u00c4nderungen transparent und nachvollziehbar sind. Automatische Builds werden bei jedem Push auf den Main Branch durchgef\u00fchrt, wodurch eine schnelle Iteration erm\u00f6glicht wird. Die Docker-Images werden zentral auf Docker Hub gespeichert, was die Verf\u00fcgbarkeit und Verwaltung erleichtert. Dank dieser Pipeline ist kein manuelles Eingreifen erforderlich, was zu einer geringeren Fehleranf\u00e4lligkeit und vor allem zu reproduzierbaren Builds f\u00fchrt.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Containerization mit Docker<\/h5>\n\n\n\n<p class=\"has-text-align-justify\">Docker ist eine Plattform, die es erm\u00f6glicht, Anwendungen in isolierten Containern auszuf\u00fchren. Diese Container sind eigenst\u00e4ndige Umgebungen, die alles enthalten, was eine Anwendung zur Ausf\u00fchrung braucht. Die Vorteile von Docker liegen in seiner Portabilit\u00e4t, Effizienz und Skalierbarkeit. Durch die Verwendung von Docker k\u00f6nnen Anwendungen schnell entwickelt, getestet und bereitgestellt werden, was Zeit und Kosten spart. Au\u00dferdem verbessert Docker die Sicherheit, indem es Konflikte zwischen Anwendungen verhindert und die Ressourcennutzung optimiert.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Um die Entwicklung und das Testen unserer drei Services zu erleichtern, haben wir uns f\u00fcr die Containerisierung mit Docker entschieden. Jeder Service wird in einem eigenen Container gehostet, der sowohl f\u00fcr die lokale Entwicklung als auch f\u00fcr das Hosting auf einem Kubernetes-Node verwendet werden kann.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Version-Control mit Gitlab und GitHub<\/h5>\n\n\n\n<p class=\"has-text-align-justify\">F\u00fcr die Versionierung der Aktien-Anwendung verwenden wir die GitLab Instanz aus der HdM Infrastruktur, w\u00e4hrend die Terraform Konfigurationsdateien in einem separaten GitHub-Repository abgelegt sind. Durch die Verwendung von Git als Versionskontrollsystem k\u00f6nnen wir \u00c4nderungen an unserem Code verfolgen, verwalten und kollaborativ bearbeiten. GitLab und GitHub bieten eine benutzerfreundliche Oberfl\u00e4che f\u00fcr das Management unserer Repositories sowie Funktionen wie Branching und Merging, um parallel an verschiedenen Funktionen zu arbeiten und \u00c4nderungen sicher zusammenzuf\u00fchren. Dies f\u00f6rdert die Zusammenarbeit im Team und erm\u00f6glicht eine effektive Code-Verwaltung. Dar\u00fcber hinaus erm\u00f6glichen die beiden Versionskontroll-Plattformen die Integration von CI\/CD Pipelines, was die Automatisierung von Tests und Bereitstellungsprozessen erleichtert und die Effizienz unserer Entwicklungsprozesse weiter steigert.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Terraform-as-a-Service mit IBM Cloud Schematics<\/h5>\n\n\n\n<p class=\"has-text-align-justify\">Mit Schematics bietet IBM Cloud ein Cloud-Angebot an, das das Infrastructure-as-Code-Tool Terraform (dazu gleich mehr) in die Cloud bringt. Das bedeutet, dass Terraform-Konfigurationsdateien ohne die lokale Installation von Terraform in der Cloud ausgef\u00fchrt werden k\u00f6nnen und mehrere Nutzer am selben Konfigurations-State arbeiten k\u00f6nnen. Schematics bezieht die Konfigurationsdateien aus einem verkn\u00fcpften GitHub-Repository und erm\u00f6glicht die Organisation von Cloud-Ressourcen in Arbeitsbereichen. Mit IBM Schematics ist es ebenfalls spielend leicht eine tekton CI\/CD Pipeline zwischen dem verkn\u00fcpften GitHub-Repository und dem Arbeitsbereich bereitzustellen, wodurch dieser automatisch mit den neuesten \u00c4nderungen an der Terraform Konfiguration versorgt wird.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Segel Setzen: Implementierung und Bereitstellung<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Bereitstellung mit Terraform<\/h4>\n\n\n\n<p class=\"has-text-align-justify\">Terraform, ein Open-Source Infrastructure as Code Tool von HashiCorp, erm\u00f6glicht die deklarative Definition, Bereitstellung und Verwaltung von Cloud-Ressourcen durch Konfigurationsdateien in der HashiCorp Configuration Language (HCL). Terraform automatisiert die Bereitstellung und Skalierung von Cloud Ressourcen, sorgt f\u00fcr wiederholbare, konsistente Deployments und orchestriert alles von der Erstellung virtueller Maschinen bis hin zur Konfiguration von Datenbanken. Die deklarative Natur von Terraform gew\u00e4hrleistet Konsistenz zwischen Umgebungen, w\u00e4hrend Automatisierung, Wiederholbarkeit und minimierte menschliche Fehler die Verwaltung der Infrastruktur effizienter machen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Modularit\u00e4t durch Terraform Modules<\/h4>\n\n\n\n<div class=\"wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular\"><div class=\"tiled-gallery__gallery\"><div class=\"tiled-gallery__row\"><div class=\"tiled-gallery__col\" style=\"flex-basis:61.52124%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" data-attachment-id=\"26225\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/cluster-3\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/cluster.png\" data-orig-size=\"1896,1428\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cluster\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/cluster-1024x771.png\" data-attachment-id=\"26225\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/cluster-3\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/cluster.png\" data-orig-size=\"1896,1428\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cluster\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/cluster-1024x771.png\" role=\"button\" tabindex=\"0\" aria-label=\"Open image 1 of 4 in full-screen\"srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/cluster-1024x771.png?strip=info&#038;w=600 600w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/cluster-1024x771.png?strip=info&#038;w=900 900w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/cluster-1024x771.png?strip=info&#038;w=1200 1200w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/cluster-1024x771.png?strip=info&#038;w=1500 1500w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/cluster-1024x771.png?strip=info&#038;w=1800 1800w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/cluster-1024x771.png?strip=info&#038;w=1896 1896w\" alt=\"\" data-height=\"1428\" data-id=\"26225\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=26225\" data-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/cluster-1024x771.png\" data-width=\"1896\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/cluster-1024x771.png\" data-amp-layout=\"responsive\" \/><\/figure><\/div><div class=\"tiled-gallery__col\" style=\"flex-basis:38.47876%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" data-attachment-id=\"26226\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/mongodb\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/mongodb.png\" data-orig-size=\"1824,1092\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"mongodb\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/mongodb-1024x613.png\" data-attachment-id=\"26226\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/mongodb\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/mongodb.png\" data-orig-size=\"1824,1092\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"mongodb\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/mongodb-1024x613.png\" role=\"button\" tabindex=\"0\" aria-label=\"Open image 2 of 4 in full-screen\"srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/mongodb-1024x613.png?strip=info&#038;w=600 600w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/mongodb-1024x613.png?strip=info&#038;w=900 900w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/mongodb-1024x613.png?strip=info&#038;w=1200 1200w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/mongodb-1024x613.png?strip=info&#038;w=1500 1500w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/mongodb-1024x613.png?strip=info&#038;w=1800 1800w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/mongodb-1024x613.png?strip=info&#038;w=1824 1824w\" alt=\"\" data-height=\"1092\" data-id=\"26226\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=26226\" data-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/mongodb-1024x613.png\" data-width=\"1824\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/mongodb-1024x613.png\" data-amp-layout=\"responsive\" \/><\/figure><figure class=\"tiled-gallery__item\"><img decoding=\"async\" data-attachment-id=\"26227\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/redis\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis.png\" data-orig-size=\"1824,1092\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"redis\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis-1024x613.png\" data-attachment-id=\"26227\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/redis\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis.png\" data-orig-size=\"1824,1092\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"redis\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis-1024x613.png\" role=\"button\" tabindex=\"0\" aria-label=\"Open image 3 of 4 in full-screen\"srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis-1024x613.png?strip=info&#038;w=600 600w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis-1024x613.png?strip=info&#038;w=900 900w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis-1024x613.png?strip=info&#038;w=1200 1200w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis-1024x613.png?strip=info&#038;w=1500 1500w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis-1024x613.png?strip=info&#038;w=1800 1800w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis-1024x613.png?strip=info&#038;w=1824 1824w\" alt=\"\" data-height=\"1092\" data-id=\"26227\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=26227\" data-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis-1024x613.png\" data-width=\"1824\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis-1024x613.png\" data-amp-layout=\"responsive\" \/><\/figure><\/div><\/div><div class=\"tiled-gallery__row\"><div class=\"tiled-gallery__col\" style=\"flex-basis:100.00000%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" data-attachment-id=\"26228\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/vpc_subnets\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/vpc_subnets.png\" data-orig-size=\"3368,1680\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"vpc_subnets\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/vpc_subnets-1024x511.png\" data-attachment-id=\"26228\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/vpc_subnets\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/vpc_subnets.png\" data-orig-size=\"3368,1680\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"vpc_subnets\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/vpc_subnets-1024x511.png\" role=\"button\" tabindex=\"0\" aria-label=\"Open image 4 of 4 in full-screen\"srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/vpc_subnets-1024x511.png?strip=info&#038;w=600 600w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/vpc_subnets-1024x511.png?strip=info&#038;w=900 900w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/vpc_subnets-1024x511.png?strip=info&#038;w=1200 1200w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/vpc_subnets-1024x511.png?strip=info&#038;w=1500 1500w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/vpc_subnets-1024x511.png?strip=info&#038;w=1800 1800w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/vpc_subnets-1024x511.png?strip=info&#038;w=2000 2000w\" alt=\"\" data-height=\"1680\" data-id=\"26228\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=26228\" data-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/vpc_subnets-1024x511.png\" data-width=\"3368\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/vpc_subnets-1024x511.png\" data-amp-layout=\"responsive\" \/><\/figure><\/div><\/div><\/div><\/div>\n\n\n\n<p class=\"has-text-align-justify\">Mit Terraform k\u00f6nnen wiederverwendbare Module definiert werden, die zu einer \u00fcbersichtlichen Struktur der Konfigurationsdateien beitragen. Module k\u00f6nnen speziell f\u00fcr ein Projekt erstellt werden, es k\u00f6nnen aber auch fertige Module aus dem Internet der Konfiguration hinzugef\u00fcgt werden, sofern diese den gew\u00fcnschten Zweck erf\u00fcllen. F\u00fcr die Bereitstellung der Infrastruktur f\u00fcr die Aktien-Webanwendung wurden mehrere Module erstellt, darunter beispielsweise zwei Module f\u00fcr die Bereitstellung des VPC-Clusters, eines f\u00fcr die Konfiguration der VPC und eines f\u00fcr das Kubernetes Cluster. Im VPC-Modul werden die Zonen, Subnetze und Adresspr\u00e4fixe der Virtual Private Cloud definiert, w\u00e4hrend im Cluster-Modul u.a. der Flavor, die Kubernetes-Version und die Anzahl an Worker-Nodes konfiguriert wird. Auch die Bereitstellung der drei Aktien-Services wird modular durchgef\u00fchrt, indem f\u00fcr jeden Service die n\u00f6tigen Kubernetes Ressourcen in einem Modul festgehalten sind. \u00dcber Umgebungsvariablen bekommen die Service-Container alle notwendigen Daten, um miteinander kommunizieren zu k\u00f6nnen. Zwei weitere Module sind f\u00fcr die Installation von MongoDB und Redis au\u00dferhalb der VPC zust\u00e4ndig. Die Module beinhalten die n\u00f6tigen IBM Cloud Ressourcen f\u00fcr die Provisionierung der beiden Datenbanken, sowie die Credentials, um eine Verbindung mit den Datenbanken herzustellen.\u00a0<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Automatische Docker Builds<\/h4>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-bottom is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-jetpack-tiled-gallery alignfull is-style-rectangular\"><div class=\"tiled-gallery__gallery\"><div class=\"tiled-gallery__row\"><div class=\"tiled-gallery__col\" style=\"flex-basis:57.46656%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" data-attachment-id=\"26215\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/gitlab_pipeline-2\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/gitlab_pipeline-2.png\" data-orig-size=\"1999,1126\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"gitlab_pipeline-2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/gitlab_pipeline-2-1024x577.png\" data-attachment-id=\"26215\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/gitlab_pipeline-2\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/gitlab_pipeline-2.png\" data-orig-size=\"1999,1126\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"gitlab_pipeline-2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/gitlab_pipeline-2-1024x577.png\" role=\"button\" tabindex=\"0\" aria-label=\"Open image 1 of 2 in full-screen\"srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/gitlab_pipeline-2-1024x577.png?strip=info&#038;w=600 600w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/gitlab_pipeline-2-1024x577.png?strip=info&#038;w=900 900w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/gitlab_pipeline-2-1024x577.png?strip=info&#038;w=1200 1200w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/gitlab_pipeline-2-1024x577.png?strip=info&#038;w=1500 1500w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/gitlab_pipeline-2-1024x577.png?strip=info&#038;w=1800 1800w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/gitlab_pipeline-2-1024x577.png?strip=info&#038;w=1999 1999w\" alt=\"\" data-height=\"1126\" data-id=\"26215\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=26215\" data-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/gitlab_pipeline-2-1024x577.png\" data-width=\"1999\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/gitlab_pipeline-2-1024x577.png\" data-amp-layout=\"responsive\" \/><\/figure><\/div><div class=\"tiled-gallery__col\" style=\"flex-basis:42.53344%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" data-attachment-id=\"26214\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/gitlab_runner_info-2\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/gitlab_runner_info-2.png\" data-orig-size=\"1100,838\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"gitlab_runner_info-2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/gitlab_runner_info-2-1024x780.png\" data-attachment-id=\"26214\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/gitlab_runner_info-2\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/gitlab_runner_info-2.png\" data-orig-size=\"1100,838\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"gitlab_runner_info-2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/gitlab_runner_info-2-1024x780.png\" role=\"button\" tabindex=\"0\" aria-label=\"Open image 2 of 2 in full-screen\"srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/gitlab_runner_info-2-1024x780.png?strip=info&#038;w=600 600w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/gitlab_runner_info-2-1024x780.png?strip=info&#038;w=900 900w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/gitlab_runner_info-2-1024x780.png?strip=info&#038;w=1100 1100w\" alt=\"\" data-height=\"838\" data-id=\"26214\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=26214\" data-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/gitlab_runner_info-2-1024x780.png\" data-width=\"1100\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/gitlab_runner_info-2-1024x780.png\" data-amp-layout=\"responsive\" \/><\/figure><\/div><\/div><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-justify\">Die Build Pipeline ist ein entscheidender Bestandteil unseres Continuous Integration\/Continuous Deployment (CI\/CD)-Prozesses, der sicherstellt, dass unsere Anwendungen stets auf dem neuesten Stand sind. Durch die Automatisierung dieses Prozesses k\u00f6nnen wir effizientere Entwicklungszyklen erreichen und die Ausfallsicherheit unserer Anwendungen verbessern. Dar\u00fcber hinaus erm\u00f6glicht die Integration von GitLab, Docker Hub und Kubernetes eine nahtlose Bereitstellung unserer Anwendungen in einer skalierbaren und zuverl\u00e4ssigen Umgebung. <\/p>\n\n\n\n<p class=\"has-text-align-justify\">Der urspr\u00fcngliche Plan war es, dass bei jedem Push auf Main eine Build Pipeline in GitLab gestartet wird und ein Job l\u00e4uft, der die Docker Images neu baut und in den Docker Hub pusht. Von dort aus zieht sich unser Kubernetes Cluster die Images und erzeugt neue Pods, sobald ein Update verf\u00fcgbar ist. Leider konnten wir diesen Plan nicht komplett umsetzen, da \u201cDocker in Docker\u201d im HdM Gitlab nicht erlaubt ist. Der Worker ist so aufgesetzt, dass er ein Base Image (z.B. Ubuntu) nimmt und die Applikation darin baut. Da wir beim Bauen aber auch Docker aufrufen, haben wir hier einen \u201cDocker in Docker\u201d Fall. Nun machen wir es so, dass es ein Shell Script gibt, welches die Images baut und pusht. Dieses Script muss allerdings manuell gestartet werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schwierige Gew\u00e4sser kartieren: Herausforderungen und L\u00f6sungen<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Limitierungen von Terraform<\/h4>\n\n\n\n<p class=\"has-text-align-justify\">Obwohl Terraform viele tolle Features umfasst, bringt es auch einige Limitierungen mit sich. Trotz des Terraform Syntax-Highlighting und der Autovervollst\u00e4ndigung entstehen h\u00e4ufig Syntax-Probleme, die erst zum Zeitpunkt der Anwendung der Konfiguration bemerkt werden, da Terraform nicht das Format oder den Wert der Variablen, sondern lediglich den Datentyp \u00fcberpr\u00fcft. Au\u00dferdem hat jeder Cloud-Anbieter seine individuellen Funktionen und Einschr\u00e4nkungen. Als Entwickler muss man sich dieser anbieterspezifischen Nuancen bewusst sein, um unerwartetes Verhalten zu vermeiden. Einzig und allein die Dokumentation des Providers und viel Trial&amp;Error k\u00f6nnen hier weiterhelfen, allerdings kann das ziemlich frustrierend und zeitaufwendig sein.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Cross-Platform-Kompatibilit\u00e4t<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/docker_build.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"175\" data-attachment-id=\"26216\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/docker_build\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/docker_build.png\" data-orig-size=\"6872,1176\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"docker_build\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/docker_build-1024x175.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/docker_build-1024x175.png\" alt=\"\" class=\"wp-image-26216\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/docker_build-1024x175.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/docker_build-300x51.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/docker_build-768x131.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/docker_build-1536x263.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/docker_build-2048x350.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Da wir die Docker Images auf einem Mac mit ARM64 Architektur entwickelt und gebaut haben, stellten wir beim Deployment in die Pods fest, dass die Binaries, wie sie z.B. f\u00fcr Python Skripte erstellt werden, nicht auf den Pods laufen. Unser Node in der IBM Cloud basiert auf AMD64 und somit m\u00fcssen auch die Docker Images daf\u00fcr gebaut werden. Gl\u00fccklicherweise bietet Docker mit der Funktion <code class=\"\" data-line=\"\">buildx <\/code>eine einfache M\u00f6glichkeit, Images f\u00fcr mehrere Plattformen durch sogenannte \u201cMulti-Platform Images\u201d zu erstellen.\u00a0<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Diese k\u00f6nnen f\u00fcr mehrere Plattformen gleichzeitig gebaut werden. Ein weiterer Vorteil ist, dass auch wenn ein Image f\u00fcr die AMD64 Architektur gebaut wurde, es unter ARM64 als Emulation l\u00e4uft. Dies ist nat\u00fcrlich sehr instabil und nicht effizient, aber es reicht aus, um rudiment\u00e4re Tests durchzuf\u00fchren.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">TLS Zertifikate in Docker<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_ibm_credentials.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"26217\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/redis_ibm_credentials\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_ibm_credentials.png\" data-orig-size=\"6304,3360\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"redis_ibm_credentials\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_ibm_credentials-1024x546.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_ibm_credentials-1024x546.png\" alt=\"\" class=\"wp-image-26217\" width=\"1024\" height=\"546\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_ibm_credentials-1024x546.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_ibm_credentials-300x160.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_ibm_credentials-768x409.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_ibm_credentials-1536x819.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_ibm_credentials-2048x1092.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">F\u00fcr den Verbindungsaufbau zu den MongoDB- und Redis-Ressourcen in der IBM Cloud ist die Angabe eines SSL\/TLS-Zertifikats erforderlich. Damit kann eine verschl\u00fcsselte Verbindung zwischen den Diensten hergestellt werden. Oftmals liegen diese Zertifikate als Dateien vor, die dann auf dem Server oder Client installiert und mitgesendet werden k\u00f6nnen. Die Methoden der Klassen von MongoDB und Redis erlauben zwar jeweils die Angabe eines Dateipfades f\u00fcr diese Zertifikate, jedoch erschien uns dies als eher suboptimale L\u00f6sung, da sonst ein Prozess implementiert werden m\u00fcsste, der die Existenz und G\u00fcltigkeit dieser Dateien \u00fcberpr\u00fcft. Ein weiteres Problem ist, dass das Zertifikat zwar einfach heruntergeladen werden kann, aber schnell ung\u00fcltig wird, wenn wir zum Beispiel die Ressourcen durch Terraform abrei\u00dfen und neu aufbauen.\u00a0<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Hier bietet die IBM Cloud eine elegante M\u00f6glichkeit, das Zertifikat einfach \u00fcber ein Binding Secret als eine Umgebungsvariablen an den Pod zu geben und als JSON-String an die entsprechenden Methoden zu \u00fcbergeben. So ist das Zertifikat immer aktuell und mit wenigen Zeilen Code in unserem Service implementiert.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Ein Image f\u00fcr die Cloud und die lokale Entwicklung<\/h4>\n\n\n\n<div class=\"wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular\"><div class=\"tiled-gallery__gallery\"><div class=\"tiled-gallery__row\"><div class=\"tiled-gallery__col\" style=\"flex-basis:35.37493%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" data-attachment-id=\"26223\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/compose_file-1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/compose_file-1.png\" data-orig-size=\"2936,2352\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"compose_file-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/compose_file-1-1024x820.png\" data-attachment-id=\"26223\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/compose_file-1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/compose_file-1.png\" data-orig-size=\"2936,2352\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"compose_file-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/compose_file-1-1024x820.png\" role=\"button\" tabindex=\"0\" aria-label=\"Open image 1 of 2 in full-screen\"srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/compose_file-1-1024x820.png?strip=info&#038;w=600 600w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/compose_file-1-1024x820.png?strip=info&#038;w=900 900w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/compose_file-1-1024x820.png?strip=info&#038;w=1200 1200w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/compose_file-1-1024x820.png?strip=info&#038;w=1500 1500w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/compose_file-1-1024x820.png?strip=info&#038;w=1800 1800w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/compose_file-1-1024x820.png?strip=info&#038;w=2000 2000w\" alt=\"\" data-height=\"2352\" data-id=\"26223\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=26223\" data-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/compose_file-1-1024x820.png\" data-width=\"2936\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/compose_file-1-1024x820.png\" data-amp-layout=\"responsive\" \/><\/figure><\/div><div class=\"tiled-gallery__col\" style=\"flex-basis:64.62507%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" data-attachment-id=\"26224\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/redis_local_dev-1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_local_dev-1.png\" data-orig-size=\"4224,1848\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"redis_local_dev-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_local_dev-1-1024x448.png\" data-attachment-id=\"26224\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/die-meere-der-systemtechnik-navigieren-eine-reise-durch-die-bereitstellung-einer-aktien-webanwendung-in-der-cloud\/redis_local_dev-1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_local_dev-1.png\" data-orig-size=\"4224,1848\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"redis_local_dev-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_local_dev-1-1024x448.png\" role=\"button\" tabindex=\"0\" aria-label=\"Open image 2 of 2 in full-screen\"srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis_local_dev-1-1024x448.png?strip=info&#038;w=600 600w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis_local_dev-1-1024x448.png?strip=info&#038;w=900 900w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis_local_dev-1-1024x448.png?strip=info&#038;w=1200 1200w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis_local_dev-1-1024x448.png?strip=info&#038;w=1500 1500w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis_local_dev-1-1024x448.png?strip=info&#038;w=1800 1800w,https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis_local_dev-1-1024x448.png?strip=info&#038;w=2000 2000w\" alt=\"\" data-height=\"1848\" data-id=\"26224\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=26224\" data-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/redis_local_dev-1-1024x448.png\" data-width=\"4224\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/03\/redis_local_dev-1-1024x448.png\" data-amp-layout=\"responsive\" \/><\/figure><\/div><\/div><\/div><\/div>\n\n\n\n<p class=\"has-text-align-justify\">Unser Ziel ist es, dasselbe Docker Image sowohl f\u00fcr die lokale Entwicklung als auch f\u00fcr die Cloud-Bereitstellung zu verwenden. Auf diese Weise k\u00f6nnen wir alle Services lokal in einem Docker Container hosten und ausgiebig testen, bevor sie in die Cloud verschoben werden. Um dies zu erreichen, haben wir ein Docker Compose File erstellt, das alle Services in einem gemeinsamen Netzwerk verbindet. Dabei nutzen wir Umgebungsvariablen, um zwischen dem lokalen Entwicklungsmodus und dem Cloud-Betrieb umzuschalten.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Mit Hilfe dieser Umgebungsvariablen k\u00f6nnen wir die Services auf <code class=\"\" data-line=\"\">LOCAL_DEVELOPMENT<\/code> setzen, wodurch sie standardm\u00e4\u00dfig lokale IP-Adressen wie beispielsweise <code class=\"\" data-line=\"\">localhost:6379<\/code> anstelle der IBM Cloud IP-Adressen verwenden. Dies erm\u00f6glicht eine nahtlose Anpassung der Umgebung je nach Bedarf, ohne das Docker Image \u00e4ndern zu m\u00fcssen. Auf diese Weise wird die Entwicklung und Wartung unserer Services erheblich vereinfacht und beschleunigt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Volle Fahrt voraus: Fazit und Zukunftsaussichten<\/h3>\n\n\n\n<p class=\"has-text-align-justify\">Insgesamt ist das Hosting einer eigenen Web-App, die aus drei einzelnen Services besteht, in der Cloud ein spannendes Projekt. Die Kombination von Terraform und Kubernetes bietet nicht nur eine effiziente, skalierbare und hochverf\u00fcgbare L\u00f6sung, sondern l\u00f6st auch spezifische Probleme im Bereich der Infrastrukturverwaltung. Durch die Nutzung dieser Tools k\u00f6nnen Entwicklerteams ihre Ressourcen effizienter nutzen und sich auf die Weiterentwicklung und Optimierung der Anwendung konzentrieren. Jedoch erfordert es gr\u00fcndliche \u00dcberlegungen, wie die einzelnen Services strukturiert werden m\u00fcssen, damit am Ende ein reibungsloses automatisches Deployment m\u00f6glich ist.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Besonders im Umgang mit Terraform k\u00f6nnen einige Herausforderungen auftreten. Die Vielzahl an Details und die oft undurchsichtige Fehlerursache k\u00f6nnen dazu f\u00fchren, dass man viel Zeit mit Debugging verbringt. Es kommt nicht selten vor, dass ein Fehler aufgrund einer Kleinigkeit wie einem falschen Wort oder einer veralteten Konfiguration entsteht, von der man dachte, sie k\u00f6nne nicht Teil des Problems sein.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Docker hingegen ist eine vergleichsweise einfach zu beherrschende Technologie mit vielen Vorteilen. Die Gewissheit, dass jeder den gleichen Stand einer Applikation auf seinem Rechner hat und typische Probleme wie das &#8220;aber auf meiner Maschine l\u00e4uft es&#8221; vermieden werden, erleichtert die Entwicklung erheblich.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Eine Verbesserungsm\u00f6glichkeit f\u00fcr unser Projekt w\u00e4re sicherlich das automatische Erstellen der Docker-Images in GitLab. Dadurch k\u00f6nnte die gesamte Pipeline vom Bauen bis hin zum Bereitstellen der Infrastruktur automatisiert werden. Auch die Erweiterung des Clusters zu einem Mehrzonen-Cluster w\u00fcrde sich positiv auf die Verf\u00fcgbarkeit und Zuverl\u00e4ssigkeit der Umgebung auswirken, jedoch war dies aufgrund der entstehenden Kosten im Rahmen dieser Vorlesung nicht m\u00f6glich.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Wir w\u00fcrden jedem, der Cloud-Ressourcen in seinen Applikationen nutzen m\u00f6chte, raten, sich vorab einmal programmatisch mit diesen zu verbinden, um den Workflow kennenzulernen. Beispielsweise die Implementierung von TLS-Zertifikaten war ein Punkt, den wir nicht von Anfang an auf dem Schirm hatten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Auf zu neuen Ufern: Einleitung Die Cloud-Computing-Technologie hat die Art und Weise, wie Unternehmen Anwendungen entwickeln, bereitstellen und skalieren, revolutioniert. In diesem Beitrag, der im Rahmen der Vorlesung \u201c143101a System Engineering und Management\u201d entstanden ist, werden wir uns darauf konzentrieren, wie eine bereits bestehende Webanwendung zur Visualisierung und Filterung von Aktienkennzahlen auf der IBM Cloud-Infrastruktur [&hellip;]<\/p>\n","protected":false},"author":983,"featured_media":26241,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[120,656,659,21,2],"tags":[49,150,157,3,615,154,155,1019,424,514],"ppma_author":[835],"class_list":["post-26208","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-technologies","category-databases","category-devops","category-system-architecture","category-system-engineering","tag-architecture","tag-ci-cd","tag-database-testing","tag-docker","tag-ibm-cloud","tag-kubernetes","tag-mongodb","tag-system-engineering","tag-system-engineering-and-management","tag-terraform"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/Dashboard2-Kopie-1.png","jetpack-related-posts":[{"id":23679,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/08\/31\/jobsuche-portal\/","url_meta":{"origin":26208,"position":0},"title":"Jobsuche Portal","author":"ag164","date":"31. August 2022","format":false,"excerpt":"SS22 - Dev4Cloud Projekt - von Robin H\u00e4rle und Anton Gerdts Ideenfindung \u00a0\u00a0\u00a0 Zu Beginn der Ideenfindungsphase f\u00fcr unser Projekt sahen wir uns die verschiedenen Apis auf Bund.dev an, um uns von der Thematik der verf\u00fcgbaren Daten inspirieren zu lassen. Wir entschieden uns ohne lange abzuw\u00e4gen daf\u00fcr ein Jobsuche-Portal mit\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":23579,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/08\/30\/google-geodata-visualizer\/","url_meta":{"origin":26208,"position":1},"title":"Google Geodata Visualizer","author":"sk331","date":"30. August 2022","format":false,"excerpt":"Ein Projekt von Kai Kustermann, Michael Litschko, Sarah Mauff und Sebastian K\u00f6pp Einleitung Im Sommersemester 2022 haben wir uns als 4-k\u00f6pfige Gruppe dazu entschlossen, einen Google Geodata Visualizer zu erstellen. Das Projekt ist aus der Idee einer McDonald\u2019s-Achievement-Card entstanden. Die Idee war eine Website, die dem Benutzer anzeigt, welche McDonald\u2019s\u2026","rel":"","context":"In &quot;Cloud Technologies&quot;","block_context":{"text":"Cloud Technologies","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/cloud-technologies\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/08\/16.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":26895,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2025\/02\/22\/parallel-sysplex-wie-ibm-z-kontinuierliche-verfugbarkeit-durch-ras-und-innovationen-des-z16-sicherstellt\/","url_meta":{"origin":26208,"position":2},"title":"Parallel SysPlex: Wie IBM Z kontinuierliche Verf\u00fcgbarkeit durch RAS und Innovationen des z16 sicherstellt","author":"Luca Walz","date":"22. February 2025","format":false,"excerpt":"Note: Dieser Blogpost wurde f\u00fcr das Modul Enterprise IT (113601a) verfasst. Kurzfassung In einer zunehmend digitalisierten Welt ist hohe Verf\u00fcgbarkeit eines Systems essenziell f\u00fcr gesch\u00e4ftskritische Anwendungen. Hierbei erm\u00f6glicht eine, von IBM f\u00fcr das IBM Z-Mainframe entwickelte, Cluster Technologie eine nahezu kontinuierliche Verf\u00fcgbarkeit, welche durch dynamische Lastenverteilung, redundante Architektur und Echtzeit\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":26129,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/27\/ctf-infrastruktur-als-proof-of-concept-in-der-microsoft-azure-cloud\/","url_meta":{"origin":26208,"position":3},"title":"CTF-Infrastruktur als Proof-of-Concept in der Microsoft Azure Cloud","author":"jk233","date":"27. February 2024","format":false,"excerpt":"Einf\u00fchrung Eine eigene Capture-The-Flag (CTF) Plattform zu betreiben bringt besondere Herausforderungen mit sich. Neben umfangreichem Benutzermanagement, dem Bereitstellen und sicherem Hosten von absichtlich verwundbaren Systemen, sowie einer m\u00f6glichst einfachen Methode, spielbare Systeme von externen Quellen einzubinden. So m\u00f6chte man vielleicht der eigenen Community die M\u00f6glichkeit bieten, eigene Szenarien zu entwickeln,\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/HkdUqtOvFEbZdRFQaVd9LpUF6TaU8VoYhJn2kK0A-rzTGuPjvqiNLsNYpHnMuPZpLr5RFCfTW30d46KxetHLb8mYfYqN_70fqpOvYevgh1bfHZFI_UUKHbqRjDrHQ-b8QG2jXXV6E2zh2W35Rr6gpnk.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/HkdUqtOvFEbZdRFQaVd9LpUF6TaU8VoYhJn2kK0A-rzTGuPjvqiNLsNYpHnMuPZpLr5RFCfTW30d46KxetHLb8mYfYqN_70fqpOvYevgh1bfHZFI_UUKHbqRjDrHQ-b8QG2jXXV6E2zh2W35Rr6gpnk.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/HkdUqtOvFEbZdRFQaVd9LpUF6TaU8VoYhJn2kK0A-rzTGuPjvqiNLsNYpHnMuPZpLr5RFCfTW30d46KxetHLb8mYfYqN_70fqpOvYevgh1bfHZFI_UUKHbqRjDrHQ-b8QG2jXXV6E2zh2W35Rr6gpnk.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/HkdUqtOvFEbZdRFQaVd9LpUF6TaU8VoYhJn2kK0A-rzTGuPjvqiNLsNYpHnMuPZpLr5RFCfTW30d46KxetHLb8mYfYqN_70fqpOvYevgh1bfHZFI_UUKHbqRjDrHQ-b8QG2jXXV6E2zh2W35Rr6gpnk.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/HkdUqtOvFEbZdRFQaVd9LpUF6TaU8VoYhJn2kK0A-rzTGuPjvqiNLsNYpHnMuPZpLr5RFCfTW30d46KxetHLb8mYfYqN_70fqpOvYevgh1bfHZFI_UUKHbqRjDrHQ-b8QG2jXXV6E2zh2W35Rr6gpnk.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":28011,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2025\/09\/11\/cloud-native-security-scanner\/","url_meta":{"origin":26208,"position":4},"title":"Cloud-native Security Scanner","author":"Tim Ruff","date":"11. September 2025","format":false,"excerpt":"Dieses Projekt wurde im Rahmen der Vorlesung \u201eSoftware Development for Cloud Computing\u201c umgesetzt. Ausgangslage und Projektidee Unser bisheriger Fokus im Studium lag haupts\u00e4chlich auf Themen der IT-Security und Machine Learning, weshalb wir beide bis auf die grundlegenden Vorlesungen zum Thema Software Entwicklung kaum Erfahrungen in diesem Bereich gesammelt haben. Aus\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image.jpeg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image.jpeg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image.jpeg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image.jpeg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image.jpeg?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":24203,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/02\/26\/die-zukunft-ist-serverless\/","url_meta":{"origin":26208,"position":5},"title":"Die Zukunft ist Serverless?","author":"Michael Partes","date":"26. February 2023","format":false,"excerpt":"\u00dcberblick Die \u201cCloud\u201d ist ein Begriff, der in den letzten Jahren immens an Bedeutung gewonnen hat. H\u00e4ufig wird sie f\u00fcr die Bereitstellung von Diensten und Services genutzt. Im Lauf der Zeit haben sich dabei verschiedene Architekturen entwickelt, die in der Cloud eingesetzt werden und unterschiedliche Ans\u00e4tze f\u00fcr die Handhabung des\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/lh5.googleusercontent.com\/hnARrH3Mz7d41IhTltMgTCpuUfKpg8k6ur_0Ir46moShZzCf53cVBMeUogOFgp2yD-maHIuCu3CIOsnqE_oBCOrEEaB-KfPc8lsQ5jWanA8hFVPvMdC5XYLBboHJ_lUbrtMT5aVqtMNUjTbsLQQNuoM","width":350,"height":200,"srcset":"https:\/\/lh5.googleusercontent.com\/hnARrH3Mz7d41IhTltMgTCpuUfKpg8k6ur_0Ir46moShZzCf53cVBMeUogOFgp2yD-maHIuCu3CIOsnqE_oBCOrEEaB-KfPc8lsQ5jWanA8hFVPvMdC5XYLBboHJ_lUbrtMT5aVqtMNUjTbsLQQNuoM 1x, https:\/\/lh5.googleusercontent.com\/hnARrH3Mz7d41IhTltMgTCpuUfKpg8k6ur_0Ir46moShZzCf53cVBMeUogOFgp2yD-maHIuCu3CIOsnqE_oBCOrEEaB-KfPc8lsQ5jWanA8hFVPvMdC5XYLBboHJ_lUbrtMT5aVqtMNUjTbsLQQNuoM 1.5x"},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":835,"user_id":983,"is_guest":0,"slug":"marvin-max_kalchschmidt","display_name":"mk306","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/03f6c135d836036efd38e5ade3e78f23c054919191c9bded402baeaaa7b4c8cd?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/26208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/users\/983"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=26208"}],"version-history":[{"count":4,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/26208\/revisions"}],"predecessor-version":[{"id":26252,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/26208\/revisions\/26252"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media\/26241"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=26208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=26208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=26208"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=26208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}