Containerisierung und ECS-Migration

Aland Cloud hat einen Kunden bei der Modernisierung seiner Infrastruktur unterstützt, indem ein monolithischer Anwendungsstack in eine containerisierte Architektur auf AWS migriert wurde. Die Lösung nutzte Docker, Amazon ECS und Amazon ECR, um Deployments zu optimieren, die Skalierbarkeit zu verbessern und den betrieblichen Aufwand zu reduzieren. Durch die Containerisierung der Dienste und die Automatisierung des Infrastrukturmanagements erreichte der Kunde eine verlässlichere, wartungsfreundlichere und cloud-native Plattform, die mit dem Unternehmenswachstum skaliert.

Projektübersicht.


avrio ecs migration

Eine SaaS-Business-Plattform, die Unternehmen bei Herausforderungen in der Personaleinstellung und der Kandidatenfilterung unterstützt.

Der Kunde ist eine SaaS-Plattform, die Unternehmen dabei hilft, ihren Einstellungsprozess zu automatisieren, qualifizierte Kandidaten zu beschaffen und Screening-Workflows durchzuführen.

Ihre Infrastruktur

Der Kunde verfügte über Java-Anwendungen, die als WAR-Dateien verpackt waren und auf Tomcat-Servern in AWS Elastic Beanstalk liefenDiese Lösung brachte mehrere Herausforderungen bei Deployment und Ausfallsicherheit mit sich. Die Anwendungen liefen auf veralteten (deprecated) Elastic Beanstalk-Plattformversionen, die nicht mehr aktiv unterstützt wurden.

Die Software bestand aus mehreren Microservices, die alle auf Elastic Beanstalk bereitgestellt wurden.

Auf der Datenbankseite stützte sich das System auf eine Amazon RDS for MySQL-Instanz. Diese einzelne RDS-Datenbank wurde von mehreren Softwareanwendungen gemeinsam genutzt.

Zudem gab es mehrere Frontend-Anwendungen, die alle Amazon S3-Buckets für das Hosting statischer Websites nutzten.

Für das Deployment ihrer Projekte in die Amazon S3- und Elastic Beanstalk-Umgebungen verließ sich das Unternehmen auf Bitbucket Pipelines.

Leider wurden keine Infrastructure-as-Code-Tools wie CloudFormation oder Terraform eingesetzt..

Die Herausforderung

Da die Anwendungen auf WAR-basierten Deployments beruhten, wurde es zunehmend schwieriger, sie zu warten, da moderne Frameworks entscheidende Funktionen nicht mehr unterstützten oder entfernt hatten.

Der Kunde nutzte veraltete und nicht mehr unterstützte (deprecated) Versionen von Tomcat und AWS Elastic Beanstalk.

Zudem kam es beim Kunden zu häufigen Neustarts der Dienste, was zu Unterbrechungen im Nutzerfluss führte und die Verfügbarkeit des Services beeinträchtigte.

Ein weiteres Problem war die horizontale Skalierung bei unerwarteter Last auf der Anwendung.

Eine zusätzliche Herausforderung waren fehlschlagende Pipelines, die instabil waren und lange Release-Zeiten von etwa 25 Minuten verursachten.

Wir haben uns für den Einsatz des verwalteten Amazon Web Services (AWS) Elastic Container Service (ECS) entschieden, um Docker-Container bereitzustellen und auszuführen. Die Amazon Elastic Container Registry (ECR) wurde verwendet, um die Docker-Container-Images zu speichern, die anschließend von ECS abgerufen wurden, um die Dienste auszuführen.

Um den Deployment-Prozess zu optimieren, wurden CI/CD-Pipelines mit GitHub Actions implementiert, die eine automatisierte Bereitstellung der Anwendung auf ECS ermöglichen.

Die Lösung

Um diese Herausforderungen anzugehen und die Infrastruktur zu modernisieren, haben wir uns dafür entschieden, die Anwendungen zu containerisieren, um die Skalierbarkeit zu verbessern, und sie auf Amazon ECS bereitzustellen..

Andere Lösungen wie der AWS Elastic Kubernetes Service (EKS)wurden ebenfalls in Betracht gezogen. ECS wurde jedoch bevorzugt, da der Anwendungsfall nicht die Komplexität erforderte, die der Betrieb mehrerer Dienste in einer isolierten Kubernetes-Umgebung mit sich bringt. Zudem bot ECS eine kostengünstige Lösung mit minimalem Wartungsaufwand, was perfekt zu den Anforderungen des Kunden passte.

Wir haben auch die bestehenden Pipelines von Bitbucket auf GitHub Actions migriert und stabilisiert, da der Kunde den Wechsel auf den GitHub Enterprise-Tarif plante. Dieser enthält freie Build-Minuten, die voll für die Deployments genutzt werden konnten.

Die neue Architektur sah wie folgt aus:

aws ecs architecture

 

 

 

Wir haben Infrastructure as Code (IaC) mit Terraform implementiert. Dadurch ist die Infrastruktur vollständig dokumentiert, reproduzierbar und nachvollziehbar – was dem Team letztendlich ermöglicht, klar zu verstehen, warum jede Änderung vorgenommen wurde.

Ergebnisse und Vorteile

Die Skalierbarkeit und Wartbarkeit des Dienstes haben sich nach der Containerisierung und der Migration zu ECS erheblich verbessert. Der Kunde profitierte von schnelleren Deployments in die Produktionsumgebung, was die Entwicklerproduktivität steigerte und manuelle Eingriffe reduzierte.

Zudem gab es eine Verfügbarkeit von 99,99 % und keine ständigen Dienst-Neustarts mehr, die die Endkunden gestört hätten.

Die Deployment-Zeit verringerte sich drastisch von 25 Minuten auf 6–7 Minuten.

Endergebnisse

  • 99,99 % Verfügbarkeit (Uptime)
  • 4-mal schnellere Deployments
  • Vollständig dokumentierte Infrastruktur

Schlussfolgerung

Wir haben die Deployment-Herausforderungen des Kunden erfolgreich gelöst und seine Cloud-Infrastruktur optimiert. Wir haben die Deployments deutlich beschleunigt, häufige Unterbrechungen im Nutzerfluss beseitigt und veraltete AWS Elastic Beanstalk-Umgebungen vollständig abgelöst.