LösungenBackends pro Nutzer
Eine Instanz für jeden Nutzer
Ein Schlüssel in der Anfrage leitet jeden Nutzer, Mandanten oder Agenten an eine eigene Instanz, die ihren Arbeitsspeicher und ihre Festplatte behält und zwischen Anfragen schläft.
from glac import Glac
glac = Glac()
app = glac.cube.deploy(
"ghcr.io/acme/notes:2", name="notes", port=8080,
keys={"from": {"header": "X-User"}, # the key
"delete_after_idle_ms": 30 * 86_400_000},
scale={"suspend_after_ms": 1000}) # sparse traffic: asleep a second after
# a request with X-User: ada reaches ada's own instance
ada = app.instance("ada") # or make or wake it from codeZustand pro Nutzer, Stunde für Stunde bezahlt
Ein Prozess pro Nutzer ist der einfachste Aufbau, doch läuft er durch, bezahlst du ihn auch, während der Nutzer gar nicht da ist. Hier schläft die Instanz jedes Schlüssels zwischen den Anfragen und kostet nur das, was sie behält.
Wie das Routing per Schlüssel funktioniert
Setze keys.from auf einen Header oder ein Segment des Pfads. Die erste Anfrage eines neuen Schlüssels erstellt seine Instanz; jede spätere erreicht dieselbe Instanz, mit ihrem Arbeitsspeicher und ihrer Festplatte. Anfragen ohne Schlüssel teilen sich die Instanzen der App.
Was die Instanz jedes Nutzers bekommt
Wähle den Aufbau: geteilte Instanzen oder eine eigene für den Schlüssel jedes Nutzers.
Ein Schlüssel aus der Anfrage, in einem Header oder im Pfad; die erste Anfrage erstellt seine Instanz.
Zustand pro Nutzer: Arbeitsspeicher, der den Schlaf übersteht, eine eigene Festplatte und ein Volume.
Was es kostet: im Schlaf keine CPU-Zeit, nur das, was sie behält.
Eine Lebensdauer nach deiner Wahl: Nach so langem Schlaf wird sie gelöscht, und ihr Schlüssel erstellt sie neu.
Nutzung pro Schlüssel, aus dem Schlüssel, den jede Instanz als Label trägt.
Beispielhafte Vorschauen
Gemessen, nicht versprochen
Mediane auf Bare Metal, ohne dass sonst etwas läuft: der Idealfall, und das sagen wir auch dazu. Die Instanz eines Schlüssels ist dieselbe Art von Maschine wie eine Sandbox, an der diese Werte gemessen wurden. Wie wir messen
- zum Aufwecken einer schlafenden Instanz2
- 3.5 ms
- für den Aufruf, der sie geweckt hat, vom Senden bis zur Antwort2
- 6.7 ms
- um sie samt Arbeitsspeicher und Prozessen schlafen zu legen2
- 2.3 ms
Prüf es mit deinen eigenen Schlüsseln, sobald der Dienst verfügbar ist: Die Log-Zeile einer Anfrage, die eine Instanz geweckt hat, nennt die Dauer des Aufwachens.
glac cube logs notes -f
# one line a request; one that woke an instance says how long it tookDie genutzten Produkte
- WürfelJedes Container-Image als App, die zwischen Anfragen schläftDie App, mit Schlüsseln: eine Instanz für jeden Nutzer, Mandanten oder Agenten.
- VolumeWürfel-Festplatten, die ihre Instanz überdauernFestplatten für das, was die Instanz eines Nutzers überdauern muss.
- SandboxEin eigener Computer für jeden AgentenEin Agent für jeden Nutzer, über die API gesteuert.
Ein Monat, durchgerechnet
Zehntausend Nutzer, jeder mit einer eigenen Instanz, zu Listenpreisen. Eigenen Monat schätzen
Die Nutzung
- 10 000 Nutzer, jeder mit einer eigenen Instanz, 256 MiB belegt.
- Jeder Nutzer stellt 30 Tage lang 300 Anfragen am Tag, jede mit 20 ms CPU-Zeit und 5 KB Antwort, zu zufälligen Zeiten.
- Die App ist so eingestellt, dass eine Instanz eine Sekunde nach dem Anhalten richtig einschläft (scale.suspend_after_ms 1000), die passende Einstellung für so spärlichen Traffic: Die Anfragen eines Nutzers kommen im Abstand von Minuten, und eine Instanz, die dazwischen im Arbeitsspeicher pausiert bleibt, wird die ganze Zeit für diesen Arbeitsspeicher abgerechnet. Jede ist also wach, während sie antwortet, und 1 s danach, dann weitere 1 s pausiert und schläft schließlich mit gesichertem Arbeitsspeicher, wobei sie etwa 100 MB behält.
- Was das kostet: Eine Anfrage, die ihre Instanz schlafend antrifft, wird in 6.7 ms beantwortet, bei einer pausierten Instanz in 0.43 bis 1.72 ms; und jedes Einschlafen und Aufwachen kostet 25.6 ms CPU-Zeit, die in die CPU-Zeit des Monats eingeht.
Ein Monat zu Listenpreisen
- CPU4.3 Milliarden CPU-ms × $0.01 / Mio.$42.95
- Arbeitsspeicher12 581 GiB-h × $0.008$100.65
- Anfragen90 Millionen × $0.30 / Mio.$27.00
- Ausgehender Traffic450 GB × $0.004$1.80
- Gespeicherter Zustand1 000 GB-Monate × $0.02$20.00
Im Bezahltarif kostet dieser Monat $189.60: die Gebühr von $5 und $184.60 für alles, was über die Inklusivmengen hinausgeht, aus deinem Guthaben zu denselben Preisen.
Gib jedem Nutzer seine eigene Instanz
Ein Schlüssel, dann eine App mit keys.from, mit einem Aufruf deployt.