Re: [Rio-pm] Cache RESTfulie
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
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
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
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
(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
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
*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
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