Re: [Rio-pm] Cache RESTfulie

2013-03-12 Por tôpico Tiago Peczenyj
Se vc separar da applicação via um middleware plack , por exemplo , parece
ok

Mas na app vc tem q controlar a expiracao no cache, etc.vao usar etag? Vao
responder q o recurso ainda nao mudou?

Ou entao ignora o cache de url e cacheia o acesso aos objetos. Nao mistura
com o http q eh dor de cabeça.
Em 12/03/2013 01:38, Marcio Ferreira marciodesouzaferre...@gmail.com
escreveu:

 (Imagina q nao existe varnish, nem nada no proxy, *OK*!)

 Tenho uma mesmo app service rodando em várias instancias balanceadas
 pelo nginx.
 Até aqui tudo bem, mas aí quero fazer cache dos acessos da API.

 penso.em/usar/minha/url como chave chave do Redis, alguém me condena por
 isso?
 Isso não parece ser uma boa prática, porque resolve até certo ponto, não
 resolve se meu serviço aceita parametros via header =/

 Qual pratica recomendada/adotada quando vocês precisam cachear RESTfulie a
 *nível de app*?

 []s,

 Marcio Ferreira
 skype: marcio.ferreir4
 (21) 8365-7768

 ___
 Rio-pm mailing list
 Rio-pm@pm.org
 http://mail.pm.org/mailman/listinfo/rio-pm

___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Re: [Rio-pm] Cache RESTfulie

2013-03-12 Por tôpico Lindolfo Rodrigues
Porque não fazer um teste de perfomance na sua api do jeito que está?
Se ela aguentar digamos, 15 QPS, você fica monitorando a quantidade de queries 
e caso chegue próximo desse numero você cria novas maquinas da API ( escalar na 
horizontal ), isso pode até ser feito automaticamente.
Imagino que subir 1 ou 5 novas maquinas de API levam minutos porque o deploy 
está automatizado com puppet/chef e instalação da App certo? :)
Acho que isso resolve seu problema e não mexer com cache agora.

--  
Lorn


On Tuesday, March 12, 2013 at 3:17 AM, Marcio Ferreira wrote:

 Problema que não sei quem é meu cliente, se ele nao faz cache eu preciso 
 fazer!
 Estou me preparando para o pior cenário!


___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Re: [Rio-pm] Cache RESTfulie

2013-03-12 Por tôpico Nuba Princigalli
Márcio,

On Tue, Mar 12, 2013, at 02:24 AM, Thiago Rondon wrote:
 Como diria Phil Karlton. Há apenas duas coisas difíceis em ciências da
 computação, invalidação de cache ou dar nome as coisas.

São duas, as coisas difíceis: dar nome, invalidar cache e acertar nos
índices ao iterar sobre listas! ;)

 Na minha opinião, se você esta utilizando a arquitetura REST e quer
 efetuar cache na aplicação é um tiro no pé, uma hora isto vai te dar dor
 de cabeça. Digo isto, pois a maior parte do desenvolvimento e evolução
 dos frameworks, servidores web, proxy e navegadores nos últimos anos
 foram na direção contraria. O cache deve ser local (cliente) ou
 compartilhado (intermediadores).

O cache no servidor é válido também, bastante indicado quando é mais
caro computar a representação do recurso em cada request, ao invés de
gerá-la novamente, é onde etag e last-modified funcionam muito bem! :)

 Para efetuar cache baseado no header, verifique se as próprias opções do
 HTTP não te resolvem, principalmente com as estratégias disponíveis para
 isto. Utilizando as diretivas dentro de Cache-Controle, Expire, .. Ou
 recomendando a interação com teu backend baseado com perguntas baseado ao
 Etag ou Last-Modified.

Então, se você tem o request e vai respeitar as especificações, me
pareceu artificial a restrição de não ter um proxy reverso com cache na
frente da sua app. Inclusive, até bem recentemente, esses caras eram
mais conhecidos pelo nome web application accelerator veja
https://en.wikipedia.org/wiki/Web_accelerator#Web_server_accelerator 

Se você faz questão de trabalhar dentro da sua app, veja a turma CHI::*
e coisas como https://metacpan.org/module/Memoize::Memcached

Abraço,

Nuba

-- 
Nuba R. Princigalli  n...@pauleira.com  http://pauleira.com 
@nprincigalli
Discipline is not an end in itself, just a means to an end. - King
Crimson
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm


Re: [Rio-pm] Cache RESTfulie

2013-03-12 Por tôpico Thiago Rondon


On Tuesday, March 12, 2013 at 8:54 AM, Nuba Princigalli wrote:

 Márcio,
  
 On Tue, Mar 12, 2013, at 02:24 AM, Thiago Rondon wrote:
  Como diria Phil Karlton. Há apenas duas coisas difíceis em ciências da
  computação, invalidação de cache ou dar nome as coisas.
  
  
  
 São duas, as coisas difíceis: dar nome, invalidar cache e acertar nos
 índices ao iterar sobre listas! ;)
  
  Na minha opinião, se você esta utilizando a arquitetura REST e quer
  efetuar cache na aplicação é um tiro no pé, uma hora isto vai te dar dor
  de cabeça. Digo isto, pois a maior parte do desenvolvimento e evolução
  dos frameworks, servidores web, proxy e navegadores nos últimos anos
  foram na direção contraria. O cache deve ser local (cliente) ou
  compartilhado (intermediadores).
  
  
  
 O cache no servidor é válido também, bastante indicado quando é mais
 caro computar a representação do recurso em cada request, ao invés de
 gerá-la novamente, é onde etag e last-modified funcionam muito bem! :)
  


Sim, eu tratei 'cache no servidor' como um intermediador com sua app. Qualquer
coisa que esteja na frente da app é um intermediador, até mesmo um 
plack::middleware,
nginx, varnish, acelerador, ... .

Abs!
-Thiago Rondon

___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm


[Rio-pm] Cache RESTfulie

2013-03-11 Por tôpico Marcio Ferreira
(Imagina q nao existe varnish, nem nada no proxy, *OK*!)

Tenho uma mesmo app service rodando em várias instancias balanceadas
pelo nginx.
Até aqui tudo bem, mas aí quero fazer cache dos acessos da API.

penso.em/usar/minha/url como chave chave do Redis, alguém me condena por
isso?
Isso não parece ser uma boa prática, porque resolve até certo ponto, não
resolve se meu serviço aceita parametros via header =/

Qual pratica recomendada/adotada quando vocês precisam cachear RESTfulie a
*nível de app*?

[]s,

Marcio Ferreira
skype: marcio.ferreir4
(21) 8365-7768
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Re: [Rio-pm] Cache RESTfulie

2013-03-11 Por tôpico Marcio Ferreira
Desculpem, o título devia ser cache RESTful

[]s,

Marcio Ferreira
skype: marcio.ferreir4
(21) 8365-7768


2013/3/12 Marcio Ferreira marciodesouzaferre...@gmail.com

 (Imagina q nao existe varnish, nem nada no proxy, *OK*!)

 Tenho uma mesmo app service rodando em várias instancias balanceadas
 pelo nginx.
 Até aqui tudo bem, mas aí quero fazer cache dos acessos da API.

 penso.em/usar/minha/url como chave chave do Redis, alguém me condena por
 isso?
 Isso não parece ser uma boa prática, porque resolve até certo ponto, não
 resolve se meu serviço aceita parametros via header =/

 Qual pratica recomendada/adotada quando vocês precisam cachear RESTfulie a
 *nível de app*?

 []s,

 Marcio Ferreira
 skype: marcio.ferreir4
 (21) 8365-7768

___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Re: [Rio-pm] Cache RESTfulie

2013-03-11 Por tôpico Renato Santos
*Acho* que você deve criar uma função de entrada, cuja saida seja sempre a
mesma para determinados parametros, e ai você utiliza isso como chave.

vamos supor um REST assim:

   - POST /user
   - PUT /user/$id
   - DELETE /user/$id
   - GET /user
   - GET /user/$id

Você tem que apagar o cache corretamente quando alguem efetuar POST, PUT,
DELETE e fazer leituras (e escritas, caso não exista o cache) no cache no
GET.

Se for exatamente o REST acima, um mundo perfeito, é facil apagar o cache
das URL que são 'pais', por exemplo, editou o nome de um usuario, você tem
que apagar a listagem do usuario e o cache do get do usuario. Limpar toda a
lista dos usuarios pode se tornar um problema se você tem muitas escritas e
o o objeto em questão não estiver no /user (vamos supor que é paginado, ..)

e ai começam os problemas..


2013/3/12 Marcio Ferreira marciodesouzaferre...@gmail.com

 Desculpem, o título devia ser cache RESTful


 []s,

 Marcio Ferreira
 skype: marcio.ferreir4
 (21) 8365-7768


 2013/3/12 Marcio Ferreira marciodesouzaferre...@gmail.com

 (Imagina q nao existe varnish, nem nada no proxy, *OK*!)

 Tenho uma mesmo app service rodando em várias instancias balanceadas
 pelo nginx.
 Até aqui tudo bem, mas aí quero fazer cache dos acessos da API.

 penso.em/usar/minha/url como chave chave do Redis, alguém me condena por
 isso?
 Isso não parece ser uma boa prática, porque resolve até certo ponto, não
 resolve se meu serviço aceita parametros via header =/

 Qual pratica recomendada/adotada quando vocês precisam cachear RESTfulie
 a *nível de app*?

 []s,

 Marcio Ferreira
 skype: marcio.ferreir4
 (21) 8365-7768



 ___
 Rio-pm mailing list
 Rio-pm@pm.org
 http://mail.pm.org/mailman/listinfo/rio-pm




-- 
Saravá,
Renato CRON
http://www.renatocron.com/blog/
@renato_cron http://twitter.com/#!/renato_cron
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Re: [Rio-pm] Cache RESTfulie

2013-03-11 Por tôpico Thiago Rondon

Marcio,

Como diria Phil Karlton. Há apenas duas coisas difíceis em ciências da 
computação, invalidação de cache ou dar nome as coisas.

Na minha opinião, se você esta utilizando a arquitetura REST e quer efetuar 
cache na aplicação é um tiro no pé, uma hora isto vai te dar dor de cabeça. 
Digo isto, pois a maior parte do desenvolvimento e evolução dos frameworks, 
servidores web, proxy e navegadores nos últimos anos foram na direção 
contraria. O cache deve ser local (cliente) ou compartilhado (intermediadores).

Para efetuar cache baseado no header, verifique se as próprias opções do HTTP 
não te resolvem, principalmente com as estratégias disponíveis para isto. 
Utilizando as diretivas dentro de Cache-Controle, Expire, .. Ou recomendando a 
interação com teu backend baseado com perguntas baseado ao Etag ou 
Last-Modified.

Enfim, na minha opinião, eu recomendaria fortemente bater a cabeça aí, até 
esgotar todas as chances.

O cache no redis, pode ser para as demais coisas, que você não consegue 
controlar no HTTP por exemplo.

Meus centavos.

Abraço!
-Thiago Rondon


On Tuesday, March 12, 2013 at 1:38 AM, Marcio Ferreira wrote:

 (Imagina q nao existe varnish, nem nada no proxy, *OK*!)
  
 Tenho uma mesmo app service rodando em várias instancias balanceadas pelo 
 nginx.  
 Até aqui tudo bem, mas aí quero fazer cache dos acessos da API.
  
 penso.em/usar/minha/url como chave chave do Redis, alguém me condena por isso?
 Isso não parece ser uma boa prática, porque resolve até certo ponto, não 
 resolve se meu serviço aceita parametros via header =/
  
 Qual pratica recomendada/adotada quando vocês precisam cachear RESTfulie a 
 *nível de app*?
  
 []s,
  
 Marcio Ferreira
 skype: marcio.ferreir4
 (21) 8365-7768
 ___
 Rio-pm mailing list
 Rio-pm@pm.org (mailto:Rio-pm@pm.org)
 http://mail.pm.org/mailman/listinfo/rio-pm



___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm