{"id":27369,"date":"2025-02-26T22:48:53","date_gmt":"2025-02-26T21:48:53","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=27369"},"modified":"2025-02-26T22:51:16","modified_gmt":"2025-02-26T21:51:16","slug":"cloudy-mit-aussicht-auf-worter-unser-weg-mit-crowdcloud","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2025\/02\/26\/cloudy-mit-aussicht-auf-worter-unser-weg-mit-crowdcloud\/","title":{"rendered":"Cloudy mit Aussicht auf W\u00f6rter: Unser Weg mit CrowdCloud"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>Willkommen zu unserem Erfahrungsbericht aus der Vorlesung \u201eSystem Engineering and Management\u201c. In den letzten Monaten haben wir uns an ein Projekt gewagt, das uns sowohl technisch als auch pers\u00f6nlich herausgefordert hat \u2013 CrowdCloud. Anstatt uns in trockene Theorien zu verlieren, m\u00f6chten wir euch in diesem Blog-Beitrag erz\u00e4hlen, wie aus einer spontanen Idee eine interaktive, skalierbare Wortwolke wurde, die live das Publikum begeisterte.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">CrowdCloud: Wenn Worte abheben<\/h4>\n\n\n\n<p>Im Wintersemester 2024\/2025 haben wir, Simon und Milena, beschlossen, uns intensiv mit verteilten Systemen und Cloud-Umgebungen auseinanderzusetzen. Kaum hatte die Vorlesung begonnen, stand die erste Herausforderung vor uns: Ein passendes Semesterprojekt zu finden. Nach einigem Hin und Her entschieden wir uns, eine kleine Webanwendung zu entwickeln und diese in die Cloud zu bringen \u2013 so wurde CrowdCloud geboren. CrowdCloud erm\u00f6glicht es, zu einem bestimmten Thema durch die Auswahl einzelner W\u00f6rter abzustimmen. Ein cleverer Algorithmus sortiert dabei die eingegebenen Begriffe, sodass h\u00e4ufiger genannte W\u00f6rter gr\u00f6\u00dfer dargestellt werden. Und das Beste: Die Wortwolke aktualisiert sich live, sodass alle Nutzer stets die aktuellsten Abstimmungsergebnisse sehen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Das gro\u00dfe Ziel: Mehr als nur W\u00f6rter<\/h4>\n\n\n\n<p>Unser Hauptziel mit CrowdCloud war es, praktische Erfahrungen mit modernen Deployment- und Containerisierungstechnologien zu sammeln. Dabei lag unser Fokus darauf, den Umgang mit Kubernetes, Azure und Terraform zu erlernen und eine skalierbare, automatisierte Infrastruktur aufzubauen. Uns war bewusst, dass wir in diesem Bereich noch Neuland betreten, was die Herausforderungen besonders spannend machte \u2013 und uns auf eine steile, aber lohnenswerte Lernkurve schickte.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>CrowdCloud unter der Haube \u2013 Unsere Architektur<\/strong><\/h3>\n\n\n\n<p>Um unsere interaktive Wortwolke zu entwickeln, haben wir uns f\u00fcr einen modernen Tech-Stack entschieden, der uns nicht nur in der reinen Umsetzung unterst\u00fctzt hat, sondern uns zugleich tiefgehende Einblicke in das Zusammenspiel der einzelnen Komponenten \u2013 von der Entwicklung \u00fcber das Testing bis hin zum Betrieb \u2013 erm\u00f6glichte.&nbsp;<\/p>\n\n\n\n<p>Gleichzeitig stand bei der Planung und Umsetzung von CrowdCloud die Wahl der richtigen Technologien im Mittelpunkt. Dabei mussten wir viele Entscheidungen treffen und stets abw\u00e4gen, welche Tools am besten zu unseren Anforderungen passen. Neben den rein technischen Aspekten flossen auch praktische \u00dcberlegungen und Kosteneffizienz in unsere Entscheidungen ein \u2013 etwa die kosteng\u00fcnstigen Vorteile von Azure, die speziell f\u00fcr Studierende besonders attraktiv waren.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/System_Engineering.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-attachment-id=\"27372\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2025\/02\/26\/cloudy-mit-aussicht-auf-worter-unser-weg-mit-crowdcloud\/system_engineering\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/System_Engineering.png\" data-orig-size=\"1920,1080\" 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=\"System_Engineering\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/System_Engineering-1024x576.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/System_Engineering-1024x576.png\" alt=\"\" class=\"wp-image-27372\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/System_Engineering-1024x576.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/System_Engineering-300x169.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/System_Engineering-768x432.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/System_Engineering-1536x864.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/System_Engineering.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Frontend \u2013 Die B\u00fchne f\u00fcr eure Worte<\/h4>\n\n\n\n<p>Mit <strong>React<\/strong> und <strong>TypeScript<\/strong> haben wir eine flexible, komponentenbasierte Architektur aufgebaut, die es uns erm\u00f6glichte, wiederverwendbare Bausteine zu entwickeln. <strong>MUI<\/strong> sorgte dabei f\u00fcr ein ansprechendes, professionelles Design, w\u00e4hrend <strong>Vite<\/strong> uns durch blitzschnelle Projektinitialisierung und optimierte Builds \u00fcberzeugte. Zudem spielt <strong>Node.js<\/strong> eine zentrale Rolle in unserem Entwicklungsprozess \u2013 es liefert die Laufzeitumgebung, die f\u00fcr Tools wie Vite, ESLint und den lokalen Entwicklungsserver unerl\u00e4sslich ist. So konnten wir sicherstellen, dass die Benutzeroberfl\u00e4che nicht nur schick aussieht, sondern auch stabil und performant l\u00e4uft.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Backend \u2013 Das Herzst\u00fcck von CrowdCloud<\/h4>\n\n\n\n<p>Auf der Serverseite setzten wir auf <strong>Python<\/strong> und <strong>Django<\/strong>. Diese Kombination machte es uns leicht, eine robuste und sichere Anwendung zu entwickeln \u2013 und das mit einer Syntax, die sich angenehm lesbar und schnell umsetzen lie\u00df. F\u00fcr die Speicherung der Session-Daten w\u00e4hlten wir die leichtgewichtige <strong>SQLite-Datenbank,<\/strong> die genau den richtigen Rahmen f\u00fcr unser Projekt bot.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Containerisierung &amp; Deployment \u2013 Unser Weg in die Cloud<\/h4>\n\n\n\n<p>Damit alles reibungslos l\u00e4uft, haben wir unsere Anwendung in <strong>Docker-Container<\/strong> verpackt \u2013 so konnten wir sicherstellen, dass sie in einer einheitlichen Umgebung l\u00e4uft, egal ob in der Entwicklung oder im Produktivbetrieb. Anschlie\u00dfend setzten wir auf <strong>Kubernetes<\/strong>, um unsere Container effizient zu verwalten und bei Bedarf zu skalieren. F\u00fcr den Aufbau unserer Cloud-Infrastruktur auf <strong>Microsoft Azure<\/strong> nutzten wir <strong>Terraform<\/strong>, mit dem wir die gesamte Umgebung deklarativ und reproduzierbar konfigurieren konnten. Den gesamten Ablauf \u2013 von der Code-Integration bis hin zum finalen Deployment \u2013 unterst\u00fctzten uns <strong>GitHub Actions<\/strong>, die uns einen kontinuierlichen und reibungslosen Workflow erm\u00f6glichten.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Testing \u2013 Den Code auf Herz und Nieren pr\u00fcfen<\/h4>\n\n\n\n<p>Damit wir immer sicher sein konnten, dass unser Code einwandfrei funktioniert, setzten wir auf einen mehrstufigen Testansatz. Mit <strong>ESLint<\/strong> f\u00fcr unser TypeScript und <strong>PyLint<\/strong> f\u00fcr Python stellten wir sicher, dass der Code sauber und fehlerfrei ist. Gleichzeitig halfen uns <strong>Syft<\/strong> und <strong>Grype<\/strong>, indem sie mittels einer Software Bill of Materials (SBOM) und anschlie\u00dfender Sicherheitsanalysen potenzielle Schwachstellen fr\u00fchzeitig aufdeckten. All diese Tests liefen automatisiert in unseren GitHub Actions \u2013 so war Qualit\u00e4t nicht nur ein Versprechen, sondern ein gelebter Standard.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Operate \u2013 Der zuverl\u00e4ssige Betrieb von CrowdCloud<\/h4>\n\n\n\n<p>Nach dem erfolgreichen Deployment ist der laufende Betrieb das A und O. <strong>Microsoft Azure<\/strong> sorgt f\u00fcr eine stabile und skalierbare Infrastruktur, w\u00e4hrend <strong>Kubernetes<\/strong> auch im laufenden Betrieb sicherstellt, dass unsere Anwendung optimal verteilt und verwaltet wird. Erg\u00e4nzend kommt ein <strong>Ingress-Controller<\/strong> zum Einsatz, der den eingehenden Traffic effizient an die richtigen Services weiterleitet und zentralisierte Routing-Regeln erm\u00f6glicht. Zus\u00e4tzlich spielt <strong>nginx<\/strong> als Webserver und Reverse Proxy eine zentrale Rolle, indem es den Traffic steuert und f\u00fcr eine zus\u00e4tzliche Sicherheitsebene sorgt.<\/p>\n\n\n\n<p>Mit diesem Setup k\u00f6nnen wir gew\u00e4hrleisten, dass CrowdCloud nicht nur gut aussieht und funktioniert, sondern auch dauerhaft zuverl\u00e4ssig und sicher betrieben wird.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Push, Pray, Deploy: Effizienz und Kontrolle im Workflow<\/strong><\/h3>\n\n\n\n<p>Damit unser Entwicklungsprozess reibungslos abl\u00e4uft und wir jederzeit die volle Kontrolle behalten, haben wir unsere CI\/CD-Pipelines bewusst in drei separate Bereiche unterteilt:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Deployment Pipeline \u2013 Automatisierte Updates f\u00fcr CrowdCloud<\/h4>\n\n\n\n<p>Unsere Deployment-Pipeline wird bei jedem Push in den develop-Branch sowie bei Pull Requests automatisch angesto\u00dfen. Sie k\u00fcmmert sich um den gesamten Ablauf, von der Code-Checkout-Phase \u00fcber das Erstellen und Pushen der Docker-Images (f\u00fcr Frontend und Backend) bis hin zum Rollout der neuen Versionen \u00fcber Kubernetes. So stellen wir sicher, dass unsere Anwendung stets aktuell ist und ohne gro\u00dfen manuellen Aufwand live geschaltet werden kann.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Terraform Pipeline \u2013 Manuelle Steuerung f\u00fcr stabile Infrastruktur<\/h4>\n\n\n\n<p>Das Aufbauen der Infrastruktur ben\u00f6tigt naturgem\u00e4\u00df einige Minuten \u2013 und nicht jede Code-\u00c4nderung erfordert einen erneuten Aufbau. Deshalb haben wir uns bewusst daf\u00fcr entschieden, die Terraform-Pipeline ausschlie\u00dflich manuell (\u00fcber workflow_dispatch) zu starten. Sobald die Infrastruktur einmal steht, musste sie nicht st\u00e4ndig neu aufgebaut werden. Nat\u00fcrlich wollten wir sichergehen, dass unser Plan funktioniert. Also haben wir \u2013 in einem mutigen Moment \u2013 die gesamte Infrastruktur gel\u00f6scht. Ein paar Klicks (und Schwei\u00dfperlen) sp\u00e4ter konnten wir stolz feststellen: <strong>Die Pipeline hat alles sauber wieder aufgebaut<\/strong>. Mission erfolgreich.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Tests Pipeline \u2013 Qualit\u00e4tssicherung auf allen Ebenen<\/h4>\n\n\n\n<p>Parallel dazu l\u00e4uft unsere Test-Pipeline, die den Code auf Herz und Nieren pr\u00fcft. Angefangen bei der Einrichtung einer sauberen, isolierten Umgebung f\u00fcr das Backend, \u00fcber das Ausf\u00fchren von Unit-Tests, bis hin zu umfassenden Sicherheits-Scans (mit pip-audit, Syft und Grype) und der statischen Code-Analyse (PyLint f\u00fcr den Backend-Code und ESLint f\u00fcr den Frontend-Code). Diese Pipeline wird bei jedem Push und Pull Request automatisch gestartet und sorgt daf\u00fcr, dass unser Code immer den h\u00f6chsten Qualit\u00e4tsstandards entspricht.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Herausforderungen: Die dunkle Seite der W\u00f6rterwolke<\/strong><\/h3>\n\n\n\n<p>Die Entwicklung von CrowdCloud war nicht nur ein technisch spannendes Abenteuer, sondern brachte auch einige echte Herausforderungen mit sich, die uns zum Gr\u00fcbeln und intensivem Debuggen zwangen. Im Folgenden m\u00f6chten wir detailliert auf die gr\u00f6\u00dften Stolpersteine eingehen, die uns auf unserem Weg begegnet sind.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Probleme beim Deployment des Blob Storage \u2013 Das Henne-Ei-Problem<\/h4>\n\n\n\n<p>Ein unerwartetes Problem tauchte bereits zu Beginn unseres Deployments auf: Wir wollten den Blob Storage \u2013 also den Speicherort f\u00fcr unsere Terraform-State-Dateien \u2013 zusammen mit der restlichen Infrastruktur \u00fcber dieselbe Pipeline bereitstellen. Dabei stie\u00dfen wir auf ein klassisches Henne-Ei-Problem.<\/p>\n\n\n\n<p>Unser Ziel war es, den Blob Storage automatisiert \u00fcber Terraform zu deployen und ihn gleichzeitig als sicheren Ablageort f\u00fcr den Terraform-State zu nutzen. Doch genau hier ergab sich der Teufelskreis:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Der erste Schritt:<\/strong> Terraform ben\u00f6tigt bereits einen existierenden Blob Storage, um seinen eigenen State sicher ablegen zu k\u00f6nnen.<\/li>\n\n\n\n<li><strong>Der zweite Schritt:<\/strong> Gleichzeitig sollte Terraform den Blob Storage selbst anlegen, was aber ohne einen bestehenden State-Bereich nicht optimal funktioniert.<\/li>\n<\/ul>\n\n\n\n<p>Diese wechselseitige Abh\u00e4ngigkeit f\u00fchrte zu einem logischen Zirkel: Der Blob Storage muss existieren, damit Terraform initialisiert werden kann \u2013 und doch soll Terraform daf\u00fcr sorgen, dass der Blob Storage erstellt wird.<\/p>\n\n\n\n<p><strong>Unsere L\u00f6sung:<\/strong><\/p>\n\n\n\n<p>Um diesen Henne-Ei-Zustand zu durchbrechen, haben wir uns letztlich daf\u00fcr entschieden, den Blob Storage als manuellen Bootstrapping-Schritt zu erstellen, da der Blob Storage im weiteren Verlauf des Projekts ohnehin nicht ver\u00e4ndert wurde. Dieser pragmatische Eingriff erm\u00f6glichte es uns, einen stabilen Ausgangspunkt zu schaffen. Sobald der Blob Storage manuell eingerichtet war, konnten wir Terraform einsetzen, um den Rest der Infrastruktur automatisiert und konsistent zu managen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Ingress \u2013 Ein Albtraum in der Konfiguration<\/h4>\n\n\n\n<p>Ein zentrales Hindernis in unserem Deployment war die komplexe Einrichtung des Ingress. Urspr\u00fcnglich hatten wir versucht, statt Ingress die nativen Bordmittel von Kubernetes und Azure zu nutzen, um die Netzwerkkommunikation zwischen Frontend und Backend zu steuern. Doch trotz intensiver Versuche und verschiedener Konfigurationsans\u00e4tze kamen wir hier nicht weiter \u2013 entweder fehlten essenzielle Funktionen, oder die Umsetzung war so aufwendig, dass sie den Nutzen nicht mehr rechtfertigte.<\/p>\n\n\n\n<p>Schlie\u00dflich entschieden wir uns f\u00fcr Ingress, in der Hoffnung, eine standardisierte und bew\u00e4hrte L\u00f6sung zu implementieren. Doch das sollte sich als nervenaufreibender Prozess herausstellen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Fehlender Service Principal:<\/strong><strong><br><\/strong>Die Ingress-Konfiguration ben\u00f6tigte einen eigenen Service Principal, um auf die notwendigen Container-Images zugreifen zu k\u00f6nnen. Diese Abh\u00e4ngigkeit f\u00fchrte dazu, dass unsere Pods zun\u00e4chst gar nicht starten konnten.<\/li>\n\n\n\n<li><strong>Komplexe Routen-Weiterleitung:<\/strong><strong><br><\/strong>Selbst nach der erfolgreichen Einrichtung des Ingress gab es anhaltende Probleme bei der Weiterleitung der Anfragen. Wir mussten die Routen mehrfach anpassen und testen, bis sie endlich stabil funktionierten.<\/li>\n<\/ul>\n\n\n\n<p><strong>Unsere L\u00f6sung:<\/strong><strong><br><\/strong>Nach langem Debugging erkannten wir, dass das manuelle Anlegen des Service Principals und das Zuweisen der entsprechenden Berechtigungen der einzige Weg war, um die Ingress-Pods zuverl\u00e4ssig ans Laufen zu bekommen. Diese Schritte nahmen wir schlie\u00dflich in unsere Terraform-Pipeline auf, um zuk\u00fcnftige manuelle Eingriffe zu vermeiden.<\/p>\n\n\n\n<p><strong>R\u00fcckblickend:<\/strong><strong><br><\/strong>Obwohl Ingress letztendlich funktionierte, hat es uns w\u00e4hrend der Entwicklung so viele Nerven gekostet, dass wir uns f\u00fcr zuk\u00fcnftige Projekte tats\u00e4chlich \u00fcberlegen, eine Alternative zu den Bordmitteln und Ingress zu testen. Weder die urspr\u00fcnglichen Kubernetes- und Azure-L\u00f6sungen noch Ingress haben uns vollst\u00e4ndig \u00fcberzeugt. Das zeigt einmal mehr, dass die Wahl der richtigen Infrastruktur nicht nur eine technische, sondern auch eine pragmatische Entscheidung ist.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Wenn die Session schweigt: Unser Websocket-Fehler und die L\u00f6sung<\/h4>\n\n\n\n<p>Nachdem wir CrowdCloud lokal ausgiebig getestet hatten, schien alles perfekt zu funktionieren. Die Websockets bauten eine stabile Verbindung auf, und die Live-Aktualisierung lief reibungslos \u2013 zumindest in unserer Testumgebung. Doch als wir die Anwendung in Azure deployten, wurden wir schnell eines Besseren belehrt.<\/p>\n\n\n\n<p>Obwohl der Client sich erfolgreich mit der Session verband, blieben die Echtzeit-Updates aus. Beim Test unseres Voting-Features fiel uns auf: Die Stimmen wurden zwar korrekt erfasst, doch das Ergebnis aktualisierte sich nicht von selbst. Erst durch ein manuelles Neuladen der Seite erschienen die neuen Daten \u2013 ein Umstand, der uns besonders frustrierte, da wir dachten, endlich alles richtig konfiguriert zu haben, und dann versagte der zentrale Echtzeit-Mechanismus.<\/p>\n\n\n\n<p><strong>Unsere L\u00f6sung: Die falsche URL als Stolperstein<\/strong><\/p>\n\n\n\n<p>Nach intensiver Fehlersuche entdeckten wir den \u00dcbelt\u00e4ter: Die Websocket-Verbindung wurde nicht korrekt hergestellt. Lokal hatten wir uns \u00fcber die URL ws:\/\/localhost problemlos mit der Session verbunden. In Azure jedoch war der Einsatz einer ws:\/\/-URL nicht vorgesehen \u2013 stattdessen war nur die URL http:\/\/50.85.88.155 konfiguriert. Da unser Client in der Architektur ausschlie\u00dflich \u00fcber diese Verbindung mit der Session kommuniziert, war es entscheidend, dass die korrekte URL verwendet wird.<\/p>\n\n\n\n<p>Die L\u00f6sung war letztlich einfach, aber essenziell: Wir passten die Umgebungsvariable an, sodass alle Verbindungen \u00fcber http:\/\/50.85.88.155 liefen. Damit wurde die Websocket-Verbindung korrekt hergestellt und der Client konnte wieder wie vorgesehen die Echtzeit-Updates empfangen.<\/p>\n\n\n\n<p><strong>M\u00f6gliche Alternativen: Server-Sent Events als Option<\/strong><\/p>\n\n\n\n<p>Auch wenn wir uns letztlich f\u00fcr Websockets entschieden haben, h\u00e4tten wir alternativ auch auf Server-Sent Events (SSE) setzen k\u00f6nnen \u2013 ideal, wenn es um eine unidirektionale Kommunikation geht, bei der der Server Updates an den Client sendet, ohne dass dieser st\u00e4ndig aktiv nachfragen muss. Dennoch sprachen mehrere Faktoren f\u00fcr Websockets:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sie erm\u00f6glichen eine dauerhafte Verbindung, \u00fcber die der Client jederzeit an die Session angebunden bleibt und flexibel auf neue Daten reagieren kann.<\/li>\n\n\n\n<li>Umfangreiche Dokumentation und Ressourcen erleichterten uns den Einstieg.<\/li>\n\n\n\n<li>Wir wollten uns intensiver mit Websockets auseinandersetzen, da diese in vielen modernen Echtzeit-Anwendungen eine zentrale Rolle spielen.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Der Moment der Wahrheit: CrowdCloud live!<\/strong><\/h3>\n\n\n\n<p>Nach Wochen intensiver Entwicklungsarbeit, zahlreichen Tests und dem st\u00e4ndigen Hin und Her der Fehlersuche stand es endlich so weit: Der Moment der Wahrheit. Die Live-Demo von CrowdCloud war ein voller Erfolg. Es war unglaublich, zu sehen, wie unsere interaktive Wortwolke in Echtzeit funktionierte, Feedback sammelte und ein L\u00e4cheln auf die Gesichter der Zuschauer zauberte. Dieser Augenblick \u2013 wenn all die langen Stunden und zahllosen Tassen Kaffee sich auszahlen \u2013 bleibt unvergesslich.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"571\" data-attachment-id=\"27370\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2025\/02\/26\/cloudy-mit-aussicht-auf-worter-unser-weg-mit-crowdcloud\/bildschirmfoto_2025-02-13_um_15-31-02\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/Bildschirmfoto_2025-02-13_um_15.31.02.png\" data-orig-size=\"3025,1687\" 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=\"Bildschirmfoto_2025-02-13_um_15.31.02\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/Bildschirmfoto_2025-02-13_um_15.31.02-1024x571.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/Bildschirmfoto_2025-02-13_um_15.31.02-1024x571.png\" alt=\"\" class=\"wp-image-27370\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/Bildschirmfoto_2025-02-13_um_15.31.02-1024x571.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/Bildschirmfoto_2025-02-13_um_15.31.02-300x167.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/Bildschirmfoto_2025-02-13_um_15.31.02-768x428.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/Bildschirmfoto_2025-02-13_um_15.31.02-1536x857.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/Bildschirmfoto_2025-02-13_um_15.31.02-2048x1142.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Learnings: Technische Erkenntnisse und Soft Skills<\/strong><\/h3>\n\n\n\n<p>F\u00fcr alle, die den Sprung in die Welt der modernen Deployment- und Containerisierungstechnologien wagen m\u00f6chten, haben wir einige wertvolle Tipps und Erkenntnisse zusammengestellt:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Technische Erkenntnisse<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Modulare Architekturen setzen<\/strong>: Durch die komponentenbasierte Architektur von React und den deklarativen Ansatz in Terraform k\u00f6nnen Anwendungen flexibel erweitert und angepasst werden. Das hat uns geholfen, unser System effizient und skalierbar zu gestalten.<\/li>\n\n\n\n<li><strong>Automatisierung ist Gold wert<\/strong>: Der Einsatz von Tools wie GitHub Actions zur Automatisierung von Tests und Deployments hat uns gezeigt, wie viel Zeit und Fehler wir durch kontinuierliche Automatisierung sparen k\u00f6nnen. Besonders die Implementierung von CI\/CD-Pipelines und Sicherheits-Tools wie Syft und Grype hat uns den Wert der Automatisierung und kontinuierlichen \u00dcberpr\u00fcfung nahegebracht.<\/li>\n\n\n\n<li><strong>Fehlersuche nicht scheuen<\/strong>: Debugging kann frustrierend sein, aber jede gel\u00f6ste Herausforderung bringt uns weiter. Dokumentiert eure L\u00f6sungen, damit ihr bei \u00e4hnlichen Problemen in der Zukunft schneller reagieren k\u00f6nnt. In unserem Projekt haben wir nicht nur technische Tools und Technologien gemeistert, sondern auch gelernt, den passenden Mix aus verschiedenen Tools f\u00fcr ein spezifisches Projekt zusammenzustellen.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Soft Skills<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Frustrationstoleranz und Durchhalteverm\u00f6gen<\/strong>: Jede Herausforderung, egal wie gro\u00df, wurde zur Chance, unser K\u00f6nnen zu erweitern. Der Umgang mit unerwarteten Problemen und die Geduld, L\u00f6sungen zu finden, hat uns als Team gest\u00e4rkt.<\/li>\n\n\n\n<li><strong>Teamarbeit macht den Unterschied<\/strong>: Oft war es die gemeinsame Suche nach L\u00f6sungen, die uns durch schwierige Phasen getragen hat. Der regelm\u00e4\u00dfige Austausch von Ideen und das kollektive Probleml\u00f6sen haben uns sowohl technisch als auch zwischenmenschlich vorangebracht. Flexibilit\u00e4t, um von urspr\u00fcnglichen Pl\u00e4nen abzuweichen und Anpassungen vorzunehmen, war ebenso wichtig wie das Festhalten an Visionen.<\/li>\n<\/ul>\n\n\n\n<p>Diese Learnings \u2013 sowohl aus technischen Herausforderungen als auch aus zwischenmenschlichen Erfahrungen \u2013 werden uns sicherlich in zuk\u00fcnftigen Projekten zugutekommen und sind eine wertvolle Grundlage f\u00fcr weiteres Wachstum und Erfolg.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Wolken am Horizont \u2013 Was kommt als N\u00e4chstes?<\/strong><\/h3>\n\n\n\n<p>CrowdCloud ist bereits funktionsf\u00e4hig, doch wie bei jeder Webanwendung gibt es auch hier Bereiche, die sich noch verbessern lassen. Einige dieser Verbesserungen k\u00f6nnten potenziell umgesetzt werden, um das Projekt weiter zu optimieren und den Nutzern ein noch besseres Erlebnis zu bieten.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Hinzuf\u00fcgen von Monitoring-Tools<\/h4>\n\n\n\n<p>Eine der n\u00e4chsten m\u00f6glichen Verbesserungen w\u00e4re das Hinzuf\u00fcgen von Monitoring-Tools. Der Einsatz von Diensten wie Azure Monitor oder Prometheus k\u00f6nnte helfen, die Anwendung und Infrastruktur in Echtzeit zu \u00fcberwachen. Dies w\u00fcrde es erm\u00f6glichen, Probleme schneller zu identifizieren und die Performance proaktiv zu verbessern. Obwohl dies momentan nicht geplant ist, k\u00f6nnte eine solche Integration helfen, das System zu stabilisieren und Fehler fr\u00fchzeitig zu erkennen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Verbesserung des Designs und der User Experience<\/h4>\n\n\n\n<p>Das Design und die User Experience (UX) k\u00f6nnten ebenfalls weiter optimiert werden. Derzeit erf\u00fcllt die Anwendung ihren Zweck, aber durch eine noch intuitivere Benutzeroberfl\u00e4che und ein ansprechenderes Design k\u00f6nnte das Nutzererlebnis weiter verbessert werden. Eine \u00dcberarbeitung des UI k\u00f6nnte daf\u00fcr sorgen, dass die Benutzer die W\u00f6rterwolke effizienter und angenehmer bedienen k\u00f6nnen. Diese Art der Verbesserung k\u00f6nnte in Betracht gezogen werden, wenn mehr Nutzerfeedback eingeholt wird oder die Anwendung f\u00fcr gr\u00f6\u00dfere Zielgruppen zug\u00e4nglich gemacht wird.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Umstellung auf HTTPS<\/h4>\n\n\n\n<p>Ein weiterer Schritt, der die Sicherheit der Anwendung verbessern k\u00f6nnte, w\u00e4re die Umstellung auf HTTPS. Aktuell sind die Daten\u00fcbertragungen nicht verschl\u00fcsselt, was die Anwendung potenziell angreifbar macht. Durch die Einf\u00fchrung von HTTPS k\u00f6nnte die Kommunikation zwischen Nutzern und Anwendung verschl\u00fcsselt werden, was zu einer verbesserten Datensicherheit und einem h\u00f6heren Vertrauen der Nutzer f\u00fchren w\u00fcrde. Dies ist jedoch eine optionale Ma\u00dfnahme, die nur bei Bedarf umgesetzt werden sollte.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Entwickeln von Frontend-Tests<\/h4>\n\n\n\n<p>Zudem k\u00f6nnte das Entwickeln von Frontend-Tests ein n\u00e4chster Schritt sein, um die Stabilit\u00e4t der Anwendung zu erh\u00f6hen. Automatisierte Tests w\u00fcrden helfen, Bugs fr\u00fchzeitig zu erkennen und sicherzustellen, dass zuk\u00fcnftige \u00c4nderungen die Benutzeroberfl\u00e4che nicht beeintr\u00e4chtigen. Dies w\u00fcrde es erm\u00f6glichen, dass die Anwendung auch bei kontinuierlicher Weiterentwicklung stabil bleibt, ohne die User Experience negativ zu beeinflussen. Auch diese Ma\u00dfnahme ist jedoch nicht zwingend notwendig und w\u00fcrde nur bei einer signifikanten Erweiterung der Anwendung in Erw\u00e4gung gezogen werden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Fazit: Unser Weg durch die Wolken<\/strong><\/h3>\n\n\n\n<p>Die Arbeit an CrowdCloud war f\u00fcr uns eine wertvolle praktische Erfahrung, die uns tiefere Einblicke in moderne Cloud-Technologien und Deployment-Methoden erm\u00f6glicht hat. Durch den Einsatz von Kubernetes, Azure und Terraformkonnten wir lernen, wie man eine skalierbare und automatisierte Infrastruktur aufbaut.<\/p>\n\n\n\n<p>W\u00e4hrend der Entwicklung sind wir auf einige technische Herausforderungen gesto\u00dfen, insbesondere bei der Ingress-Konfiguration, dem Deployment des Blob Storage und der Websocket-Integration. Diese Probleme haben uns gezeigt, wie wichtig es ist, flexibel zu bleiben, pragmatische L\u00f6sungen zu finden und eine strukturierte Fehlersuche zu betreiben.<\/p>\n\n\n\n<p>Neben den technischen Erkenntnissen haben wir auch unsere F\u00e4higkeiten im Teamwork und im Probleml\u00f6sen weiterentwickelt. Die Nutzung von CI\/CD-Pipelines, Automatisierungstests und Sicherheitschecks hat uns den Wert von sauberem, reproduzierbarem Code verdeutlicht.<\/p>\n\n\n\n<p>Auch wenn CrowdCloud in seiner jetzigen Form bereits einsatzbereit ist, gibt es weiterhin Optimierungspotenzial, beispielsweise durch die Integration von Monitoring-Tools, Verbesserungen im Design oder die Umstellung auf HTTPS. Insgesamt hat uns dieses Projekt gezeigt, wie viele Aspekte beim Aufbau einer Cloud-Anwendung zu ber\u00fccksichtigen sind und wie wichtig eine durchdachte Architektur f\u00fcr den langfristigen Erfolg ist.<\/p>\n\n\n\n<p>Danke, dass ihr uns auf dieser Reise begleitet habt!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Willkommen zu unserem Erfahrungsbericht aus der Vorlesung \u201eSystem Engineering and Management\u201c. In den letzten Monaten haben wir uns an ein Projekt gewagt, das uns sowohl technisch als auch pers\u00f6nlich herausgefordert hat \u2013 CrowdCloud. Anstatt uns in trockene Theorien zu verlieren, m\u00f6chten wir euch in diesem Blog-Beitrag erz\u00e4hlen, wie aus einer spontanen Idee eine interaktive, skalierbare [&hellip;]<\/p>\n","protected":false},"author":1228,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2],"tags":[227,150,7,3,154,25,424,514],"ppma_author":[1051,1050],"class_list":["post-27369","post","type-post","status-publish","format-standard","hentry","category-system-engineering","tag-azure","tag-ci-cd","tag-cloud","tag-docker","tag-kubernetes","tag-nodejs","tag-system-engineering-and-management","tag-terraform"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":25800,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/09\/14\/splid-2-0-die-zukunft-des-gemeinsamen-ausgabenmanagements\/","url_meta":{"origin":27369,"position":0},"title":"Splid 2.0 &#8211; Die Zukunft des gemeinsamen Ausgabenmanagements","author":"David Christoph Scheifers","date":"14. September 2023","format":false,"excerpt":"Im Rahmen der Vorlesung \u201cSoftware Development for Cloud Computing\u201d haben wir uns daf\u00fcr entschieden, einen Klon der App Splid auf Basis unterschiedlicher Cloud Technologien als Web App zu entwickeln, um uns so die Grundkenntnisse des Cloud Computings anzueignen. Projektidee Bei gemeinsamen Aktivit\u00e4ten und Gruppenausgaben ist es sehr hilfreich, einfache und\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\/2023\/09\/image6.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/image6.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/image6.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/image6.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/image6.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/image6.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":28011,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2025\/09\/11\/cloud-native-security-scanner\/","url_meta":{"origin":27369,"position":1},"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":28021,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2025\/09\/13\/multiplayer-web-game-mit-aws-schiffe-versenken\/","url_meta":{"origin":27369,"position":2},"title":"Multiplayer Web-Game mit AWS | Schiffe versenken","author":"Leon Obertopp","date":"13. September 2025","format":false,"excerpt":"Projektidee: Im Rahmen der Vorlesung \"Software Development for Cloud Computing\" sollen die Studierenden in Gruppen ein eigenes Projekt, mit Hilfe von in der Vorlesung gezeigten Cloud Technologien umsetzen. Wir hatten Anfangs Probleme ein geeignetes Thema zu finden, da unser Wissenstand im Thema Cloud nicht besonders gro\u00df war. Letztendlich haben wir\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-4.png?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-4.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image-4.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":11711,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2020\/09\/29\/perfekter-gluhwein-fur-zuhause-thermometer-mit-raspberry-pi-und-aws\/","url_meta":{"origin":27369,"position":3},"title":"Perfekter Gl\u00fchwein f\u00fcr Zuhause: Thermometer mit Raspberry Pi und AWS","author":"jg129","date":"29. September 2020","format":false,"excerpt":"Abstract Kein anderes Getr\u00e4nk ist mit Weihnachtsm\u00e4rkten so verbunden wie Gl\u00fchwein. Und so trinkt sich der ausschweifende Weihnachtsmarktbesucher im Laufe der Adventszeit von Stand zu Stand bis er schlie\u00dflich am Ende des Jahres seinen Lieblingsstand gefunden hat. Doch auch daheim kann der perfekte Gl\u00fchwein gelingen.\u00a0 Wir zeigen, wie man sich\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:\/\/lh3.googleusercontent.com\/rbu36fXExVo14XfyUicXbIFjAgh1bvNnXHlaUVRfqLevpyZx4KVyjeuYdgItPx6y39R8L9Ub_hug03LYM3AIAW_F14vhBiXOZlt92qIpN0Y2h0H-czZ65ERnn3qUoWVh7JfI5ihA","width":350,"height":200,"srcset":"https:\/\/lh3.googleusercontent.com\/rbu36fXExVo14XfyUicXbIFjAgh1bvNnXHlaUVRfqLevpyZx4KVyjeuYdgItPx6y39R8L9Ub_hug03LYM3AIAW_F14vhBiXOZlt92qIpN0Y2h0H-czZ65ERnn3qUoWVh7JfI5ihA 1x, https:\/\/lh3.googleusercontent.com\/rbu36fXExVo14XfyUicXbIFjAgh1bvNnXHlaUVRfqLevpyZx4KVyjeuYdgItPx6y39R8L9Ub_hug03LYM3AIAW_F14vhBiXOZlt92qIpN0Y2h0H-czZ65ERnn3qUoWVh7JfI5ihA 1.5x"},"classes":[]},{"id":21683,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/18\/ynstagram-cloud-computing-mit-aws-serverless\/","url_meta":{"origin":27369,"position":4},"title":"Ynstagram &#8211; Cloud Computing mit AWS &amp; Serverless","author":"ns144","date":"18. September 2021","format":false,"excerpt":"Im Rahmen der Vorlesung \u201cSoftware Development for Cloud Computing\u201d haben wir uns hinsichtlich des dortigen Semesterprojektes zum Ziel gesetzt einen einfachen Instagram Klon zu entwerfen um uns die Grundkenntnisse des Cloud Computings anzueignen. Grundkonzeption \/ Ziele des Projektes Da wir bereits einige Erfahrung mit React aufgrund anderer studentischer Projekte sammeln\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\/2021\/09\/Prasentation_CC_01.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Prasentation_CC_01.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Prasentation_CC_01.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Prasentation_CC_01.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Prasentation_CC_01.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Prasentation_CC_01.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":12032,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2020\/09\/30\/admin-panel-web-app-in-der-aws-cloud\/","url_meta":{"origin":27369,"position":5},"title":"Admin Panel (Web App) in der AWS Cloud","author":"ss447","date":"30. September 2020","format":false,"excerpt":"1. Einleitung Im Rahmen der Vorlesung \u201eSoftware Development for Cloud Computing\u201c haben wir uns als Gruppe dazu entschieden aufbauend auf teilweise bereits vorhandener Codebasis an einem Startup-Projekt weiterzuarbeiten. Der Hauptfokus lag bei uns auf dem Ausbau von DevOps-Aspekten und auf dem eines stabilen und sicheren Systems, welches auch in der\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\/img.youtube.com\/vi\/qw9ZkWnvR4M\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":1051,"user_id":1228,"is_guest":0,"slug":"simon_wimmer","display_name":"Simon Wimmer","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/0b551974477710db50755de8b4a59c2720ce1b3ff90a203fe7249047a9b33d25?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""},{"term_id":1050,"user_id":1227,"is_guest":0,"slug":"milena_kbler","display_name":"Milena K\u00fcbler","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/5f2b76d8dd72cd8ec7ceac529cf52ae23392a5fa47750bf5b40520ef3607608e?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\/27369","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\/1228"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=27369"}],"version-history":[{"count":1,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/27369\/revisions"}],"predecessor-version":[{"id":27373,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/27369\/revisions\/27373"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=27369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=27369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=27369"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=27369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}