Exemplo de faturamento

Use este exemplo real de um app de chat básico para avaliar o uso e os custos do Firestore. Esta não é uma estimativa exata, mas pode ajudar você a entender melhor como o uso do Firestore é faturado.

Visão geral: custos por nível de uso

Para ilustrar os custos típicos, considere um exemplo de app de bate-papo, no qual os usuários podem iniciar bate-papos com dois ou mais participantes. Os usuários podem ver seus bate-papos ativos em uma lista e ler e enviar mensagens. Neste exemplo, usamos os preços para a multirregião da América do Norte, precisamente nam5.

Suposições

Considere as seguintes suposições sobre uso e armazenamento de dados:

  • Usuários ativos diários (DAUs, na sigla em inglês) são 10% do total de instalações do app. Você pode estimar seus custos diários usando uma estimativa aproximada de seus Usuários ativos diários (DAUs). Esses são os usuários que ativamente abrem e usam seu app em um determinado dia, o que geralmente é um pequeno subconjunto das instalações totais do app. Para os cálculos abaixo, estimamos DAUs como 10% do número total de instalações do app.
  • Tamanhos de documentos são relativamente pequenos. Confira a tabela abaixo para uma análise detalhada do tamanho de documentos por tipo.
  • Os dados são armazenados apenas por três meses. As mensagens no app de bate-papo de exemplo são armazenadas apenas por um período de três meses. Para contabilizar as operações de exclusão, os cálculos abaixo mostram uma exclusão diária para cada gravação diária.
  • Essas estimativas de custo refletem a maior parte dos custos do app de exemplo, mas não todos eles. Estimamos a maior parte dos custos de um app calculando operações, armazenamento de usuários e de mensagens e saída para as tarefas de usuários mais frequentes descritas neste guia. No entanto, talvez você precise considerar os custos de adicionalidade, dependendo da estrutura e das necessidades de dados de seu app. Use este exemplo para orientar seus cálculos, mas consulte a página de preços para ver explicações mais detalhadas sobre os custos do Firestore.

Para uma análise detalhada das operações por tarefa do usuário, consulte a seção Detalhamento: uso faturado por tarefa do usuário.

Pequeno
(50 mil instalações)

Para 50 mil instalações de apps (5 mil usuários ativos diários): US$ 12,14/mês

Custos de leitura/gravação
Custo mensal total = US$ 11,10/mês
400 mil leituras diárias totais =   50 mil leituras GRATUITAS + (350 mil leituras a US$ 0,06/100 mil) =   3,5 * US$ 0,06
US$ 0,21/dia * 30 = US$ 6,30
 
Total de 100 mil gravações diárias =   20 mil leituras GRATUITAS + (80 mil leituras a US$ 0,18/100 mil) =   0,8 * US$ 0,18
US$ 0,14/dia * 30 = US$ 4,20
 
Total de 100 mil exclusões diárias =   20 mil exclusões GRATUITAS + (80 mil exclusões a US$ 0,02/100 mil) =   0,8 * US$ 0,02
US$ 0,02/dia * 30 = US$ 0,60
Custos de armazenamento/rede
Custo mensal total = US$ 1,04/mês
20 KB/DAU de saída diária * 5 mil DAUs =   100 MB de saída diária * 30 =   Saída de rede mensal de 3 GB
Saída GRATUITA de 3 GB = GRÁTIS1
 
15 KB de armazenamento diário de mensagens/DAU + 3 KB de armazenamento/instalação2 =   45 KB de armazenamento/DAU * 5 mil DAUs =   225 MB de armazenamento diário/DAU * 30 =   6,75 GB de uso mensal de armazenamento
1 GB de armazenamento GRATUITO + (5,75 * US$ 0,18) = US$ 1,04/mês

1 10 GB de saída de rede mensal são gratuitos para o Firestore.
2 Como supomos que os DAUs são 10% do total de instalações do app, esse número representa o número total de usuários que instalaram seu aplicativo.

Médio
(1 milhão de instalações)

Para 1 milhão de instalações de aplicativo (100 mil usuários ativos diariamente): US$ 292,02/mês

Custos de leitura/gravação
Custo mensal total = US$ 261,90/mês
8 milhões de leituras diárias totais =   50 mil leituras GRATUITAS + (7,95 milhões de leituras a US$ 0,06 / 100 mil) =   79,5 * US$ 0,06
US$ 4,77/dia * 30 = US$ 143,10
 
2 milhões de gravações diárias =   20 mil gravações GRATUITAS + (1,98 milhões de gravações a US$ 0,18/100 mil) =   19,8 * US$ 0,18
US$ 3,56/dia * 30 = US$ 106,80
 
2 milhões de exclusões diárias totais =   20 mil exclusões GRATUITAS + (1,98 milhões de exclusões a US$ 0,02/100 mil) =   19,8 * US$ 0,02
US$ 0,40/dia * 30 = US$ 12,00
Custos de armazenamento/rede
Custo mensal total = US$ 30,12/mês
20 KB/DAU de saída diária * 100 mil DAUs =   2 GB de saída diária * 30 =   Saída de rede mensal de 60 GB
10 GB de saída GRATUITA + (50 GB de saída * US$ 0,12/GB) = US$ 6,00/mês
 
15 KB de armazenamento diário de mensagens/DAU + 3 KB de armazenamento/instalação1 =   45 KB de armazenamento/DAU * 100 mil DAUs =   4,5 GB de armazenamento diário/DAU * 30 =   Uso de armazenamento mensal de 135 GB
1 GB de armazenamento GRATUITO + (134 GB * US$ 0,18/GB) = US$ 24,12/mês

1 Como supomos que os DAUs são 10% do total de instalações do app, esse número representa o número total de usuários que instalaram seu aplicativo.

Grande
(10 milhões de instalações)

Para 10 milhões de instalações do app (1 milhão de usuários ativos diários): US$ 2.951,52

Custos de leitura/gravação
Custo mensal total = Total: US$ 2.637,90/mês
80 milhões de leituras diárias =   50 mil leituras GRATUITAS + (79,95 milhões de leituras a US$ 0,06/100 mil) =   799,5 * US$ 0,06
US$ 47,97/dia * 30 = US$ 1.439,10
 
20 milhões de gravações diárias totais =   20 mil gravações GRATUITAS + (19,98 milhões de leituras a US$ 0,18/100 mil) =   199,8 * US$ 0,18
US$ 35,96/dia * 30 = US$ 1.078,80
 
20 milhões de exclusões diárias totais =   20 mil exclusões GRATUITAS + (19,98 milhões de exclusões a US$ 0,02/100 mil) =   199,8 * US$ 0,02
US$ 4,00/dia * 30 = US$ 120,00
Custos de armazenamento/rede
Custo mensal total = US$ 313,62/mês
20 KB/DAU de saída diária * 1 milhão de DAUs =   20 GB de saída diária * 30 =   Saída de rede mensal de 600 GB
10 GB de saída GRATUITA + (590 GB de saída * US$ 0,12/GB) = US$ 70,80/mês
 
15 KB de armazenamento diário de mensagens/DAU + 3 KB de armazenamento/instalação1 =   45 KB de armazenamento/DAU * 1 milhão de DAUs =   45 GB de armazenamento diário/DAU * 30 =   1.350 GB de uso mensal de armazenamento
(1 GB de armazenamento GRATUITO) + (1.349 GB * US$ 0,18/GB) = US$ 242,82/mês

1 Como supomos que os DAUs são 10% do total de instalações do app, esse número representa o número total de usuários que instalaram seu aplicativo.

Um benefício do modelo de faturamento do Firestore a ser considerado é que você paga apenas o que usar. Como resultado, sua fatura pode aumentar e diminuir com a contagem de DAUs.

Detalhamento: uso faturado pela tarefa do usuário

Nosso aplicativo de chat de exemplo usa a seguinte estrutura de dados:

  • users/{userId}: registros de usuário;
  • groups/{groupId}: conversas entre dois ou mais usuários;
    • messages/{messageId}: cada mensagem de um chat.

Armazenamento de dados

Para calcular os custos de armazenamento dos dados do app, aplique as seguintes suposições sobre tamanhos de documentos:

Coleção Tamanho do documento (em trânsito) Tamanho do Documento (no disco)*
usuários 1 KB 3 KB
grupos 0,5 KB 1,5 KB
mensagens 0,25 KB 0,75 KB

*Este cálculo de tamanho inclui índices para os campos de mensagem, mas assume que a indexação está desativada para o conteúdo da mensagem.

O app armazena apenas mensagens com até três meses, para reduzir os custos de armazenamento.

Para saber mais informações sobre o cálculo de custos de armazenamento, consulte Noções básicas sobre cálculos de tamanho de armazenamento.

Operações

Os usuários geralmente concluem as seguintes tarefas comuns no app:

O total de operações estimadas do app de exemplo no Firestore para as três tarefas típicas de usuário é o seguinte:

  • Ler: (5 * 10) + (30) = 80 leituras/usuário/dia
  • Escrever: (10 * 2) = 20 escritas/usuário/dia
  • Saída de rede: (50 * 0,25 KB) + (30 * 0,25 KB) = 20 KB/usuário/dia
  • Armazenamento: (20 * 0,75 KB) = 15 KB/usuário/dia

Uso total por tarefa do usuário

Selecione cada tarefa do usuário para ver uma descrição completa e o detalhamento dos custos de operação, armazenamento e rede no app.

Ver a lista de bate-papos

A tela inicial do app carrega os 25 bate-papos mais recentes, com cobrança de 25 leituras de documentos. Suponha que um usuário ativo abra o app cinco vezes por dia, totalizando 125 leituras por usuário por dia. No entanto, consultas mais eficientes, como a do exemplo a seguir, podem reduzir essa carga.

No exemplo abaixo, limitamos a consulta a novos bate-papos usando um carimbo de data/hora de cada busca bem-sucedida, armazenada pelo app:

db.collection('groups')
  .where('participants', 'array-contains', 'user123')
  .where('lastUpdated', '>', lastFetchTimestamp)
  .orderBy('lastUpdated', 'desc')
  .limit(25)

Suponha que há uma média de 10 chats atualizados sempre que o usuário verifica o aplicativo. Essa consulta envolve apenas 10 leituras de documentos.

Ler mensagens em um bate-papo

Os usuários clicam nos tópicos de bate-papo na tela inicial para ver as mensagens recentes, carregando as 50 mensagens mais recentes no carregamento inicial.

Suponha que o usuário típico execute essa ação cinco vezes por dia (uma para cada vez que abrir a tela inicial), levando a um total de 250 leituras por usuário a cada dia. Também podemos limitar nossa consulta a novas mensagens desde o último horário de obtenção:

db.collection('groups')
  .doc('group234')
  .collection('messages')
  .where('sentTime', '>', lastFetchTimestamp)
  .orderBy('sentTime', 'desc')
  .limit(50)

Suponha que um usuário receba cerca de 30 mensagens por dia em todos os bate-papos. Como você limitou a consulta para buscar novas mensagens, isso se traduz em apenas 30 mensagens recuperadas/dia.

Enviar uma mensagem para um chat

Os usuários podem enviar mensagens para outros participantes assim que estiverem em um bate-papo. Suponha que um usuário ativo envie cerca de 10 mensagens por dia.

Cada mensagem enviada resultará em duas gravações de documentos: uma na subcoleção de messages do chat e outra no documento pai do chat para atualizar o carimbo de data/hora lastUpdated e outros metadados.

Observe que o custo de ler essas mensagens foi contabilizado nas outras viagens, portanto, os totais abaixo consideram apenas esse custo de gravação.