Amazon Fargate: Vor- und Nachteile

Amazon Web Services (AWS) bietet seit längerem EC2 Server an. Neuerdingt können Dockercontainer ohne Server über Fargate deployed werden. Dies bietet viele Vorteile, leider aber auch 2 grosse Nachteile.

Vorteil von Fargate

Weniger Aufwand / Kein OS Wissen nötig

Docker ist eine Virtualisierungslösung. Doch um Docker Container zu betreiben, muss Docker auf einem Server installiert werden. Der Unterhalt des Server-Betriebssystem erfordert nicht nur Zeit, sondern auch Wissen. Genau da setzt Fargate an, Fargate bietet deine Dockerumgebung, so Amazon sich um das Betriebsystem kümmert, so dass man die Container direkt laufen lassen kann.

Skalierbarkeit

Da man sich nicht ums OS kümmern muss, kann man einfach mehr Dockercontainer starten und damit skalieren auch direkt die Ressourcen die zur Verfügung stehen. Container können auch automatisch skaliert werden, ohne dass man das OS neu aufsetzen muss, oder mehr Ressourcen zuweisen muss.

Last kann so auf mehrere Container verteilt werden. Die einzelnen Container teilen sich nicht die identischen Ressourcen.

Nachteile von Fargate

Keine Mounts vom Hostlaufwerke

Da der unterliegende Server bei Fargate von Amazon gemanagt wird, hat man keinen Zugriff auf Mount. Daten auf mehreren Docker-Containern zur Verfügung zu stellen ist zwar möglich, aber nur bis maximal 2 GB und dieser Speicherplatz ist nicht persistent. Bei einem Neustart werden alle Daten gelöscht und können beim Setup des Containers auch nicht direkt vorinstalliert werden.

Damit ist es sehr kompliziert, dass Dateien an mehreren Containern zur Verfügung stehen.

Bei einem Beispiel von Nginx, PHP-FPM und Certbot:

Nginx muss statische Dateien lesen, die ggf. über PHP hochgeladen werden.  Certbot muss die ZErtifikate wiederum an Nginx zur Verfügung stellen.

Komplizierte Anbindung von statischer IP

Fargate gibt automatisch Public IP an den neuen Fargate Task. Elastic IP sind statisch und ändern sich nie. Genial. Nur leider unterstützt Fargate keine Elastic IP. Per Lamda Script kann man die zugewiesene Public IP ausgelesen werden, danach muss der DNS Eintrag aktualisiert werden über die Route 53. Dies ist zwar möglich, aber verursacht weitere Kosten. Neben den Kosten für das Lamda Script, muss der DNS regelmässig aktualisiert werden, etwas, was mit niedriger Leasezeit möglich ist, aber ich nicht gerne tue für eine Website.

Lösung

Nein, es gibt keine Lösung. Fargate bietet diverse Vorteile, welche ich beim schnellen , unkomplizierten Setup von Entwicklungsumgebungen sehe, wo die Puplic IP keine grosse Rolle spielt.

Für Webseiten oder andere produktive Einsätze wo die öffentliche IP Adresse wichtig ist, sollte weiterhin ein EC2 Instanz aufgesetzt werden und darauf die Dockercontainer betrieben werden.