Der Titel dieses Beitrags verweist direkt auf das Diagramm
"Verzögerungszeiten, die jeder Programmierer kennen sollte". Derzeit gibt es mehrere Versionen dieses Diagramms, und es ist schwierig, den ursprünglichen Autor zu ermitteln. Einige sagen, es ist
Jeff Dean .
Wenn Sie an einem Projekt arbeiten, das einen großen Umfang erreichen muss, müssen Sie mehrere Probleme in Einklang bringen. Welche Annahmen treffen wir und wie können wir sie bestätigen? Wie schnell in den Markt eintreten? Wird unser Design den erwarteten Maßstab unterstützen?
Eines der Probleme bei der Skalierung sind die Kosten für die Infrastruktur. Mit Cloud-Anbietern können Sie mit einem Klick Tausende von Prozessoren erstellen und Terabyte an Daten platzieren. Aber es ist teuer und etwas, das für mehrere tausend Benutzer unbedeutend ist, kann zu einem riesigen Budgetloch werden, wenn Sie Millionen von Benutzern erreichen.
In diesem Artikel werde ich einige Referenznummern auflisten, die bei der Betrachtung der Architektur hilfreich sind. Diese Zahlen sind nicht als genaue Schätzung des Budgets gedacht. Sie helfen festzustellen, ob Ihr Design sinnvoll ist oder ob es über das hinausgeht, was Sie sich leisten können. Daher betrachten wir Größenordnungen und relative Werte anstelle von absoluten Werten.
Denken Sie auch daran, dass Ihr Unternehmen möglicherweise Rabatte von AWS erhält, was einen großen Unterschied machen kann.
Berechnungen
Was sind die aktuellen Kosten der CPU? Über die wunderbare Schnittstelle
ec2instances.info habe ich mittlere vCPU-Preise erhalten.
Sie können die Quelldaten aus
dem Github-Repository abrufen . Ich habe sie kopiert und mit einem Python-Skript verarbeitet, das ich auch
für Github übernommen habe . Alle Preise gelten für die Region eu-west-1.
Ich habe die Spotpreise nach verschiedenen Nutzern bewertet. Da sich die Preise im Laufe des Tages ändern, konnte ich keine zuverlässige Datenquelle finden.
AWS repräsentiert die Rechenleistung seiner Maschinen in Elastic Compute Units, und 4 Steuergeräte entsprechen mehr oder weniger der Leistung eines modernen Prozessors. Daher werden die oben genannten Preise für einen einzelnen Prozessor oder Kern und nicht für eine einzelne Instanz angezeigt.
Hier ist der Preis von 1 ECU in Dollar pro Stunde in allen von mir bewerteten Fällen:

Und so werden die Preise auf Anfrage mit Reservierungen für ein oder drei Jahre (Vorauszahlungen) verglichen:

Lagerung
Sie möchten also eine geringe Latenz, eine hohe Bandbreite und möchten alles in Redis speichern? Zusätzlich zu diesen Kosten muss die CPU für den RAM bezahlen.
Ich habe den gleichen Ansatz verwendet, um den Durchschnittspreis von 1 GB RAM auf EC2 zu erhalten. Elasticache ist ungefähr doppelt so teuer wie On-Demand, aber die Preise fallen in reservierten Fällen ziemlich schnell.
Dies sind zwar die Nettokosten für die Speicherung, Sie müssen jedoch auch die Verwendungsmuster für Ihre Daten berücksichtigen. Wie viel Prozessor benötigen Sie, um rund um die Uhr in einem 24/7-Speicher zu arbeiten?
Gleiches gilt für S3: Wie viel zahlen Sie für Lese- / Schreibanfragen? Ich sah Workloads, bei denen die Speicherkosten in S3 vernachlässigbar waren, aber die Kosten für das Schreiben einer großen Anzahl von Objekten in S3 veranlassten das Team, ein eigenes Dateisystem über S3 zu schreiben.
Übertragen
Ein paar
Kommentare zu HackerNews zeigten, dass ich die Übertragungskosten verpasst hatte. Wenn Sie Endbenutzern Daten bereitstellen oder eine interregionale Replikation benötigen, müssen Sie diese Kosten berücksichtigen.