OplossingenBackends per gebruiker
Een instantie voor elke gebruiker
Een sleutel in het verzoek stuurt elke gebruiker, tenant of agent naar een eigen instantie, die haar geheugen en schijf behoudt en tussen verzoeken slaapt.
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 codeToestand per gebruiker, betalen per uur
Een proces per gebruiker is het eenvoudigste ontwerp, en als het blijft draaien, betaal je ervoor terwijl de gebruiker weg is. Hier slaapt de instantie van elke sleutel tussen verzoeken en kost ze alleen wat ze bewaart.
Hoe routering per sleutel werkt
Zet keys.from op een header of een segment van het pad. Het eerste verzoek met een nieuwe sleutel maakt de instantie aan; elk later verzoek bereikt dezelfde instantie, met haar geheugen en schijf. Verzoeken zonder sleutel delen de instanties van de app.
Wat de instantie van elke gebruiker krijgt
Kies de opzet: gedeelde instanties, of één per sleutel van een gebruiker.
Een sleutel uit het verzoek, in een header of het pad; het eerste verzoek maakt de instantie aan.
Toestand per gebruiker: geheugen dat de slaap doorstaat, een eigen schijf, en een volume.
Wat het kost: in slaap geen CPU, alleen wat er bewaard wordt.
Een levensduur naar keuze: verwijderd na zo lang slapen, en via de sleutel opnieuw aangemaakt.
Verbruik per sleutel, op basis van de sleutel die elke instantie als label draagt.
Illustratieve voorbeelden
Gemeten, niet beloofd
Medianen op bare metal terwijl er verder niets draait: het gunstigste geval, en dat zeggen we erbij. De instantie van een sleutel is van dezelfde soort als een sandbox, waarop deze metingen zijn gedaan. Hoe we meten
- om een slapende instantie te wekken2
- 3.5 ms
- voor de aanroep die hem wekte, van verzonden tot beantwoord2
- 6.7 ms
- om hem in slaap te brengen, met zijn geheugen en processen2
- 2.3 ms
Kijk het zelf na bij je eigen sleutels zodra de dienst opengaat: de logregel van een verzoek dat een instantie wekte, zegt hoe lang het wekken duurde.
glac cube logs notes -f
# one line a request; one that woke an instance says how long it tookDe producten die het gebruikt
- KubusElk containerimage als app die tussen verzoeken slaaptDe app, met sleutels: één instantie voor elke gebruiker, tenant of agent.
- VolumeDe schijven van Kubus, die langer meegaan dan hun instantieSchijven voor wat langer moet meegaan dan de instantie van een gebruiker.
- SandboxEen eigen computer voor elke agentEen agent voor elke gebruiker, aangestuurd via de API.
Een maand, uitgerekend
Tienduizend gebruikers, elk met een eigen instantie, tegen de lijstprijzen. Bereken je eigen maand
Het gebruik
- 10 000 gebruikers, elk met een eigen instantie, 256 MiB in gebruik.
- Elke gebruiker doet 30 dagen lang 300 verzoeken per dag, elk met 20 ms CPU en een antwoord van 5 KB, op willekeurige momenten.
- De app is zo ingesteld dat een instantie een seconde nadat ze stopt echt gaat slapen (scale.suspend_after_ms 1000), de instelling voor verkeer dat zo dun gezaaid is: de verzoeken van een gebruiker liggen minuten uit elkaar, en voor een instantie die daartussen gepauzeerd in het geheugen blijft, betaal je al die tijd dat geheugen. Elke instantie is dus wakker terwijl ze antwoordt en nog 1 seconde daarna, blijft dan nog 1 seconde gepauzeerd en slaapt daarna met haar geheugen opgeslagen, waarbij ze ongeveer 100 MB bewaart.
- Wat dat kost: een verzoek dat zijn instantie slapend aantreft, krijgt antwoord in 6.7 ms, tegenover 0.43 tot 1.72 ms bij een gepauzeerde instantie; en elke keer slapen en wakker worden kost 25.6 ms CPU, die meetelt in de CPU van de maand.
Een maand tegen de lijstprijzen
- CPU4.3 miljard CPU-ms × $0.01 / M$42.95
- Geheugen12 581 GiB-uur × $0.008$100.65
- Verzoeken90 miljoen × $0.30 / M$27.00
- Uitgaand verkeer450 GB × $0.004$1.80
- In slaap bewaard1 000 GB-maanden × $0.02$20.00
Met Betaald kost deze maand $189.60: het abonnementsgeld van $5, en $184.60 boven wat de inbegrepen hoeveelheden dekken, uit je saldo tegen dezelfde prijzen.
Geef elke gebruiker een eigen instantie
Een sleutel, dan een app met keys.from, uitgerold met één aanroep.