Cloud & DevOps

Fargate, Cloud Run, Azure Container Apps: Wer rechnet am günstigsten ab?

Amazon, Google und Microsoft vermieten dir dieselbe Sache auf drei Arten. Nicht die Funktionsliste entscheidet deine Rechnung, sondern der Zähler.

Editorial Team / /8 Min. Lesezeit
Ein Entwickler arbeitet am Laptop in einem Serverraum

Zwei Teams können dieselbe kleine Anwendung in der Cloud laufen lassen und am Monatsende Rechnungen bekommen, die sich um das Zehnfache unterscheiden. Gleicher Code, gleiche Besucher, gleiches Ergebnis auf dem Bildschirm. Der Unterschied entsteht durch eine einzige Entscheidung, die die meisten Vergleiche unter einer langen Funktionsliste begraben: Auf welchem Zähler der Cloud-Anbieter deine App laufen lässt.

Amazon, Google und Microsoft verkaufen jeweils eine Variante derselben Bequemlichkeit. Du übergibst deine App verpackt als Container (eine versiegelte Kiste, die dein Programm und alles enthält, was es zum Laufen braucht), und sie betreiben sie für dich, damit du nie selbst einen Server mieten und babysitten musst. Amazons Variante heißt Fargate, die von Google Cloud Run, die von Microsoft Azure Container Apps. Im Prospekt wirken sie fast austauschbar. Auf der Rechnung sind sie es nicht, denn jede zählt in einer anderen Einheit, was du schuldest.

Genau dieser Unterschied im Zählen ist die ganze Geschichte, und es ist der Teil, der Bestand hat. Die Preise verschieben sich jedes Jahr, doch die Art, wie jede Plattform deinen Verbrauch misst, bewegt sich kaum. Passt der Zähler dazu, wie deine App tatsächlich genutzt wird, regelt sich die Rechnung mehr oder weniger von selbst.

Drei Zähler, nicht drei Funktionen

Stell dir vor, du mietest ein Auto. Eine Firma berechnet dir den Tag, ob der Wagen die Einfahrt je verlässt oder nicht. Eine andere rechnet pro Minute ab und stoppt den Zähler in dem Moment, in dem du parkst. Die Autos sind identisch. Der Zähler entscheidet, was du zahlst. Cloud-Plattformen funktionieren genauso.

Fargate rechnet pro Stunde ab. Du sagst Amazon, wie viel Rechenleistung deine App braucht, und Amazon stellt diese Reservierung für jede Stunde in Rechnung, in der die App eingeschaltet ist, ob beschäftigt oder im Leerlauf. Den Zähler kümmert es nicht, ob deine App in dieser Stunde einen Besucher bedient hat oder eine Million. Du zahlst für die Reservierung, nicht für die Arbeit.

Produktseite von AWS Fargate — Serverless-Computing für Container

Cloud Run rechnet pro Sekunde ab und fällt auf null, wenn niemand deine App benutzt. Eine Anfrage kommt herein, die App wacht auf, bedient sie, und du zahlst nur für diese Sekunden. Wenn die App still daliegt, kostet sie dich nichts. Dieses automatische Schrumpfen auf null ist die Eigenschaft, die dir die anderen beiden nicht gratis schenken.

Produktseite von Google Cloud Run — Abrechnung pro Sekunde, Sie zahlen nur, während Ihr Co

Azure Container Apps rechnet pro Ereignis ab. Die Plattform kann im Leerlauf liegen und in dem Moment aufwachen, in dem eine Aufgabe in einer Warteschlange landet, und dann nur abrechnen, solange sie sie abarbeitet. Wie Cloud Run kann auch sie zwischen den Schüben auf null zurückfallen. Sie ist für Arbeit gebaut, die als Warteschlange eintrifft, nicht als Web-Besucher.

Produktseite von Azure Container Apps — moderne Apps und Agents auf serverlosen Containern

Die einzige Frage, die einen Sieger kürt

Die nützliche Frage lautet nicht, welche Plattform abstrakt die beste ist. Sie lautet: Welche Form hat dein Datenverkehr, denn jeder Zähler belohnt eine andere Form.

  • Gleichmäßiger Verkehr, den ganzen Tag beschäftigt: Die Stunden-Reservierung ist am günstigsten, weil es keine Leerlaufzeit zu verschwenden gibt. Das ist Fargates Heimspiel.
  • Stoßweiser Verkehr, die meiste Zeit ruhig mit plötzlichen Schüben: Der Sekunden-Zähler, der auf null fällt, gewinnt, weil du in dem Moment aufhörst zu zahlen, in dem der Ansturm endet. Hier druckt Cloud Run Geld.
  • Arbeit, die als Warteschlange von Aufträgen eintrifft statt als Live-Besucher: Der Ereignis-Zähler gewinnt, weil er von selbst auf die Warteschlange aufwacht, ohne dass du den Auslöser bauen musst. Das ist der Vorteil von Azure Container Apps.

Beachte: Keine dieser Entscheidungen hing an einem Funktionsvergleich. Die Form des Verkehrs und der Zähler haben sie entschieden.

Wie der Unterschied in echtem Geld aussieht

Nimm eine bescheidene App und lass sie durchgehend laufen, vierundzwanzig Stunden am Tag. Auf dem Stunden-Zähler kostet sie einen gleichbleibenden, vorhersehbaren Betrag — ein paar Dutzend Euro im Monat. Auf den Sekunden-Zählern, ohne Leerlauflücken zum Überspringen, summieren sich die Sekunden ungefähr auf denselben Wert. Für eine App, die nie ruht, liegen die drei Zähler im Grunde gleichauf, und der Stunden-Zähler gewinnt bei der Vorhersehbarkeit — was Finanzabteilungen mehr schätzen als eine Ersparnis, die nie auftaucht.

Lass jetzt dieselbe App so laufen, dass sie nur etwa eine von zwanzig Stunden wirklich beschäftigt ist und den Rest der Zeit im Leerlauf. Der Stunden-Zähler berechnet weiterhin die volle Reservierung, weil die App die ganze Zeit eingeschaltet blieb. Die Sekunden-Zähler, die auf null fallen, rechnen nur den aktiven Anteil ab — ungefähr ein Zehntel der Kosten und manchmal gar nichts, sobald man das kostenlose Monatskontingent jeder Plattform mitzählt. Dieselbe App, derselbe Code, ein Größenordnungs-Unterschied, entschieden allein dadurch, welcher Zähler auf den Verkehr traf. Diese eine Umkehrung — nicht Grafikleistung oder Startgeschwindigkeit — ist der Ort, an dem das Geld tatsächlich liegt. Dieselbe Gewohnheit, auf die Kosten pro Nutzung zu achten, wendet unser Leitfaden zum Senken der AWS-Lambda-Kosten eine Ebene tiefer an.

Welches wählen — auf einen Blick Welche du wählen solltest, auf einen Blick

Der Haken: Den Zähler wählst du selten frei

Theoretisch lassen alle drei denselben Container laufen, du könntest deine App also zwischen ihnen verschieben wie einen Mietwagen gegen einen anderen tauschen. In der Praxis tust du das fast nie, und genau das ist der Teil, den man vor der Wahl verstehen sollte.

Der günstige Zähler ist fest mit dem Rest seiner Cloud verschraubt. Fargates Wert zeigt sich erst, wenn deine App bereits zwischen Amazons anderen Diensten wohnt; der von Cloud Run erst, wenn sie zwischen Googles wohnt; der von Container Apps erst, wenn sie zwischen Microsofts wohnt. Wenn dein Unternehmen seine Daten und Werkzeuge bei Amazon hält, bedeutet ein einzelnes Stück drüben bei Google, dafür zu zahlen, dass Daten zwischen zwei Clouds hin- und hergeschaufelt werden — und die Verbindungen neu zu verdrahten, die die günstige Option überhaupt erst angenehm gemacht haben. Die ehrliche Fassung der Entscheidung lautet also: Wähle den Zähler, der zu deinem Verkehr passt, innerhalb der Cloud, in der du ohnehin schon wohnst. Bring diese beiden zur Deckung, und die Wahl trifft sich von selbst.

Welche, in je einer Zeile

Wähle Fargate für eine App, die innerhalb von Amazons Cloud den ganzen Tag durchgehend läuft. Sie zahlt ihre Stunden-Reservierung einmal, die Rechnung ist auf den Cent vorhersehbar, und sie fügt sich neben den Rest deines Amazon-Setups ein, ohne neue Verkabelung.

Wähle Cloud Run für eine App, die innerhalb von Googles Cloud ruhig daliegt und in Schüben aufwacht. Der Fall-auf-null-Zähler ist automatisch, ein kleiner Dienst läuft für den Preis eines Kaffees oder gratis, und eine App, die ein Zwanzigstel des Tages beschäftigt ist, zahlt für ein Zwanzigstel des Tages.

Wähle Azure Container Apps für Arbeit, die innerhalb von Microsofts Cloud als Warteschlange von Aufträgen eintrifft. Die Plattform wacht von selbst auf die Warteschlange auf — was dir die zusätzliche Verdrahtung erspart, die dich die anderen beiden für dasselbe Verhalten bauen lassen.

Die Entscheidung ging nie darum, welche Plattform objektiv die beste ist. Es geht darum, welcher Abrechnungs-Zähler zu deinem Verkehr passt, innerhalb der Cloud, die du ohnehin betreibst. Kläre diese beiden Fragen, und alles andere ist Detail.

Häufig gestellte Fragen

Ist Cloud Run günstiger als Fargate?

Das hängt vollständig von der Form des Verkehrs ab. Für eine App, die nur einen Teil des Tages beschäftigt ist, ist Cloud Run oft rund zehnmal günstiger, weil es aufhört abzurechnen, sobald niemand die App benutzt, während Fargate weiterhin seine Reservierung berechnet. Für eine App, die den ganzen Tag durchgehend läuft, liegen beide ungefähr gleichauf, und Fargates vorhersehbare Stunden-Rechnung gewinnt häufig. Es gibt keine einzelne günstigere Plattform, nur einen günstigeren Zähler für ein bestimmtes Muster.

Hört Fargate je auf abzurechnen, während meine App im Leerlauf ist?

Nicht von selbst. Hast du eine Fargate-App einmal eingeschaltet, bleibt sie an und rechnet weiter ab, bis du sie ausschaltest — auch um drei Uhr morgens ohne einen einzigen Besucher. Du kannst dir eine automatische Abschaltung selbst bauen, aber das ist Verkabelung, die du selbst zusammenstecken musst. Cloud Run und Azure Container Apps fallen automatisch auf null, und das ist der Kerngrund, warum sie bei ruhigem, stoßweisem Verkehr gewinnen.

Welche ist die beste für Aufträge, die in einer Warteschlange eintreffen?

Azure Container Apps, wenn du ohnehin schon in Microsofts Cloud bist. Die Plattform kann in dem Moment aufwachen, in dem ein Auftrag in der Warteschlange landet, und wieder einschlafen, wenn die Warteschlange leer ist — ohne dass du den Auslöser baust. Fargate und Cloud Run können Ähnliches leisten, aber du musst das Aufwachen-auf-Warteschlange selbst verdrahten, statt es fertig geliefert zu bekommen.

Kann ich vermeiden, an eine einzige Cloud gebunden zu sein?

Die App selbst ist portabel, da alle drei denselben Standard-Container laufen lassen — das Programm ist also nicht die Falle. Die Bindung steckt in der umgebenden Verkabelung, den Verbindungen zu den eigenen Datenspeichern, der Identitätsverwaltung und den Ereignisquellen jeder Cloud. Lass eine der drei außerhalb ihrer Heimat-Cloud laufen, und du zahlst dafür, Daten über die Grenze zu verschieben, und verlierst die Integrationen, die die Wahl gerechtfertigt haben. Die Portabilität der Kiste ist echt; die Portabilität der Ersparnis ist es nicht.

Was ist ein „Cold Start”, und spielt er eine Rolle?

Ein Cold Start ist die kurze Wartezeit, während eine App, die auf null gefallen war, nach einer ruhigen Phase wieder aufwacht, um die erste Anfrage zu bedienen. Cloud Run wacht am schnellsten auf, oft in unter einer Sekunde; Azure Container Apps braucht ein paar Sekunden; Fargate ist am langsamsten, mehrere zehn Sekunden, weil es jedes Mal eine frische, abgeschottete Maschine aufbaut. Für die meisten Apps ist das unsichtbar. Es spielt nur bei plötzlichen, seltenen Schüben eine Rolle, bei denen der allererste Besucher nicht warten gelassen werden darf — und dort ist Cloud Runs schnelles Aufwachen der Grund, es zu bevorzugen.


Foto: Christina Morillo / Pexels

#cloud#containers#serverless#finops#aws