Neue Cloud-Technologie von Amazon

AWS Fargate: Container in der Wolke – ein Erfolgsmodell

Werner Vogels

© Shutterstock / Dmitrydesign

Container ausführen, ohne Server oder Cluster zu verwalten? Anwendungen nahtlos skalieren? Amazon verspricht mit der neuen Cloud-Technologie AWS Fargate die Freiheit, sich um nichts anderes als die Container kümmern zu müssen. Amazon CTO Werner Vogels stellt in diesem Artikel das neue Projekt für JAXenter vor.

AWS Fargate – Container in der Wolke

Ideen und Technologien, die unseren Alltag positiv beeinflussen, sind selten völlig neu. Oft wurde einfach nur ein bereits bestehendes Konzept mit einer neuen Herangehensweise, einer verbesserten Technologie oder neuen Fähigkeiten verknüpft – und zwar auf eine Art und Weise, die zuvor nur noch nicht erfolgreich probiert wurde.

Der Siegeszug der Container-Technologie in den vergangenen vier Jahren ist das Ergebnis einer Verschmelzung alter Technologie (Container) mit einer neuen Toolchain und einem neuen Workflow (zum Beispiel Docker) sowie der Cloud. In unserer Branche sind vier Jahre eine lange Zeit. Allerdings stehen wir mit Blick auf die Möglichkeiten erst am Anfang. Wir werden sehen, wie durch die Kombination aus Code Packaging, gut gestalteten Workflows und der Cloud die Entwickler neue Anwendungen schneller umsetzen und Innovationen erschaffen.

Die Rolle von Containern und Clouds

Container lösen ein grundlegendes Code-Portabilitätsproblem und ermöglichen neue Infrastrukturmuster in der Cloud. Mit Containern als konsistenter, unveränderlicher Deployment-Einheit können Anwender von der Komplexität der Konfiguration ihrer Server und Deployment-Pipelines abstrahieren, und müssen diese nicht immer wieder anpassen, sobald sie ihren Code ändern oder ihre Anwendung an einem anderen Ort ausführen möchten. Aber Container sind auch eine weitere Abstraktionsebene zwischen dem Code und der Instanz, auf der dieser läuft. Sie sind ein wichtiger, aber inkrementeller Schritt auf dem Weg, einfach nur Code schreiben zu können und ihn an der richtigen Stelle laufen zu lassen – in der richtigen Skalierung, mit passenden Verbindungen zu anderen Code-Bits und den entsprechenden Sicherheits- und Zugriffskontrollen.

Die Lösung dieser komplexen Probleme bei der Bereitstellung, Planung und Verbindung von Containern in verschiedenen Umgebungen gab uns Werkzeuge für das Container-Management an die Hand. Die Container-Orchestrierung schien schon immer sehr wenig zum Konzept „Cloud Native“ zu passen. Denn die Verwaltung eines großen Server-Clusters und die Planung, wie Container darauf verteilt werden – all das mit Hilfe einer komplexen, verteilten Konfigurations- und Zustandsdatenbank – steht im Widerspruch zur Prämisse der Cloud. Kunden entscheiden sich schließlich für die Cloud, um nur für tatsächlich genutzte Kapazitäten zu zahlen, statt im Vorfeld darüber spekulieren zu müssen. Sie erhalten operative Kontrolle ohne operative Belastung, können lose gekoppelte Dienste so betreiben, dass sie Ausfälle vermeiden oder zumindest die Auswirkung von Fehlern begrenzen können und alles, was sie zum Ausführen ihres Codes benötigen, bekommen sie als „self service“.

Container-Orchestrierung ohne Server- oder Clusterverwaltung

Entwickler sollten in der Lage sein, ihren Code zu schreiben und ausführen zu lassen, ohne sich um die Konfiguration komplexer Verwaltungstools kümmern zu müssen, ob Open Source oder nicht. Das ist die Vision hinter AWS Fargate. Damit müssen Entwickler keine Steuerungsebene etablieren, den richtigen Instanztyp auswählen oder alle anderen Komponenten ihres Anwendungs-Stacks wie Netzwerk, Skalierung, Diensterkennung, Lastausgleich, Sicherheitsgruppen, Berechtigungen oder die sichere Speicherung von Zugangsdaten konfigurieren. Der Anwender erstellt einfach sein Container-Image, legt fest, wie und wo es laufen soll, und bezahlt für die benötigten Ressourcen. Fargate ist nahtlos mit Amazon VPC, Auto Scaling, Elastic Load Balancing, IAM-Rollen und Secrets Management integriert. Wir haben uns die Zeit genommen, Fargate so zu gestalten, dass wir ein SLA von 99,99 Prozent anbieten und auch Standards wie PCI, SOC, ISO und HIPAA erfüllen können.

Mit AWS Fargate können Anwender Ressourcen für ihre Container mit einer viel feineren Granularität zur Verfügung stellen, als dies mit EC2-Instanzen möglich wäre. Nutzer von AWS Fargate können genau die Menge an CPUs und den Speicher auswählen, die ihr Code benötigt, und zahlen nur für die Anzahl der von ihnen ausgeführten Container. Außerdem ist es nicht länger nötig, diejenige Kapazität abzuschätzen, mit der auch Lastspitzen abgefangen werden können. So ist es möglich, das volle Potenzial der Skalierbarkeit zu nutzen und viele operative Mühen mit Hilfe der Cloud zu verringern.

Das mag bedeuten, dass zumindest auf dem Papier native Cloud-Technologien wie Fargate teurer erscheinen als herkömmliche VM-Infrastrukturen. Aber mit Blick auf die vollen Kosten für den Betrieb einer Anwendung laufen die meisten Anwendungen mit Fargate günstiger, da nur die wirklich benötigten Ressourcen bezahlt werden müssen. Kunden, die Fargate einsetzen, sehen vor allem große Einsparungen bei der Anzahl an Personalstunden, die für einen reibungslosen Betrieb ihrer Anwendungen aufgewendet werden müssen.

AWS Fargate verbindet Container-Technologie und Serverless

Das gesamte Ökosystem der Container-Orchestrierungslösungen entstand aus der Not heraus: weil es keine Möglichkeit gab, Container wirklich „cloud native“ zu betreiben. Ob Anwender nun Kubernetes, Mesos, Rancher, Nomad, ECS oder ein anderes System einsetzen, spielt keine Rolle mehr – mit Fargate gibt es nichts mehr zu orchestrieren. Anwender von AWS Fargate müssen sich einzig um den Aufbau der Anwendungen selbst kümmern. Damit werden Container endlich Cloud Native.

Das nächste Innovationsfeld – nachdem die Infrastrukturfrage mit Hilfe der Cloud gelöst wurde – wird das Anwendungs- und Servicemanagement sein. Wie können Anwender die Mengen an verschiedenen Containern miteinander verbinden, die unabhängige Dienste ausführen und dabei den Überblick behalten? Wie können sie die Sicherheit der einzelnen Dienste gewährleisten sowie den Netzwerkverkehr verwalten? Wie finden sich unabhängige Dienste gegenseitig? Wie lässt sich der Zugriff auf gemeinsame Datenspeicher steuern? Wie lassen sich Services in Anwendungen definieren und gruppieren? Cloud Native bedeutet für den Nutzer, soviel Kontrolle zu bekommen, wie er benötigt.

AWS Fargate integriert sich bereits nahtlos in Amazon ECS. Wie sie es von Amazon ECS gewohnt sind, definieren Entwickler ihre Anwendung mit Hilfe von Task Definitions, spezifizieren die CPU und den benötigten Speicher, definieren die Netzwerk- und IAM-Richtlinien, die jeder Container benötigt, und laden alles auf Amazon ECS hoch. Nachdem alles eingerichtet ist, startet und verwaltet AWS Fargate die Container automatisch. Im Laufe des Jahres 2018 wird AWS Fargate auch noch Amazon EKS, den Elastic Kubernetes Service, unterstützen.

Fazit

Es gilt abzuwarten, wie sich das Container-Ökosystem in den kommenden Jahren weiterentwickelt. Dabei werden sicher wesentliche Impulse aus der Community kommen. Wenn Container mehr „cloud native“ werden führt das vor allem dazu, dass Entwickler weniger Arbeit in Konfiguration und Management stecken müssen und dennoch von einem mehr an Kontrolle profitieren.

Geschrieben von
Werner Vogels
Werner Vogels
Werner Vogels ist Chief Technology Officer (CTO) und Vizepräsident von Amazon.com. Werner bloggt unter https://www.allthingsdistributed.com.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: