AWS Fargate: Funktion, Eigenschaften, Besonderheiten

aws fargate

Eine Alternative zu Docker und Kubernetes

Die Entwicklung von Softwareanwendungen, die auf verschiedenen Computern lauffähig sind gehört zu den größten Herausforderungen für Entwickler. Um diese Herausforderungen zu lösen, verwenden immer mehr Entwickler eine Container-Technologie. Docker und Kubernetes waren lange Zeit die einzigen Container-Technologien. Doch seit 2017 steht den Entwicklern mit AWS Fargate eine echte Alternative zur Verfügung.

Was ist AWS Fargate?

Der erste Einstieg von Amazon in den Containermarkt war der Amazon Elastic Container Service (ECS). Obwohl viele Entwickler den Wert von ECS erkannten, erforderte diese Lösung oftmals eine langwierige manuelle Konfiguration und Überwachung. Beispielsweise müssen einige Container möglicherweise zusammenarbeiten, obwohl sie ganz andere Ressourcen benötigen.

Die Durchführung des gesamten Managements ist ein Problem vieler Entwickler und IT-Mitarbeiter. Es erfordert einen hohen Ressourcen- und Arbeitsaufwand. Es kostet viel Zeit, bis eine Anwendung bereitgestellt werden kann. Dabei ist Zeit heute ein wichtiges Faktor bei der Entwicklung von Software.

Um diese Probleme zu lösen, hat Amazon AWS Fargate eingeführt. Laut Amazon ist Fargate “eine Compute Engine für Amazon ECS, mit der Sie Container ausführen können, ohne Server oder Cluster verwalten zu müssen.”

Fargate trennt die Aufgabe, Container auszuführen, von der Aufgabe, die zugrunde liegende Infrastruktur zu verwalten. Benutzer können einfach die Ressourcen angeben, die jeder Container benötigt. Den Rest erledigt Fargate. Zum Beispiel müssen Sie nicht den richtigen Servertyp auswählen oder komplizierte mehrschichtige Zugriffsregeln anwenden.

Wie funktioniert AWS Fargate?

Bevor wird uns mit der Frage beschäftigen, wie AWS Fargate funktioniert, sollten wir einen Blick auf ein paar Begriffe werfen, auf die Du bei Fargate häufig stoßen wirst.

Container

Ein Docker-Container ist eine standardisierte Einheit der Softwareentwicklung. Sie enthält alles, was die Softwareanwendung zum Ausführen von Code, Laufzeit, Systemtools, Systembibliotheken usw. benötigt. Diese Container werden aus einer schreibgeschützten Vorlage namens Container-Image erstellt.

Container-Image

Images werden in der Regel aus einer Docker-Datei erstellt, bei der es sich um eine reine Textdatei handelt, in der alle im Container enthaltenen Komponenten angegeben sind. Diese Bilder werden in einer Registrierung gespeichert, von der sie heruntergeladen und im Container ausgeführt werden können.

Aufgaben-Definition

Die Aufgaben-Definition ist eine Textdatei im JSON-Format, die einen oder mehrere Container beschreibt, die Deine Anwendung bilden. Du kannst Dir das als Vorlage für Deine Anwendung vorstellen.

Aufgabe

Eine Aufgabe ist die Instanziierung einer Aufgabendefinition innerhalb eines Clusters. Du kannst die Anzahl der Aufgaben angeben, die auf Deinem Cluster ausgeführt werden.

Cluster

Ein Cluster ist die logische Gruppierung von Ressourcen, die Deine Anwendung benötigt. Wenn Du den Fargate-Starttyp für Aufgaben in Clustern verwendest, verwaltet Amazon ECS Deine Cluster-Ressourcen. Wenn Du den Starttyp EC2 verwenden, handelt es sich bei Deinen Clustern um eine Gruppe von Amazon EC2-Containerinstanzen, die Du verwaltest.

Um mit AWS Fargate zu arbeiten, musst Du zuerst ein Container-Image erstellen, das zu Deiner Anwendung passt. Dieses Image wird dann gespeichert. Anschließend wählst Du einen Container, entweder Amazon ECS oder Amazon EKS, und weist Deiner Anwendung Ressourcen zu.

Danach ist es erforderlich einen Cluster zu erstellen, um alle zugewiesenen Ressourcen zu gruppieren. In diesem Fall wählst Du den Starttyp von AWS Fargate. Jetzt wird AWS Fargate alle Deine Container starten und ausführen. Es verwaltet die gesamte zugrunde liegende Infrastruktur und Cluster für Dich. Es skaliert auch nahtlos Deine Anwendungsanforderungen, ohne dass Du Dich darum kümmern musst.

Eigenschaften und Besonderheiten von AWS Fargate

Jeder Entwickler kennt die Vorteile von Docker und Kubernet, aber auch die Probleme bei der Bereitstellung der Produkte. Amazon hat diese Herausforderungen erkannt und den Fargate-Service vorgestellt, bei dem sich Entwickler keine Gedanken über Container machen müssen. Ein Entwickler definiert einfach die Parameter für den Container und Fargate kümmert sich um alles Weitere. Zudem besitzt Fargate noch folgende Eigenschaften und Besonderheiten:

Weniger Komplexität

Als Entwickler musst Du Dir keine darüber Gedanken machen, wo der Container bereitgestellt, verwaltet oder skaliert wird. Stattdessen kannst Du Dich darauf konzentrieren, die richtigen Parameter für Deinen Container (zum Beispiel Computing, Speicher und Netzwerk) für eine erfolgreiche Bereitstellung zu definieren.

Einfache Skalierung

Mit Fargate ist es einfach, Server zu skalieren. Du musst Dich nicht um die Bereitstellung von Rechenressourcen für Container-Apps kümmern. Sobald Du die Anwendungsanforderungen wie CPU-Auslastung oder Arbeitsspeicher usw. definiert hast, skaliert AWS Fargate die Anforderungen.

Erhöhte Sicherheit

Aufgrund ihrer Komplexität weisen Amazon ECS und EKS einige Sicherheitsbedenken auf. Mit Fargate ist die Sicherheit der IT-Infrastruktur jedoch nicht Dein Problem. Stattdessen wird die Sicherheit im Container selbst eingebettet.

Niedrigere Kosten

Fargate leistet gute Arbeit bei der Aufgabenplanung und erleichtert das Starten und Stoppen von Containern zu einem bestimmten Zeitpunkt.

Nachteil: Weniger Anpassung

Ein Nachteil von AWS Fargate ist, dass durch die Anpassungsoptionen die Benutzerfreundlichkeit etwas leidet. Daher eignet sich Fargate nicht für Benutzer, die eine bessere Kontrolle über ihre Container benötigen. Diese Benutzer haben möglicherweise spezielle Anforderungen an Governance, Risikomanagement und Compliance, die eine genaue Kontrolle über ihre IT-Infrastruktur erfordern.

EC2 oder AWS Fargate? Was sind die Unterschiede?

Es gibt zwei Hauptmodelle für die Ausführung Deiner Container unter AWS Fargate:

  • EC2 (Bereitstellen und Verwalten eines eigenen Clusters von EC2-Instanzen zum Ausführen der Container)
  • AWS Fargate (Container direkt ausführen, ohne EC2-Instanzen)

Beides sind zuverlässige Möglichkeiten, um Container skalierbar und zuverlässig zu betreiben. Welche Du davon auswählst, hängt in erster Linie von den Optimierungs-Faktoren ab.

Bei AWS Fargate basiert die Abrechnung darauf, wie viele CPU-Kerne und Gigabyte Arbeitsspeicher die Aufgabe pro Sekunde benötigt. Du zahlst immer nur für das, was Deine Anwendung benötigt und nicht für ungenutzte EC2-Kapazität.

Wie kann ich AWS Fargate beim Entwickeln nutzen?

Um mit Fargate beginnen zu können, benötigst Du ein gültiges AWS-Konto. Dazu kannst Du Dich unter der folgenden URL anmelden:
https://portal.aws.amazon.com/billing/signup#/start

Sobald Du ein Konto erstellt hast, kannst Du eine Region auswählen (zum Beispiel EU Frankfurt) und Fargate nutzen. AWS Fargate wird jedoch nur langsam in den Cloud-Rechenzentren von Amazon eingeführt und ist noch nicht für weltweit alle Regionen verfügbar.

Fazit zu AWS Fargate

Obwohl AWS Fargate eine noch recht neue Technik ist, hat die Software auf den Technologie-Plattformen ein größtenteils positives Feedback erhalten. Viele Benutzer loben die Benutzerfreundlichkeit von Fargate und die Einfachheit beim Bereitstellen und Warten von Containern. Allerdings sind für die Nutzung Kenntnisse der Amazon EC2-Dienste erforderlich. Im Vergleich zu anderen gleichartigen Diensten ist Fargate teurer und nicht unbedingt für die Bedürfnisse von Startups geeignet.

Rückmeldungen