Eine Einführung in AWS Fargate

AWS Fargate: Container ohne Server verwalten

AWS Fargate ist eine Technologie, die nahtlos mit Amazon ECS und Amazon EKS zusammenarbeitet. Sie ermöglicht das Ausführen von Containern, ohne dass Sie sich um die Verwaltung von Servern oder Clustern von Amazon EC2-Instanzen kümmern müssen.

Durch den Einsatz von Fargate entfällt der Aufwand, virtuelle Maschinen für die Container-Ausführung zu konfigurieren, zu skalieren und bereitzustellen. Es ist nicht länger erforderlich, Servertypen auszuwählen, Cluster-Skalierungen zu planen oder die optimale Auslastung eines Clusters zu ermitteln.

Für das Ausführen von Amazon ECS-Aufgaben und -Diensten können Sie entweder den Fargate-Starttyp oder einen Fargate-Kapazitätsanbieter wählen. Um Fargate zu nutzen, packen Sie Ihre Anwendung in Container, definieren die Anforderungen an Betriebssystem, CPU und Arbeitsspeicher, konfigurieren Netzwerk- und IAM-Richtlinien und starten sie dann.

Es ist nicht notwendig, eine feste CPU- und RAM-Kapazität für das Hosten Ihrer Container vorzuhalten. Sie geben AWS lediglich an, welche Ressourcen eine Aufgabe benötigt, und AWS kümmert sich um den Rest. Jede Fargate-Aufgabe hat ihren eigenen, isolierten Bereich und teilt den zugrunde liegenden Kernel, die CPU, den Speicher oder die elastische Netzwerkschnittstelle nicht mit anderen Aufgaben.

Wie funktioniert Fargate im Detail?

Fargate ermöglicht die Bereitstellung von Containern ohne jegliche Einrichtung oder Verwaltung der zugrundeliegenden Infrastruktur. Sie spezifizieren die Container-Images, die ausgeführt werden sollen, sowie die Menge an CPU- und Speicherressourcen, die Sie zuweisen möchten. Die Hostserver werden dann automatisch von Fargate bereitgestellt. Während der Laufzeit Ihrer Container zahlen Sie ausschließlich für die tatsächlich genutzten Ressourcen.

Fargate wird als Serverless-Computing-Engine bezeichnet, da Anwender die Server, auf denen Container gehostet werden, nicht selbst verwalten müssen. Die Server sind zwar immer noch vorhanden, werden aber von AWS verwaltet. Fargate sollte nicht mit AWS Lambda verwechselt werden, einem anderen Serverless-Computing-Service, der ursprünglich nicht für Container konzipiert wurde (obwohl Lambda jetzt die Bereitstellung von Container-Images unterstützt).

Welche Vorteile bietet Fargate?

AWS Fargate ermittelt exakt die Menge an Rechenleistung, Arbeitsspeicher und anderen Ressourcen, die Ihre Aufgaben benötigen. Dadurch müssen Sie sich keine Gedanken über die Auswahl passender Instanztypen oder die Skalierung der Clusterkapazität machen.

Sie zahlen nur für die Ressourcen, die Ihre Container tatsächlich verbrauchen. Dies verhindert eine unnötige Überbereitstellung und somit Kosten für Server, die Sie nicht voll ausnutzen.

Fargate-Aufgaben (oder Pods) werden in ihren eigenen Kerneln ausgeführt, was eine sichere und isolierte Rechenumgebung mit separierten Workloads und erhöhter Sicherheit schafft.

Teams können Apps mithilfe von ECS- oder EKS-Containern entwickeln und betreiben, ohne sich mit aufwendigen Infrastrukturverwaltungsaufgaben wie dem Skalieren und Sichern von Servern oder dem Patchen von Betriebssystemen zu beschäftigen.

Dank der Integration in andere AWS-Services wie Amazon CloudWatch Container Insights bietet AWS Fargate ein hohes Maß an Transparenz. Sie können auch verschiedene Technologien von Drittanbietern nutzen, um Protokolle und Metriken zu erfassen.

Die umfangreichen Möglichkeiten der AWS-Services lassen sich bei der Container-Nutzung mit Fargate effizient einsetzen.

Fargate startet und skaliert Rechenressourcen kontinuierlich, um sie an die Anforderungen der Container anzupassen. So wird eine Überbereitstellung vermieden und sichergestellt, dass Sie nur für Ressourcen zahlen, die Sie auch wirklich nutzen. Mit der Fargate Spot-Option, die bis zu 70 % der regulären Kosten einsparen kann, lassen sich Kosten weiter optimieren, diese Option eignet sich jedoch am besten für Anwendungen, die Unterbrechungen tolerieren.

Komponenten von Fargate

Cluster

Ein Amazon ECS-Cluster ist eine logische Gruppierung von Aufgaben oder Services. Cluster können zur Isolation Ihrer Anwendungen verwendet werden. Wenn Sie Fargate zum Ausführen Ihrer Aufgaben nutzen, übernimmt Fargate die Verwaltung Ihrer Cluster-Ressourcen.

Aufgabendefinitionen

Eine Aufgabendefinition ist eine Textdatei, die mindestens einen Container Ihrer Anwendung beschreibt. Diese JSON-Datei kann bis zu zehn Container gleichzeitig definieren. Die Aufgabendefinition Ihrer Anwendung dient als Bauplan und spezifiziert eine Vielzahl von Parametern.

Sie können beispielsweise Betriebssystemparameter, zu verwendende Container, zu öffnende Ports und Datenmengen für die Container definieren. Die spezifischen Parameter in der Aufgabendefinition werden durch die Anforderungen Ihrer Anwendung bestimmt.

Aufgaben

Eine Aufgabe ist eine Instanziierung einer Aufgabendefinition auf Clusterebene. Nachdem Sie eine Aufgabendefinition für Ihre Anwendung in Amazon ECS erstellt haben, können Sie die Anzahl der Aufgaben festlegen, die in Ihrem Cluster ausgeführt werden sollen. Eine Aufgabe kann als Teil eines Dienstes oder als separater Prozess ausgeführt werden.

Dienste

Mit einem Amazon ECS-Service können Sie in einem Amazon ECS-Cluster die gewünschte Anzahl von Aufgaben parallel ausführen und aufrechterhalten. Der Amazon ECS Service Scheduler führt basierend auf Ihrer Aufgabendefinition eine weitere Instanz aus, wenn eine Aufgabe fehlschlägt oder aus irgendeinem Grund angehalten wird, um sie zu ersetzen und die Anzahl der Aufgaben im Dienst auf dem gewünschten Niveau zu halten.

Betriebssystem und CPU-Architektur

Fargate unterstützt die Betriebssysteme Amazon Linux 2, Windows Server 2019 Full und Windows Server 2019 Core.

Für die Amazon ECS-Aufgabendefinition stehen die Architekturen ARM und X86_64 zur Verfügung. Wenn Sie Windows-Container verwenden, benötigen Sie eine X86_64-CPU-Architektur. Für Linux-Container können Sie die ARM64-Architektur für ARM-basierte Anwendungen oder die X86_64-CPU-Architektur verwenden.

ECS mit EC2-Instanzen vs. ECS mit AWS Fargate

Im EC2-Instanzmodell werden Container auf EC2-Instanzen (VMs) des Clusters bereitgestellt. ECS verwaltet diese zusammen mit den Aufgaben, die Teil der Aufgabendefinition sind.

Vorteile 👍

  • Sie haben die vollständige Kontrolle über den verwendeten EC2-Instanztyp.
  • Die Nutzung von Spot-Instances kann die Kosten um bis zu 90% senken.

Nachteile 👎

  • Sie sind verantwortlich für Sicherheitspatches und die Netzwerksicherheit der Instanzen sowie für deren Skalierbarkeit im Cluster.

Beim Fargate-Modell entfällt die Notwendigkeit, sich um EC2-Instanzen oder Server zu kümmern. Sie wählen einfach die benötigte CPU- und Speicherkonfiguration aus, und Fargate stellt Ihre Container bereit.

Vorteile 👍

  • Sie müssen keine Server verwalten.
  • AWS übernimmt die Verantwortung für Verfügbarkeit und Skalierbarkeit, dennoch ist die Auswahl des richtigen Speichers und der richtigen CPU ratsam, um die Verfügbarkeit Ihrer Anwendung sicherzustellen.
  • Mit Fargate Spot können Sie bis zu 70% der Fargate-Kosten sparen.

Nachteile 👎

  • ECS mit AWS Fargate unterstützt ausschließlich den Netzwerkmodus „awsvpc“, was Ihre Kontrolle über die Netzwerkschicht einschränkt.

EKS ohne Fargate vs. EKS mit Fargate

Bei EKS ohne Fargate müssen Sie im Vorfeld die gewünschte Größe des Clusters festlegen. Zwar können Knoten später noch manuell angepasst werden, ist jedoch aufwendiger als die Festlegung einer idealen Größe von Anfang an.

Vorteile 👍

  • Dieses Modell bietet Ihnen mehr Kontrolle, da Sie Konfigurationsvariablen wie HostNetwork und HostPort selbst definieren können.
  • Da Fargate nicht in allen Regionen verfügbar ist, kann EKS ohne Fargate die bevorzugte Option sein, wenn Sie möchten, dass Ihre Container in mehr Regionen verfügbar sind.

Nachteile 👎

  • EKS ohne Fargate kann komplexer in der Handhabung sein.

Bei EKS mit Fargate müssen Sie die Clustergröße im Voraus nicht festlegen.

Vorteile 👍

  • EKS mit Fargate ist sicherer, da die Container in dedizierten virtuellen Maschinen ausgeführt werden. Der Umstand, dass der privilegierte Modus nicht unterstützt wird, ist eine zusätzliche Sicherheitsmaßnahme.
  • Langfristig kann diese Option kostengünstiger sein.

Nachteile 👎

  • Es bietet Ihnen weniger Kontrollmöglichkeiten.

Fazit

Fargate ist ein sehr leistungsfähiges und ausgereiftes Werkzeug, das Ihnen Kosten, Zeit und Aufwand sparen kann, da es die gesamte Infrastrukturverwaltung für Sie übernimmt. Fargate ist besonders dann vorteilhaft, wenn Sie neu im Containerbereich sind und sich vorrangig auf die Entwicklung Ihrer Anwendung konzentrieren möchten, anstatt sie zu warten.