Corona: 11 Tipps um AWS kosten zu senken

Übersicht:

COVID-19 stellt zurzeit viele Unternehmen vor finanzielle herausforderungen. Ein bis vor kurzem noch gut funktionierendes Business kommt schlagartig in Schwierigkeiten weil Kunden wegbleiben und Neukunden-Akquise schwierig ist.

AWS Kosten senken

Viele Unternehmen müssen kurzfristig und effektiv kosten senken. Bei vielen StartUps oder Online-Shops machen die AWS Kosten oft einen großen Anteil aus.

Mit über 7 Jahren Erfahrung in AWS möchte Ich hier ein paar “Quick Tips” präsentieren um kurzfristig AWS Kosten effektiv zu senken:

Hosting muss am Business-Modell funktionieren

Der häufigsten Fehler und Grund für AWS Kosten-Ineffizienz Ist die tatsache das die Architektur nicht “am Business” skaliert. Doch was heißt das?

Wenn das revenue-modell auf aktiven Usern basiert müssen die Hosting-Kosten auch an diesen skalieren. Sprich die doppelte anzahl User darf im schlimmsten Fall die kosten verdoppeln wenn die hälfte der User die Kosten halbiert. Klingt simpel? Wird aber falsch gemacht!

Hier kann man oft schon als erstes ansetzen und schauen warum die die Kosten trotz weniger Umsatz / Traffic nicht gesunken sind und was man dagegen machen kann.

Skalierung nutzen

Häufig sehe ich Setups in AWS bei denen einfach nur EC2 Instanzen verwendet werden wie man es bei “klassischen” dedizierten Hostern mit Servern machen würde. Damit wirft man natürlich das gesamte “Potenzial” eines Cloud-Provider gleich in die Tonne.

Viele AWS Services sind mit überschaubarem Aufwand Out-of-the-Box skalierbar. Nur wenn ich diese Features nutze habe Ich eine nachhaltige, skalierbare und kosteneffektive Infrastruktur.

Always touch a running System

Oft besteht eine Angst davor bestehende Systeme anzufassen weil “es könnte ja was Kaputt gehen”. Wenn das der Fall ist muss diese Angst transparent gemacht werden um zu überlegt werden wie dieses gelöst werden kann. Moderne Setups wie IaC sind gut geeignet solche Probleme langfristig in den Griff zu bekommen. Infrastruktur muss wie Code in der Lage sein abgerissen und hochgefahren zu werden ohne zu zittern.

Wenn diese Grundsätze befolgt werden kann man sich die einzelnen Komponenten ansehen und analysieren wie man diese Kosten-Effizienter gestalten kann. Dabei muss immer beachtet werden welche Auswirkungen es ggf. auf Performance & Stabilität haben könnte.

AWS S3: Kosten mit Speicherklassen optimieren

Der AWS Simple Storage Service (S3) ist sicherlich einer der bekanntesten AWS Services zum speichern von Dateien. Was vielen nicht bekannt ist:

S3 verfügt über verschiedene “Storage Klassen” die sich vor allem in Zugriffszeiten, Latency und Datensicherheit unterscheiden.

Wenn auf Daten häufig zugegriffen wird und Latenz wichtig ist bleibt man in der Regel bei dem Default, der “Standard Storage Class”. Für folgende Szenarien gibt es allerdings die Möglichkeit Kosten zu sparen:

Übersicht der S3 Speicherklassen und Preise

Bei Backups bis zu 93% Prozent sparen mit AWS S3 Glacier

Glacier ist die Storage Klasse für Daten auf die man sehr selten zugreift und bereit ist auch bis zu 12 Stunden warten zu können, wie beispielsweise Backups. Damit lassen sich die S3 Kosten um bis zu 93% im Vergleich zur S3 Standard Klasse senken.

Automatische optimierung mit AWS S3 Intelligent-Tiering

Amazon S3 Intelligent-Tiering wählt automatisch die beste Speicherklasse anhand der Zugriffsmuster aus. Dies ermöglicht eine automatische optimierung der Kosten ohne zusätzlichen Aufwand in der Entwicklung.

Wichtig ist hier sicherzustellen das keine außergewöhnlichen Zugriffsmuster von AWS falsch interpretiert werden können (sehr seltener zugriff aber dann ist hohe Latenz wichtig) Mehr Informationen zu Amazon S3 Intelligent-Tiering findest du hier

AWS EC2: 90% Rabatt mit “Spot-Instances” für Development & Testing

Oft basiert die stabilität der Anwedung auf der “Bedingung” das die Infrastruktur stabil und immer verfügbar ist. Und dies (Hochverfügbarkeit) nicht auf Softwareebene sichergestellt werden muss.

Dies ist auch oft in kleineren Unternehmen, StartUps usw. der beste weg da Hochverfügbarkeit selbst sicherzustellen meist sehr komplex und teuer ist.

Oft ist diese hohe Verfügbarkeit aber gar nicht für alle Umgebungen nötig. Entwicklungs- und Testsysteme welche oft auch permanent laufen können ggf. für 5-10min ausfallen ohne das es einen großen Einfluss auf die Entwicklung hat.

Wenn dies der Fall ist kann man statt “On-Demand” auf “Amazon EC2-Spot-Instances” wechseln.

Was sind Amazon EC2-Spot-Instances?

Amazon EC2-Spot-Instances sind technisch identisch zu den normalen EC2 Instanzen aber werden statt zu einem Festpreis ($ / Stunde) gegen Gebote vergeben. Man legt einen maximalen Preis fest den man bereit ist zu bezahlen ($ / Stunde), zahlt aber effektiv nur den “nötigen Preis” um entsprechende Instanzen zu bekommen.

Damit verkauft AWS die für die Zukunft bereits vorhandenen Ressourcen deutlich günstiger.

Nachteil: Sollte das Gebot zu niedrig sein, weil z.b. weniger Server vorhanden sind, oder die Konkurrenz höhere Preise bietet werden die EC2 Instanzen automatisch “weggenommen”.

Spot-Instances: Auf den Instanztyp kommt es an.

Bei der Auswahl der Spot-Instance ist es sinnvoll ggf. von seinem üblichen Instanz-Typ abzuweichen. “Selten” verwendete Typen sind oft günstiger als die “Haus-und-Hof” m5.Large die in jedem Tutorial verwendet wird.

AWS Spot-Instances Pro Tipps:

Maximalgebot = On-Demand Gebot

Ein einfacher weg schnell kosten zu sparen ohne viele ausfälle zu riskieren ist das maximalgebot auf den On-Demand Preis zu setzen. Leider kann es trotzdem passieren das der Preis darüber steigt oder die Ressourcen knapp werden.

Availability-Zones prüfen

AWS Ressourcen sind immer einer Region (z.b. Frankfurt) und dort oft noch einer Availability-Zone unterteilt, so auch EC2 und EC2-Spot Instanzen. Die Gebotspreise sind aber abhängig der Availability-Zone. Eine m5.xLarge kann in eu-central-1a teurer sein als in eu-central-1b.

Spot Instance Advisor verwenden.

AWS bietet mit dem Spot Instance Advisor ein Tool um die aktuellen Preise, Einsparungen und die aktuelle “Frequency of interruptions” zu ermitteln.

Frequency of interruptions ist die warscheinlichkeit das bei dem angezeigten Preis die Instanz “weggenommen wird”. Bei der Auswahl der Spot-Instanzen sollte man daher darauf abzielen einem Server-Typ mit geringer “frequency of interruption” zu wählen um unnötige Downtimes zu verhindern.

Den Spot Instance Advisor findet Ihr hier

Kosten sparen mit dem AWS Trusted Advisor

Was viele nicht wissen: AWS selbst verfügt in der Management Konsole über ein Tool welches Kostenoptimierungen vorschlägt!

Das ganze versteckt sich innerhalb des “AWS Trusted Advisor” Tools unter dem Menüpunkt “Cost Optimization”. Dort findet Ihr zum Beispiel:

  • Nicht ausgelastete EC2 Instanzen die Ihr auf kleinere Instanz-typen wechseln könnt
  • Zu große EBS Festplatten
  • Ungenutzte Load Balancer
  • … uvm.

Gerade wenn seine Infrastruktur nicht als Code vorliegen hat sondern manuell über das GUI erzeugt vergisst man schnell mal ungenutzte Ressourcen freizugeben. Mehr Informationen zum AWS Trusted Advisor findet Ihr hier

MySQL und PostgreSQL: AWS Aurora

Einen großen Kostenblock in AWS können auch die Datenbanken, insbesondere MySQL oder Postgres darstellen. Diese lassen sich vor allem bei “schwankendem Workload” mit AWS Aurora oder gar Serverless sehr leicht optimieren:

Was ist AWS Aurora?

Bei AWS Aurora handelt es sich innerhalb der AWS Database-Services (RDS) um ein von AWS selbst entwickeltes Datenbank-System das zu MySQL und PostgreSQL kompatibel ist. Da diese Datenbanken mit abstand am häufigsten verwendung finden lassen sich normale MySQL oder PostgresSQL Server recht einfach zu AWS Aurora migrieren. AWS Aurora bietet diverse Vorteile:

  • Bis zu 5x Durchsatz im vergleich mit klassischem MySQL
  • Bis zu 10x Kosteneffektiver
  • Vollständig MySQL- und PostgreSQL Kompatibel
  • Automatische skalierung des benötigten Speichers bis 64TB nach Bedarf
  • 99,99% Verfügbarkeit
  • Einfache migration bestehender MySQL und PostgreSQL über den AWS DMS Service

Mehr informationen zu AWS Aurora gibts hier.

Was ist AWS Aurora Serverless

Wie der Name bereits vermuten lässt handelt es sich dabei um die Serverless Variante von AWS Aurora. Damit ist es nicht mehr nötig selbst die Server-instanz zu wählen sondern AWS skaliert automatisch die verfügbaren Ressourcen anhand der Last, anzahl Datenbankabfragen, Speicherverbrauch usw.

Dies ist besonders Kosteneffektiv wenn man eine stark schwankende Last auf der Datenbank hat, beispielsweise durch:

  • Unterschiedliche Last abhängig von Wochentag oder Tageszeit
  • Temporär wiederkehrende hohe Last durch Cronjobs, Worker, ETL Prozesse
  • Temporär hohe Last durch andere Unternehmensaktivitäten (z.b. TV-Werbung)

Mehr Informationen zu AWS Aurora Serverless gibts hier

Sparen durch Commitment

AWS bietet verschiedenste Rabattmöglichkeiten wenn man einen gewissen Ressourcenverbrauch / Umsatz bei AWS über 1-3 Jahre garantiert. Hier gibt es folgende Möglichkeiten:

AWS Saving Plans

Compute Saving Plans

Mit Compute Saving Plans könnt Ihr bis zu 66% sparen bei höchster flexibilität. Dabei verpflichtet Ihr euch für einen gewissen Umsatz in EC2, Fargate oder Lambda in den nächsten 12-36 Monaten. Dadurch dass Ihr euch nicht auf bestimmte EC2 Instanz-Typen festlegen müsst bleibt Ihr maximal flexibel.

EC2 Instance Saving Plans

MIt EC2 Instance Saving Plans könnt Ihr sogar noch mehr sparen als bei Compute Saving Plans (bis zu 72%) aber verliert dafür flexibilität Ihr müsst euch auf eine Instanz-Familie (z.b. M5) und Region (z.b. us-west-1) festlegen.

Mehr Infos zu Saving Plans findet Ihr hier

AWS EDP / Private Pricing: Enterprise Discount Program

Beim Enterprise Discount Program handelt es sich um spezielle Rabattkonditionen wenn Ihr euch auf höhere Umsätze über einen längeren Zeitraum verpflichten könnt. Ob euer Account für EDP geeignet ist kann euch idr. der Sales- oder Key-Account Kontakt mitteilen. Weitere Infos zm EDP erhaltet Ihr hier

comments powered by Disqus