Pular para o conteúdo

SoluçõesBack-ends por usuário

Uma instância para cada usuário

Uma chave na requisição encaminha cada usuário, tenant ou agente para uma instância própria, que mantém a memória e o disco e dorme entre as requisições.

Leia sobre instâncias por chave

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

Estado por usuário, pago hora após hora

Um processo para cada usuário é o design mais simples, e, mantido rodando, ele é pago enquanto o usuário está ausente. Aqui, a instância de cada chave dorme entre as requisições, e só se paga pelo que ela guarda.

por mês só pela memória de 10 000 instâncias de 256 MiB mantidas rodando, a preços de tabela1
$14,600.00
pelas mesmas instâncias dormindo, cada uma guardando 100 MB1
$20.00

Como funciona o roteamento por chave

Defina keys.from como um cabeçalho ou um segmento do caminho. A primeira requisição de uma chave nova cria a instância dela; todas as seguintes chegam à mesma instância, com a memória e o disco. Requisições sem chave compartilham as instâncias da aplicação.

Uma aplicação e as suas instâncias: com chaves, cada instância pertence a uma chave, acordada para as requisições dela e dormindo depois delas.

O que a instância de cada usuário recebe

  • Escolha o formato: instâncias compartilhadas ou uma para a chave de cada usuário.

  • Uma chave vinda da requisição, em um cabeçalho ou no caminho; a primeira cria a instância.

  • Estado por usuário: memória mantida durante o sono, disco próprio e um volume.

  • Quanto custa: dormindo, nada de CPU, só o que guarda.

  • Um tempo de vida que você escolhe: excluída depois de dormir esse tempo, criada de novo pela chave dela.

  • Uso por chave, a partir da chave que cada instância leva como rótulo.

Leia a documentação

Prévias ilustrativas

Medido, não prometido

Medianas em bare metal sem mais nada rodando: o melhor caso, e dizemos isso. A instância de uma chave é do mesmo tipo que um sandbox, onde estes números foram medidos. Como medimos

para acordar uma instância adormecida2
3.5 ms
para a chamada que acordou a máquina, do envio à resposta2
6.7 ms
para colocar a máquina para dormir, com a memória e os processos2
2.3 ms

Veja isso para as suas próprias chaves quando o serviço abrir: a linha do log de uma requisição que acordou uma instância diz quanto tempo levou para acordar.

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

Os produtos usados

Um mês na ponta do lápis

Dez mil usuários, cada um com uma instância própria, a preços de tabela. Faça a sua estimativa

O cenário

  • 10 000 usuários, cada um com uma instância própria, 256 MiB em uso.
  • Cada usuário faz 300 requisições por dia durante 30 dias, com 20 ms de CPU e 5 KB de resposta cada, em horários aleatórios.
  • A aplicação configurada para dormir de verdade um segundo depois que uma instância para (scale.suspend_after_ms 1000), o ajuste indicado para um tráfego tão esparso: as requisições de um usuário chegam com minutos de intervalo, e uma instância mantida pausada na memória entre elas é cobrada por essa memória o tempo todo. Assim, cada uma fica acordada enquanto responde e por 1 s depois, pausada por mais 1 s, e então dorme com a memória salva, guardando cerca de 100 MB.
  • O que isso custa: uma requisição que encontra a instância dormindo é respondida em 6.7 ms, contra 0.43 a 1.72 ms quando a encontra pausada; e cada vez que ela dorme e acorda consome 25.6 ms de CPU, contados na CPU do mês.

Um mês a preços de tabela

$192.40

  • CPU4.3 bilhões × $0.01 por milhão de ms de CPU$42.95
  • Memória12 581 GiB-h × $0.008$100.65
  • Requisições90 milhões × $0.30 por milhão$27.00
  • Tráfego de saída450 GB × $0.004$1.80
  • Guardado enquanto dorme1 000 GB-meses × $0.02$20.00

No Pago, este mês sai por $189.60: a mensalidade de $5 e $184.60 além do que as franquias cobrem, debitados do seu saldo aos mesmos preços.

Dê a cada usuário a própria instância

Uma chave e, depois, uma aplicação com keys.from, publicada com uma chamada.

CuboO SDK de Python