Aller au contenu

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.

En savoir plus sur les instances à clé

Python
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 code

Un é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.

par mois pour la seule mémoire de 10 000 instances de 256 MiB maintenues en marche, aux prix catalogue1
$14,600.00
pour les mêmes instances endormies, gardant chacune 100 MB1
$20.00

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.

Une application et ses instances : avec des clés, chaque instance appartient à une clé, éveillée pour ses requêtes et endormie ensuite.

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.

Lire la documentation

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.

Shell
glac cube logs notes -f
# one line a request; one that woke an instance says how long it took

Les produits utilisés

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

$192.40

  • 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.

CubeLe SDK Python