Kolumne: Stropek as a Service

Kleiner Schritt, große Wirkung – Ein kleines Feature in Azure ändert die Spielregeln in der Cloud
Keine Kommentare

Anbieter wie Microsoft betonen seit Jahren, dass man im Gegensatz zum eigenen Rechenzentrum in ihrer Cloud je nach Ressourcenbedarf skalieren kann. Sie verwenden oft das Stromnetz als Analogie: Wenn ich meine Wohnung saugen möchte, bekomme ich über die Steckdose kurzfristig die notwendige Energie für meinen Staubsauger. Ich zahle nur für genau das, was ich tatsächlich verbrauche und benötige keinen eigenen Generator.

In meinen Workshops mit Kunden weise ich oft darauf hin, dass der Vergleich von Cloud-Computing mit dem Stromnetz hinkt. Das Abrechnungsmodell in der Cloud kann man eher mit dem eines Hotels vergleichen:

  • Die kleinste Einheit, die man buchen kann, ist ein Zimmer (=Server).
  • Die Abrechnung erfolgt getaktet (pro Minute oder Stunde, je nach Service).
  • Wenn man etwas reserviert, zahlt man, egal ob man es tatsächlich nutzt oder nicht.

Seit Ende Juli ist meine Erklärung nicht mehr ganz korrekt. Die Spielregeln haben sich geändert, und die zugrunde liegende Technologie dafür sind – wenig überraschend – Container.

Warum Container sexy sind

Container sind nicht nur in der Microsoft-Community ein heißes Thema. Mich hat das Containerfieber vor ca. zwei Jahren gepackt, und seit damals versuche ich durch Vorträge, Workshops und Artikel, Entwicklungsteams im Microsoft-Umfeld damit anzustecken. Was ist das Tolle an Containern, insbesondere Docker-Containern?

  • Docker ist plattformunabhängig, Open Source und steht sowohl als Community Edition (kostenlos) als auch als Enterprise Edition (kostenpflichtig) mit Zusatzfunktionen für größere Firmen zur Verfügung.
  • Das Erstellen, Starten und Stoppen von Containern geht sehr schnell. Es ist eine Frage von wenigen Sekunden, nicht Minuten wie bei virtuellen Maschinen.
  • Es gibt eine große aktive Community, die tausende Basis-Images (Linux und Windows) im Docker Hub Auf ihnen kann man aufbauen und Images für die eigenen Anwendungen erstellen. Man erspart sich das Installieren und Aktualisieren von Betriebssystem und Basisdiensten (z. B. .NET Runtime, Node.js, PHP etc.), kann aber trotzdem die Images an seine individuellen Anforderungen anpassen. Insofern kombinieren Docker Images plus Docker Hub das Beste aus IaaS und PaaS.
  • Über private oder öffentliche Registries lässt sich die eigene Software einfach im Rechenzentrum, in der Cloud oder an die Kunden verteilen.

Container haben hatten einen Haken

Ich habe in dieser Kolumne schon einmal darauf hingewiesen, dass Container allein noch keine Cloud-Strategie sind. Ohne eine elastisch skalierende, sichere und hochverfügbare Clusterinfrastruktur darunter sind Container nur für Test- und Entwicklungsumgebungen und nicht für die Produktion brauchbar. Wer solche Cluster will, muss auf einen Container-Orchestrator wie Kubernetes zurückgreifen und ihn in einer ausgewachsenen Private- oder Public-Cloud betreiben. Für kleine bis mittlere Teams, zu denen auch meine eigene Firma zählt, ist das eine große Hürde. Wir wollen keine Ressourcen dafür abstellen, IaaS-Infrastruktur und darauf laufende Orchestrators zu installieren und zu warten. Was wir brauchen ist Container as a Service.

Auftritt: Azure Container Instances

Ende Juli hat Microsoft einen neuen Service als Preview in Azure veröffentlicht, der die zuvor angesprochene Lücke schließt: Azure Container Instances (ACI). ACI unterscheidet sich fundamental von den bisherigen Containerumgebungen, die die großen Cloudprovider bisher angeboten haben:

  • Es ist ein PaaS-Service. Man braucht sich um die zugrunde liegende Infrastruktur nicht zu kümmern.
  • Es ist nicht notwendig, wie beispielsweise bei der Google Container Engine, für ACI Compute-Ressourcen in Azure zu kaufen. Man startet und stoppt Container, wie man sie braucht, und überlässt Microsoft die Verwaltung der Compute-Cluster, die im Hintergrund die Arbeit machen.
  • Wer selbst bereits Kubernetes betreibt, kann ACI zum Beispiel zur Abdeckung von Lastspitzen verwenden. Microsoft bietet für ACI einen Connector an, mit dem Kubernetes Container in ACI anlegen kann. Auch in diesem Szenario muss man sich nicht um die VM-Infrastruktur in Azure kümmern.

Abbildung 1 zeigt, wie einfach es ist, beispielsweise einen nginx-Webserver (Image kommt aus dem Docker Hub) als ACI-Container anzulegen. Im Moment gibt es im Azure-Portal noch kein UI dafür, also greift man am besten auf das im Portal eingebaute Azure CLI zurück. Im gezeigten Beispiel wird als Erstes ein Container in Westeuropa angelegt und dessen IP-Adresse ermittelt (az container create). Als Nächstes werden die Events angezeigt (az container show). Man sieht, dass Deployen und Anlegen nur wenige Sekunden gedauert hat. Am Schluss wird über HTTP auf den laufenden Container zugegriffen.

Abb. 1: Anlegen eines nginx-Webservers als ACI-Container

Abb. 1: Anlegen eines nginx-Webservers als ACI-Container

Tatsächlich variable Kosten

Die aktuelle ACI-Preview lässt inhaltlich noch ein paar Wünsche offen. Ich werde die technischen Details an dieser Stelle jedoch nicht behandeln. Stattdessen möchte ich auf einen Aspekt des neuen Dienstes hinweisen, der aus meiner Sicht ein kleines Erdbeben in Sachen Softwarearchitekturen in der Public-Cloud auslöst: das Preismodell von ACI. Die Kosten von ACI werden beeinfluss durch:

  1. Anzahl an Create Requests
  2. Hauptspeicher in GB-Sekunden
  3. CPU-Cores in Core-Sekunden

Der erste Punkt, Kosten pro Containererstellung, deutet darauf hin, welches Nutzungsmodell Microsoft für ACI angedacht hat. Da die Container so schnell starten und stoppen, rechnet man damit, dass sie kurzlebig sind. Warum teure VMs dauerhaft laufen lassen, wenn man Container just in time erstellen und entfernen kann? Jede Transaktion, die von Haus aus einige Momente dauert, könnte in einen eigenen kurzlebigen Container gepackt werden. Das ist vielleicht nicht für jeden HTTP Request sinnvoll, für größere Aktionen wie das Erstellen eines Reports, Datenimport und -export oder Ausführen eines komplexeren Workflows wäre das aber denkbar. Auch Architekturen, die für jede aktive Benutzersitzung (von Log-in bis Log-out) eigene Container anlegen, wären möglich. Der Vergleich mit dem Hotel ist dann nicht mehr gültig. Die Verrechnung von Cloud-Ressourcen läuft tatsächlich mehr wie Strom: Wenn man keine Ressourcen braucht, bezahlt man nichts.

Die Kosten werden nicht nur durch die Kurzlebigkeit von Containern variabler. Auch die sekundengenaue (!) Verrechnung des verbrauchten Speichers und der CPU-Cores geht in diese Richtung. Es ist nicht mehr notwendig, sich Gedanken über Server- und Clusterdimensionierung zu machen. Man fordert einfach pro Container die notwendige Anzahl an Cores (aktuell zwischen einem und vier Cores pro Container) und die gewünschte Hauptspeichergröße (aktuell zwischen 1 und 3,5 GB pro Container) an und zahlt je Sekunde.

Meiner Erfahrung nach ist das Einsparungspotenzial durch dieses neue Preismodell enorm. Die meisten Cloud-Umgebungen, die ich bei Kunden sehe, sind unterausgelastet. Die meiste Zeit liegen CPU und Hauptspeicher ungenutzt herum und verursachen unnötige Kosten und buchstäblich eine Menge heißer Luft.

BASTA! 2018

Testing in production

mit Nico Orschel (AIT GmbH & Co. KG)

Microservice Collaboration (Part 1 + 2)

mit Sam Newman (Independent Consultant)

Legacy mit Domain-Driven Design verbessern (Teil 1 + 2)

mit Dr. Carola Lilienthal (Workplace Solutions)

 

Zu teuer für 24/7

Wer plant, ACI in gewohnter Weise mit dauerhaft laufenden Containern zu nutzen, sollte vorher den Rechenstift ansetzen. Ein Container mit einem Core und 3,5 GB Hauptspeicher kostet, wenn man ihn dauerhaft ein Monat lang in ACI betreibt, in etwa 120 Euro. Eine entsprechende Linux VM kostet in Azure nur rund 40 Euro. Man sieht, dass das Preismodell von ACI nicht dafür gemacht ist, eine kontinuierlich laufende Basisinfrastruktur kosteneffizient zu betreiben. Wer das braucht, ist weiterhin bei anderen IaaS- und PaaS-Diensten gut aufgehoben. Das ist auch der Grund, warum Microsoft von Anfang an den Connector zu Kubernetes anbietet. Dadurch kann man die Basisressourcen in einem eigenen Kubernetes-Cluster bereitstellen, dessen Leistung auf ein entsprechendes Minimum auslegen und ACI-Container für das Scale-out verwenden.

Ein Königreich für Microservices

Wer noch auf der Suche nach Argumenten für Microservices ist, dem kommt der neue Azure-Service entgegen. Traditionelle monolithische Softwaresysteme tun sich in der Regel sehr schwer, die oben beschriebenen Kostenvorteile zu nutzen. Sie gehen von statischen Serverumgebungen oder sich langsam verändernden Clustern aus. Systemen, die nach dem Microservices-Architekturmuster gebaut sind, fällt die Nutzung kurzlebiger Container für gewisse Aufgaben meistens viel leichter.

Fazit

Microsoft hat mit Azure Container Instances (ACI) eine echte Innovation hervorgebracht. Technisch findet man bei anderen Cloudprovidern ähnliche Lösungen. Der reine PaaS-Ansatz in Verbindung mit dem ganz und gar nutzungsbasierten Preismodell ist neu. Wir Softwarearchitektinnen und -architekten müssen jetzt unsere Hausaufgaben erledigen und darüber nachdenken, wie wir den neuen Service zum Nutzen unserer Kunden und zur Reduktion unserer Cloud-Kosten einsetzen. Außerdem ist es ein erneuter Weckruf für alle Teams, die Container bisher ignoriert haben und meinten, dass diese Technologie keine Vorteile bringt.

Was den produktiven Einsatz von ACI betrifft, rate ich noch ein wenig zu Geduld. Die aktuelle Version eignet sich gut für Prototypen und zur Entwicklung von Machbarkeitsstudien für neue Architekturansätze. Für den Produktionsbetrieb sollte man erstens den Abschluss des Preview-Betriebs abwarten und zweitens genau prüfen, ob die momentan noch etwas limitierten Funktionen bereits ausreichend sind. Mittel- bis langfristig halte ich persönlich aber ACI für Anbieter von SaaS-Lösungen für sehr interessant.

Lesen Sie alle Ausgaben der Kolumne „Stropek as a Service„!
In der Kolumne greift Rainer Stropek spannende Aspekte wie die Finanzierung, den Customer Lifetime Value, aber auch wichtige Themen wie Billing, Kundenbindung durch Qualität oder APIs auf – alles aus der Sicht eines Unternehmers, der seit 20 Jahren in der IT-Branche tätig ist und seit fünf Jahren intensive Erfahrungen mit SaaS gesammelt hat.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -