GAE - Google App Engine: Quotas e Valores

Ola,

Eu fiz uma aplicação (rede social) e estou fazendo alguns testes no app engine com ela e estou percebendo q a minha Quota para Read e Write (Datastore Write/Read Operations) esta indo pro espaço muito rapido (acredito ser por causa dos poolings).

https://developers.google.com/appengine/docs/billing

Write >> $0.10 per 100k operations
Read >> $0.07 per 100k operations
Small >> $0.01 per 100k operations

Não entendo muito bem o q significa essa quota mas acredito q o consumo do “write” seja quando eu chamo o metodo “put”
New Entity Put (per entity, regardless of entity size) >>>> 2 writes + 2 writes per indexed property value + 1 write per composite index value
Existing Entity Put (per entity) >>>> 1 write + 4 writes per modified indexed property value + 2 writes per modified composite index value

Resumindo pelo q eu entendi a cada 100KB de dados q eu gravo ou leio eu pago 10 centavos de dollar…
Minha pergunta é: “Não é muito pouco?”

Por exemplo: Eu implementei um chat em java onde a cada 10 segundos faz pooling no servidor para atualizar menu de usuarios, usuarios logados, novas mensagens, usuarios conectados ou nao, eventos de usuarios (ex: Usuario x esta digitando) etc. Enfim, a cada pooling atualiza um monte de coisas no banco além de ler. Isso nao torna o site lento, esse processo é bem rapido e nao interfere em desempenho, mas o fato é q a cada pooling atualiza e le tabelas
Fora isso tem alguns outros poolings.

Estou vendo aqui e se realmente a cada 100KB de dados eles me cobrarem $0,10 vai ficar muito caro.

É isso mesmo? Essa cota de 100Kb por write é muito pouco para o meu site?

[quote=felipe.regalgo]Ola,

Eu fiz uma aplicação (rede social) e estou fazendo alguns testes no app engine com ela e estou percebendo q a minha Quota para Read e Write (Datastore Write/Read Operations) esta indo pro espaço muito rapido (acredito ser por causa dos poolings).

https://developers.google.com/appengine/docs/billing

Write >> $0.10 per 100k operations
Read >> $0.07 per 100k operations
Small >> $0.01 per 100k operations

Não entendo muito bem o q significa essa quota mas acredito q o consumo do “write” seja quando eu chamo o metodo “put”
New Entity Put (per entity, regardless of entity size) >>>> 2 writes + 2 writes per indexed property value + 1 write per composite index value
Existing Entity Put (per entity) >>>> 1 write + 4 writes per modified indexed property value + 2 writes per modified composite index value

Resumindo pelo q eu entendi a cada 100KB de dados q eu gravo ou leio eu pago 10 centavos de dollar…
Minha pergunta é: “Não é muito pouco?”

Por exemplo: Eu implementei um chat em java onde a cada 10 segundos faz pooling no servidor para atualizar menu de usuarios, usuarios logados, novas mensagens, usuarios conectados ou nao, eventos de usuarios (ex: Usuario x esta digitando) etc. Enfim, a cada pooling atualiza um monte de coisas no banco além de ler. Isso nao torna o site lento, esse processo é bem rapido e nao interfere em desempenho, mas o fato é q a cada pooling atualiza e le tabelas
Fora isso tem alguns outros poolings.

Estou vendo aqui e se realmente a cada 100KB de dados eles me cobrarem $0,10 vai ficar muito caro.

É isso mesmo? Essa cota de 100Kb por write é muito pouco para o meu site?

[/quote]

Não Felipe. O valor não é cobrado por 100KB de dados e sim por 100K de operações (ou 100 mil operações).

E sim. É bem barato pela robustez (vide High Replication) e serviços de plataforma que o Big Table te oferece.

Se achar caro, contrate um DBA e um SysAdmin para gerenciar o ambiente para vc, aí vc vai ver o que é caro.

Oi André,

para este tipo de hospedagem, o ideal mesmo é você pensar em otimização o tempo inteiro.
Fiz um trabalho similar no Grails Brasil, que detalhei neste post: http://www.itexto.net/devkico/?p=1097

Com isto estou pagando algo em torno de 0,56 a 0,80 US$ dia, o que é um valor muito bacana pra manter o site.

humm agora eu entendi, rs

Agora tudo faz sentido kkkk

valeu!

e sobre o artigo muito interessante, eu estou me baseando neste artigo da caelum http://blog.caelum.com.br/por-uma-web-mais-rapida-26-tecnicas-de-otimizacao-de-sites/ para performance.

abs

Uma coisa que gostaria de sugerir, sem ter muita relação com a sua dúvida principal.

Você disse fazer polling, o GAE oferece um serviço de server push, chamada de Channel. Talvez ele possa te ajudar.

[]s

Ola,

Gostei bastante do Channel, fiz um teste aqui e funcionou perfeito!

Porém quando fui ver as cotas/valores percebi q a cota para Channel é bem baixa.

Pelo q esta no link https://developers.google.com/appengine/docs/quotas?hl=pt-BR#Channel
->> Billing Enabled Default Limit ->> Maximum Rate ->> 60 creations/minute

Bom, se eu entendi direito depois de criado o channel eu posso aproveita-lo guardando o Token em um cookie por exemplo (ou seja, nao precisa criar novamente o channel).
Até ai otimo, mas lendo a pagina de cota (60 creations/minute) isto quer dizer q o meu site só poderá atender no maximo 60 novos usuarios por minuto?
Se tratando de uma rede social isso nao é muito pouco? Será q vale a pena trocar de Pooling para Channel? Pelo q eu tava vendo vai ficar meio caro.

O q vcs acham?

Outra coisa que gasta bastante a quota de datastore são as sessions dos usuários, que ficam salvas lá. Aí você fica escrevendo e lendo o tempo todo

Entao quer dizer q a sessao do usuario não fica na memoria? Em outras palavras, quando eu faço session.setAttribute(“key”, “value”) eu serei cobrado com um “write” e toda vez q eu faço um session.getAttribute(“key”) vai me cobrar um “read”?

Resumindo, sim, é isso mesmo. Mas ele ainda faz cache de leitura no memcache (que é mais barato, mas tbm cobrado).