AWS Spot-Instanzen, was ist neu?

Keine Kommentare

Bei der re:Invent 2017 wurden ein paar interessante Neuerungen zum Thema Spot-Instanzen vorgestellt. Doch bevor wir uns das genauer ansehen, wollen wir nochmal kurz zusammenfassen, was Spot-Instanzen sind und was man damit machen kann.

Ein oft genannter Vorteil der Cloud für den Kunden ist große Flexibilität in der Kapazitätsplanung. Man ist nicht mehr an monate- oder jahrelange Verträge gebunden sondern kann je nach Bedarf innerhalb von Sekunden zusätzliche Server hoch- oder nicht länger benötigte Kapazitäten herunterfahren. Wenn man im Zeitalter von „Serverless“ auf Managed Services wie Lambda zurückgreift, nimmt einem AWS auch noch diesen Teil ab, stellt die benötigten Kapazitäten komplett automatisch bereit und berechnet nur das, was tatsächlich benutzt wurde. Selbstverständlich verschwindet das Problem der Kapazitätsplanung nicht, sondern es verlagert sich auf die Cloud-Anbieter, die nun einen Weg finden müssen, Leerkapazitäten zu reduzieren ohne in die Situation zu kommen, Nachfrage wegen Engpässen nicht mehr bedienen zu können.

Um diesen Spagat zu meistern hat AWS schon vor vielen Jahren den Spotmarkt für EC2-Instanzen eingeführt. Als Kunde hat man die Möglichkeit, auf ungenutze Kapazitäten zu bieten und kann so EC2-Instanzen zu drastisch reduzierten Preisen (bis zu 90% unter den On-Demand-Preisen) nutzen. Im Gegenzug läuft man aber Gefahr, die Instanz kurzfristig zu verlieren (mit einer Vorwarnzeit von zwei Minuten), wenn der Marktpreis das eigene Gebot übersteigt. Somit eignen sie sich besonders für Anwendungsfälle, in denen Rechenkapazität nicht dauerhaft und nicht zu bestimmten Zeiten verfügbar sein muss, beispielsweise Batchverarbeitung oder Build-Slaves.

Dabei war es ein Balanceakt, die Spot-Instanzen nicht zu attraktiv zu machen und die regulären EC2-Instanzen so zu kannibalisieren und trotzdem für ausreichende Nutzung zu sorgen. Da der Fokus nun immer stärker auf die Serverless-Produkte wandert, verschiebt sich dieses Gleichgewicht, so dass AWS anscheinend die Notwendigkeit gesehen hat, die Attraktivität der Spot-Instanzen zu steigern. Schon im Oktober wurde eine neue Taktung für EC2 eingeführt, so dass man angebrochene Stunden nicht mehr voll bezahlt, sondern auf Grundlage einer sekundengenauen Abrechnung (mit Ausnahme der ersten Minute). Ein weiteres Feature, das in diesem Jahr eingeführt wurde, ist die Möglichkeit, Spot-Instanzen bei Unterschreiten des Marktpreises nicht zu zerstören, sondern anzuhalten.

Winterschlaf für Spot-Instanzen

Das interessanteste neue Feature ist wahrscheinlich die Option, die Instanz in den Hibernate-Modus zu versetzen, wenn der Marktpreis zu hoch wird. Der Speicherinhalt wird dabei auf das Root Volume geschrieben, so dass die Instanz die Arbeit an der Stelle wieder aufnehmen kann, sobald der Marktpreis wieder unter den Gebotspreis gefallen ist. Natürlich gibt es ein paar Voraussetzungen, damit das klappt:

  • ein EBS Root Volume muss verwendet werden
  • das Volume muss groß genug sein, um den Speicherinhalt abzubilden
  • Instanzfamilie muss C3, C4, M4, R3 oder R4 mit weniger als 122GB RAM sein
  • ein geeigneter Hibernation-Agent muss auf der Instanz installiert und aktiviert sein

Da der Speicherinhalt auf dem EBS Volume abgelegt wird, sollte hier natürlich ein verschlüsseltes Volume verwendet werden. Nach dem Neustart der Instanz sind EBS Volumes, Speicherinhalt und private IP unverändert vorhanden. Wenn dies auch für öffentliche IPs gelten soll, müssen Elastic IPs verwendet werden.

Eine einfachere API

Ein Hindernis für den Einsatz von Spot-Instanzen war der Umstand, dass die API (und damit auch die AWS CLI sowie Web Console) sich deutlich von der für normale Instanzen unterschied. Ergebnis des Aufrufs war nicht die Instanz an sich, sondern ein sogenannter Spot Instance Request. Die weitere Verarbeitung insbesondere beim Einsatz automatisierter Tools (z.B. Terraform) gestaltete sich dadurch deutlich umständlicher. Hier hat AWS Abhilfe geschaffen, in dem die run-instance API überarbeitet wurde, so dass nun eine Konfigurationsoption ausreicht, um statt einer normalen Instanz eine Spot-Instanz zu starten. Um bereits entwickelte Infrastrukturen nicht zu beeinträchtigen, bleibt die bestehende API selbstverständlich erhalten.

Sanftere Preisfluktuationen

Ein weiterer Kritikpunkt war die starke Preisfluktuation auf dem Spotmarkt mit extremen aber kurzlebigen Ausschlägen. Dadurch läuft man Gefahr, seine Instanzen zu verlieren, obwohl der Preis nicht dauerhaft über dem eigenen Gebot liegt. Um diesen Nachteil ein wenig abzumildern, wird der Berechnung des Spotpreises in Zukunft ein längerer Zeitraum zugrunde gelegt. Dadurch sollen Preisänderungen geglättet werden und Spitzen nicht mehr so drastisch ausfallen, ohne die durchschnittlichen Preise zu beeinträchtigen.

Mit diesen Neuerungen hat AWS einiges unternommen, um Spot-Instanzen auch in einer „serverlosen Welt“ interessant zu machen. Man darf gespannt sein, wie sich das auf die Nachfrage und damit den Spotpreis auswirkt.

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.