Skip to content
Containerisierte Anwendungen auf AWS ECS Fargate bereitstellen: Ein Praxisleitfaden
← ← Zurück zu Gedanken Cloud

Containerisierte Anwendungen auf AWS ECS Fargate bereitstellen: Ein Praxisleitfaden

Der Betrieb von Containern in Produktionsumgebungen erfordert zuverlassige Orchestrierung, nahtlose Skalierung und minimalen operativen Aufwand. AWS Elastic Container Service (ECS) mit dem Starttyp Fargate erfullt alle drei Anforderungen, indem es die Notwendigkeit der Serververwaltung vollstandig eliminiert. In diesem Leitfaden erklaren wir, was Fargate ist, wie ein produktionsreifes Deployment aufgesetzt wird und wie sich die Kosten im Griff behalten lassen.

Was ist AWS ECS Fargate?

Amazon ECS ist ein vollstandig verwalteter Container-Orchestrierungsdienst. Wenn Sie den Starttyp Fargate wahlen, ubernimmt AWS die Verantwortung fur die gesamte Recheninfrastruktur. Sie definieren Ihre Container, geben CPU- und Speicheranforderungen an, und Fargate kummert sich um den Rest: Bereitstellung der Hosts, Platzierung der Tasks, Patchen des Betriebssystems und Skalierung der Flotte.

Im Gegensatz zum EC2-Starttyp, bei dem Sie selbst einen Cluster von EC2-Instanzen verwalten, abstrahiert Fargate die Serverebene vollstandig. Sie zahlen nur fur die vCPU- und Speicherressourcen, die Ihre Tasks tatsachlich verbrauchen, sekundengenau abgerechnet mit einem Minimum von einer Minute.

Schritt-fur-Schritt-Einrichtung

1. Container-Image erstellen und hochladen

Beginnen Sie mit der Erstellung eines Docker-Images fur Ihre Anwendung und laden Sie es in die Amazon Elastic Container Registry (ECR) hoch. ECR integriert sich nativ mit ECS und unterstutzt Image-Scanning, Lifecycle-Richtlinien und regionsuebergreifende Replikation.

aws ecr create-repository --repository-name meine-app
docker build -t meine-app:latest .
docker tag meine-app:latest <account-id>.dkr.ecr.<region>.amazonaws.com/meine-app:latest
aws ecr get-login-password | docker login --username AWS --password-stdin <account-id>.dkr.ecr.<region>.amazonaws.com
docker push <account-id>.dkr.ecr.<region>.amazonaws.com/meine-app:latest

2. Task Definition erstellen

Eine Task Definition ist die Blaupause fur Ihren Container. Sie spezifiziert das Docker-Image, CPU- und Speicherzuweisungen, Port-Mappings, Umgebungsvariablen, Logging-Konfiguration und IAM-Rollen.

Wesentliche Parameter:

  • networkMode: Auf awsvpc setzen (fur Fargate erforderlich). Jeder Task erhalt seine eigene elastische Netzwerkschnittstelle und eine private IP-Adresse.
  • requiresCompatibilities: Auf FARGATE setzen.
  • cpu / memory: Aus den unterstutzten Kombinationen wahlen (z.B. 0,25 vCPU / 512 MB, 1 vCPU / 2 GB, bis zu 16 vCPU / 120 GB).
  • logConfiguration: Den awslogs-Treiber verwenden, um Container-Logs nach CloudWatch zu streamen.
  • executionRoleArn: Eine IAM-Rolle, die ECS die Berechtigung erteilt, Images aus ECR herunterzuladen und Logs zu schreiben.
  • taskRoleArn: Eine IAM-Rolle, die Ihr Anwendungscode zur Laufzeit annimmt, um auf andere AWS-Dienste zuzugreifen.

3. Netzwerk einrichten

Fargate-Tasks laufen innerhalb einer VPC. Erstellen oder wahlen Sie private Subnetze fur Ihre Tasks und weisen Sie eine Security Group zu, die eingehenden Datenverkehr nur auf den Ports erlaubt, die Ihre Anwendung freigibt. Fur internetfachige Dienste platzieren Sie einen Application Load Balancer (ALB) in offentlichen Subnetzen und leiten den Datenverkehr an die Tasks in privaten Subnetzen weiter.

4. ECS-Service erstellen

Ein ECS-Service halt die gewunschte Anzahl laufender Task-Instanzen aufrecht und integriert sich mit dem ALB fur Health Checks und Lastverteilung. Bei der Erstellung des Services geben Sie an:

  • Den Cluster und die Task Definition.
  • Die gewunschte Anzahl von Tasks.
  • Die Netzwerkkonfiguration (Subnetze, Security Groups, offentliche IP-Zuweisung).
  • Die Target Group des Load Balancers, den Containernamen und den Container-Port.

Der Service-Scheduler ersetzt automatisch fehlerhafte Tasks und verteilt sie uber Availability Zones fur hohe Verfugbarkeit.

Integration mit dem Application Load Balancer

Ein ALB ist fur produktive Fargate-Deployments unverzichtbar. Er bietet pfadbasiertes und hostbasiertes Routing, TLS-Terminierung, Health Checks und Connection Draining. Erstellen Sie eine Target Group mit dem Zieltyp ip (nicht instance, da Fargate-Tasks den awsvpc-Netzwerkmodus verwenden). Konfigurieren Sie Health-Check-Pfade, die HTTP 200 von Ihrer Anwendung zuruckgeben, und legen Sie angemessene Werte fur die Deregistration Delay fest, um reibungslose Abschaltungen wahrend Deployments zu gewahrleisten.

Auto-Scaling-Richtlinien

ECS Service Auto Scaling passt die gewunschte Task-Anzahl basierend auf CloudWatch-Metriken an. Drei Richtlinientypen stehen zur Verfugung:

  • Target Tracking: Die einfachste Option. Legen Sie einen Zielwert fur eine Metrik wie die durchschnittliche CPU-Auslastung fest (z.B. 60%), und ECS passt die Task-Anzahl automatisch an, um diesen Zielwert einzuhalten.
  • Step Scaling: Definieren Sie Skalierungsanpassungen, die den Schwellenwerten von CloudWatch-Alarmen entsprechen. Nutzlich, wenn Sie unterschiedliches Scale-Out- und Scale-In-Verhalten benotigen.
  • Scheduled Scaling: Erhohen oder verringern Sie die Kapazitat zu vordefinierten Zeiten, ideal fur Workloads mit vorhersagbaren Verkehrsmustern.

Fur die meisten Anwendungen beginnen Sie mit Target Tracking auf CPU-Auslastung bei 60-70%. Fugen Sie eine zweite Richtlinie hinzu, die die ALB-Anfragenzahl pro Target verfolgt, wenn Ihr Workload eher I/O-gebunden als CPU-gebunden ist.

Strategien zur Kostenoptimierung

Die Fargate-Preisgestaltung ist transparent, kann aber schnell ansteigen. Hier sind praktische Wege zur Kostenreduzierung:

  • Tasks richtig dimensionieren: Vermeiden Sie Uber-Provisionierung von CPU und Speicher. Nutzen Sie Container-Insights-Metriken, um die tatsachliche Ressourcenauslastung zu ermitteln, und passen Sie die Task Definitions entsprechend an.
  • Fargate Spot verwenden: Fur fehlertolerante Workloads (Batch-Jobs, Queue-Verarbeitung) bietet Fargate Spot Einsparungen von bis zu 70%. Tasks konnen mit einer Zwei-Minuten-Vorwarnung unterbrochen werden, daher sollten Sie fur ein geordnetes Herunterfahren planen.
  • Savings Plans nutzen: Compute Savings Plans gelten auch fur Fargate und konnen die Kosten um bis zu 50% senken, im Austausch fur eine ein- oder dreijahrige Verpflichtung.
  • Image-Grosse optimieren: Kleinere Images reduzieren die ECR-Speicherkosten und beschleunigen die Startzeit der Tasks. Verwenden Sie mehrstufige Builds und minimale Basis-Images wie Alpine oder Distroless.
  • Logging-Volumen uberprufen: CloudWatch Logs berechnet Gebuhren fur Aufnahme und Speicherung. Filtern Sie detaillierte Logs auf Anwendungsebene und legen Sie Log-Aufbewahrungsrichtlinien fest.

Fargate vs. EC2 vs. EKS: Die richtige Wahl treffen

| Kriterium | Fargate | EC2-Starttyp | EKS (Kubernetes) | |---|---|---|---| | Serververwaltung | Keine | Sie verwalten Instanzen | Sie konfigurieren die Control Plane | | Skalierungsgranularitat | Pro Task | Pro Instanz + pro Task | Pro Pod + pro Node | | Startzeit | 30-60 Sekunden | Abhangig vom Instanzstart | Abhangig von der Node-Bereitstellung | | Kostenmodell | Bezahlung pro Task-Ressourcen | Bezahlung pro Instanz (Reserved/Spot) | Control-Plane-Gebuhr + Compute | | GPU-Unterstutzung | Eingeschrankt | Volle Unterstutzung | Volle Unterstutzung | | Ideal fur | Microservices, APIs, Batch-Jobs | Grosse, stabile Workloads | Teams mit Kubernetes-Erfahrung |

Wahlen Sie Fargate, wenn Sie keine Infrastrukturverwaltung wunschen und Ihre Workloads variablen oder unvorhersagbaren Datenverkehr aufweisen. Wahlen Sie EC2, wenn Sie GPU-Instanzen, bestimmte Instanztypen benotigen oder die Kosten fur grosse, stabile Workloads optimieren mochten. Wahlen Sie EKS, wenn Ihr Team Kubernetes-Expertise mitbringt und Sie Portabilitat zwischen Cloud-Anbietern oder erweiterte Scheduling-Funktionen benotigen.

Praxistipps fur Produktions-Deployments

  • Rolling Deployments verwenden mit minimumHealthyPercent auf 100 und maximumPercent auf 200. Dies gewahrleistet Deployments ohne Ausfallzeit, indem neue Tasks gestartet werden, bevor alte beendet werden.
  • ECS Exec aktivieren fur Fehlersuche. Es bietet interaktiven Shell-Zugang zu laufenden Containern ohne SSH, unter Verwendung von AWS Systems Manager.
  • Stopp-Timeouts angemessen setzen: Der Parameter stopTimeout gibt Ihrer Anwendung Zeit, laufende Anfragen abzuschliessen, bevor der Container zwangsweise beendet wird.
  • Health Checks implementieren sowohl auf Container-Ebene (in der Task Definition) als auch auf ALB-Target-Group-Ebene. Verwenden Sie bei Bedarf separate Endpunkte.
  • AWS Copilot oder CDK verwenden, um Infrastruktur als Code zu verwalten. Beide Werkzeuge vereinfachen die Bereitstellung von ECS-Ressourcen und unterstutzen die Generierung von CI/CD-Pipelines.
  • Mit Container Insights uberwachen, um Einblick in CPU-, Speicher-, Netzwerk- und Speichermetriken auf Task- und Service-Ebene zu erhalten.

Fazit

AWS ECS Fargate bietet ein uberzeugendes Gleichgewicht zwischen Einfachheit und Leistungsfahigkeit fur den Betrieb containerisierter Anwendungen. Durch die Eliminierung der Serververwaltung konnen sich Entwicklungsteams auf die Anwendungslogik statt auf die Infrastruktur konzentrieren. Mit durchdachter Task-Dimensionierung, Auto-Scaling-Richtlinien und Kostenoptimierungsstrategien kann Fargate als robustes Fundament fur Produktions-Workloads jeder Grosse dienen.