SolutionsBackends par utilisateur
Une instance par utilisateur
Une clé dans la requête achemine chaque utilisateur, locataire ou agent vers sa propre instance, qui garde sa mémoire et son disque et dort entre les requêtes.
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 codeUn état par utilisateur, facturé à l’heure
Un processus par utilisateur est la conception la plus simple, et s’il reste en marche, il se paie même quand l’utilisateur est absent. Ici, l’instance de chaque clé dort entre les requêtes et ne coûte que ce qu’elle garde.
Le routage par clé
Réglez keys.from sur un en-tête ou un segment du chemin. La première requête d’une nouvelle clé crée son instance ; toutes les suivantes atteignent la même instance, avec sa mémoire et son disque. Les requêtes sans clé se partagent les instances de l’application.
Ce dont dispose l’instance de chaque utilisateur
Choisissez l’architecture : des instances partagées, ou une par clé d’utilisateur.
Une clé tirée de la requête, dans un en-tête ou le chemin ; la première crée son instance.
Un état par utilisateur : la mémoire conservée pendant le sommeil, son propre disque, et un volume.
Ce qu’elle coûte : endormie, pas de CPU, seulement ce qu’elle garde.
Une durée de vie que vous choisissez : supprimée après avoir dormi aussi longtemps, recréée par sa clé.
La consommation par clé, grâce à la clé que chaque instance porte en étiquette.
Aperçus à titre d’illustration
Mesuré, pas promis
Des médianes sur bare metal, sans rien d’autre en cours d’exécution : le meilleur des cas, et nous le disons. L’instance d’une clé est du même type qu’un bac à sable, sur lequel ces mesures ont été faites. Comment nous mesurons
- pour réveiller une instance endormie2
- 3.5 ms
- pour l’appel qui l’a réveillé, de l’envoi à la réponse2
- 6.7 ms
- pour l’endormir, avec sa mémoire et ses processus2
- 2.3 ms
Vérifiez-le pour vos propres clés dès l’ouverture du service : la ligne du journal d’une requête qui a réveillé une instance indique la durée du réveil.
glac cube logs notes -f
# one line a request; one that woke an instance says how long it tookLes produits utilisés
- CubeToute image de conteneur devient une application qui dort entre les requêtesL’application, avec des clés : une instance par utilisateur, locataire ou agent.
- VolumeLes disques de Cube, qui survivent à leur instanceDes disques pour ce qui doit survivre à l’instance d’un utilisateur.
- Bac à sableUn ordinateur dédié à chaque agentUn agent par utilisateur, piloté par l’API.
Un mois, calculé
Dix mille utilisateurs, chacun avec sa propre instance, aux prix catalogue. Estimez le vôtre
Le scénario
- 10 000 utilisateurs, chacun avec sa propre instance, 256 MiB utilisés.
- Chaque utilisateur fait 300 requêtes par jour pendant 30 jours, chacune avec 20 ms de CPU et une réponse de 5 KB, à des moments aléatoires.
- L’application est réglée pour s’endormir pour de bon une seconde après l’arrêt d’une instance (scale.suspend_after_ms 1000), le réglage qui convient à un trafic aussi clairsemé : les requêtes d’un utilisateur arrivent à plusieurs minutes d’intervalle, et une instance gardée en pause en mémoire entre elles est facturée pour cette mémoire pendant tout ce temps. Chaque instance est donc éveillée le temps de répondre et 1 s après, en pause 1 s de plus, puis endormie, sa mémoire sauvegardée, en conservant environ 100 MB.
- Ce que cela coûte : une requête qui trouve son instance endormie obtient sa réponse en 6.7 ms, contre 0.43 à 1.72 ms si l’instance est en pause ; et chaque mise en sommeil suivie d’un réveil prend 25.6 ms de CPU, comptées dans le CPU du mois.
Un mois aux prix catalogue
- CPU4.3 milliards de ms CPU × $0.01 / M$42.95
- Mémoire12 581 GiB-h × $0.008$100.65
- Requêtes90 millions × $0.30 / M$27.00
- Trafic sortant450 GB × $0.004$1.80
- En sommeil1 000 GB-mois × $0.02$20.00
Avec le forfait Payant, ce mois revient à $189.60 : l’abonnement de $5, et $184.60 au-delà de ce que couvrent ses quantités incluses, prélevés sur votre solde aux mêmes prix.
Donnez à chaque utilisateur sa propre instance
Une clé, puis une application avec keys.from, déployée en un appel.