<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Arquitetura &#8220;pull&#8221; ou &#8220;push&#8221;: qual escala mais?</title>
	<atom:link href="http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/feed/" rel="self" type="application/rss+xml" />
	<link>http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/</link>
	<description>Blog sobre desenvolvimento de software e tecnologia</description>
	<lastBuildDate>Sun, 16 Oct 2011 12:18:18 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Franklin</title>
		<link>http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/comment-page-1/#comment-11327</link>
		<dc:creator>Franklin</dc:creator>
		<pubDate>Wed, 22 Jul 2009 17:16:08 +0000</pubDate>
		<guid isPermaLink="false">http://gc.blog.br/?p=802#comment-11327</guid>
		<description>Guilherme, em primeiro lugar acompanho seus blogs (ingles e portugues) e acho vc uma referencia na area de Computacao. Parabens!
Gostaria de aproveitar o topico e perguntar: vc ja fez algum trabalho com o Google Calendar? Estou trabalhando num projeto e ainda nao encontrei uma solucao diferente de polling.
Obrigado.
Abracos,
Franklin.</description>
		<content:encoded><![CDATA[<p>Guilherme, em primeiro lugar acompanho seus blogs (ingles e portugues) e acho vc uma referencia na area de Computacao. Parabens!<br />
Gostaria de aproveitar o topico e perguntar: vc ja fez algum trabalho com o Google Calendar? Estou trabalhando num projeto e ainda nao encontrei uma solucao diferente de polling.<br />
Obrigado.<br />
Abracos,<br />
Franklin.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Guilherme Chapiewski</title>
		<link>http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/comment-page-1/#comment-6194</link>
		<dc:creator>Guilherme Chapiewski</dc:creator>
		<pubDate>Fri, 06 Mar 2009 03:26:28 +0000</pubDate>
		<guid isPermaLink="false">http://gc.blog.br/?p=802#comment-6194</guid>
		<description>Hahaha, eh verdade! Isso eh a população do meu bairro provavelmente... Ninguem tinha reparado isso, nem eu :)

Obrigado, vou consertar já já ;)

[ ]s, gc</description>
		<content:encoded><![CDATA[<p>Hahaha, eh verdade! Isso eh a população do meu bairro provavelmente&#8230; Ninguem tinha reparado isso, nem eu <img src='http://gc.blog.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Obrigado, vou consertar já já <img src='http://gc.blog.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>[ ]s, gc</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt</title>
		<link>http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/comment-page-1/#comment-6184</link>
		<dc:creator>Matt</dc:creator>
		<pubDate>Thu, 05 Mar 2009 18:51:30 +0000</pubDate>
		<guid isPermaLink="false">http://gc.blog.br/?p=802#comment-6184</guid>
		<description>Interessante o artigo Guilherme, mas essa calculadora de padeiro tá meio quebrada, não tá não? Você cortou uns três zeros aí da população brasileira =P !

Abs,

Matheus</description>
		<content:encoded><![CDATA[<p>Interessante o artigo Guilherme, mas essa calculadora de padeiro tá meio quebrada, não tá não? Você cortou uns três zeros aí da população brasileira =P !</p>
<p>Abs,</p>
<p>Matheus</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Guilherme Chapiewski</title>
		<link>http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/comment-page-1/#comment-6106</link>
		<dc:creator>Guilherme Chapiewski</dc:creator>
		<pubDate>Tue, 03 Mar 2009 16:49:56 +0000</pubDate>
		<guid isPermaLink="false">http://gc.blog.br/?p=802#comment-6106</guid>
		<description>Pessoal, foi mal pela demora em liberar comentários. Esses dias foram meio corridos :)

E em relação a todos os questionamentos, eu poderia dar várias respostas mas o comentário do Rafael Ferreira foi excepcional: existem várias maneiras de fazer a mesma coisa e cada uma delas pode ser mais apropriada em uma determinada situação.

:D

[ ]s, gc</description>
		<content:encoded><![CDATA[<p>Pessoal, foi mal pela demora em liberar comentários. Esses dias foram meio corridos <img src='http://gc.blog.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>E em relação a todos os questionamentos, eu poderia dar várias respostas mas o comentário do Rafael Ferreira foi excepcional: existem várias maneiras de fazer a mesma coisa e cada uma delas pode ser mais apropriada em uma determinada situação.</p>
<p> <img src='http://gc.blog.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>[ ]s, gc</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rafael de F. Ferreira</title>
		<link>http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/comment-page-1/#comment-6105</link>
		<dc:creator>Rafael de F. Ferreira</dc:creator>
		<pubDate>Tue, 03 Mar 2009 13:17:43 +0000</pubDate>
		<guid isPermaLink="false">http://gc.blog.br/?p=802#comment-6105</guid>
		<description>Many ways to skin a cat:

http://roy.gbiv.com/untangled/2008/paper-tigers-and-hidden-dragons
http://bitworking.org/news/380/bloom-filter-resources</description>
		<content:encoded><![CDATA[<p>Many ways to skin a cat:</p>
<p><a href="http://roy.gbiv.com/untangled/2008/paper-tigers-and-hidden-dragons" rel="nofollow" onclick="urchinTracker('/outgoing/roy.gbiv.com/untangled/2008/paper-tigers-and-hidden-dragons?referer=');">http://roy.gbiv.com/untangled/2008/paper-tigers-and-hidden-dragons</a><br />
<a href="http://bitworking.org/news/380/bloom-filter-resources" rel="nofollow" onclick="urchinTracker('/outgoing/bitworking.org/news/380/bloom-filter-resources?referer=');">http://bitworking.org/news/380/bloom-filter-resources</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marcelo Martins</title>
		<link>http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/comment-page-1/#comment-6041</link>
		<dc:creator>Marcelo Martins</dc:creator>
		<pubDate>Sat, 28 Feb 2009 17:30:16 +0000</pubDate>
		<guid isPermaLink="false">http://gc.blog.br/?p=802#comment-6041</guid>
		<description>Não existira um problema, talvez maior, do lado do twitter por exemplo, para que em cada post verificar quais inscrições se interessam por ela?</description>
		<content:encoded><![CDATA[<p>Não existira um problema, talvez maior, do lado do twitter por exemplo, para que em cada post verificar quais inscrições se interessam por ela?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aguinelo Pedroso</title>
		<link>http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/comment-page-1/#comment-6026</link>
		<dc:creator>Aguinelo Pedroso</dc:creator>
		<pubDate>Fri, 27 Feb 2009 19:33:55 +0000</pubDate>
		<guid isPermaLink="false">http://gc.blog.br/?p=802#comment-6026</guid>
		<description>Ja trabalhei em uma empresa de Mobile Legacy Integration que necessitava de uma solução nestes parametros, porém a cabeça pquena dos arquitetos que provavelmente nem sabem o que é XMPP impediu de chegarmos a esse patamar.

Muito interessante sua idéia e com certeza uma prova de conceito pode ajudar bastante a esclarecer a questão da escalabilidade.</description>
		<content:encoded><![CDATA[<p>Ja trabalhei em uma empresa de Mobile Legacy Integration que necessitava de uma solução nestes parametros, porém a cabeça pquena dos arquitetos que provavelmente nem sabem o que é XMPP impediu de chegarmos a esse patamar.</p>
<p>Muito interessante sua idéia e com certeza uma prova de conceito pode ajudar bastante a esclarecer a questão da escalabilidade.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Heleno Alves</title>
		<link>http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/comment-page-1/#comment-6023</link>
		<dc:creator>Heleno Alves</dc:creator>
		<pubDate>Fri, 27 Feb 2009 16:04:03 +0000</pubDate>
		<guid isPermaLink="false">http://gc.blog.br/?p=802#comment-6023</guid>
		<description>Muito instigante a apresentação do XMPP, principalmente como conceitos são reciclados para atender novas demandas a todo momento na nossa área. Analisei este protocolo ano passado a fim de  viabilizar um IM corporativo e me afeiçoei muito pelo OpenFire, servidor Jabber Open Source.
Sobre a arquitetura pull e push tenho acompanhado a evolução do projeto Grizzly, agora Atmosphere, que são plugados a servidores java.
Mas com o protocolo aberto XMPP pode ser atingido um efeito similar em ambientes com tecnologias distintas.</description>
		<content:encoded><![CDATA[<p>Muito instigante a apresentação do XMPP, principalmente como conceitos são reciclados para atender novas demandas a todo momento na nossa área. Analisei este protocolo ano passado a fim de  viabilizar um IM corporativo e me afeiçoei muito pelo OpenFire, servidor Jabber Open Source.<br />
Sobre a arquitetura pull e push tenho acompanhado a evolução do projeto Grizzly, agora Atmosphere, que são plugados a servidores java.<br />
Mas com o protocolo aberto XMPP pode ser atingido um efeito similar em ambientes com tecnologias distintas.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tiago Albineli Motta</title>
		<link>http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/comment-page-1/#comment-6001</link>
		<dc:creator>Tiago Albineli Motta</dc:creator>
		<pubDate>Thu, 26 Feb 2009 20:26:52 +0000</pubDate>
		<guid isPermaLink="false">http://gc.blog.br/?p=802#comment-6001</guid>
		<description>Se o Twitter não tem, pode-se fazer um para o Twitter. Mantendo o esquema de pooling nele do projeto X ao Twitter, mas habilitando um serviço de inscrição no projeto X. Muito interessante e promissor.</description>
		<content:encoded><![CDATA[<p>Se o Twitter não tem, pode-se fazer um para o Twitter. Mantendo o esquema de pooling nele do projeto X ao Twitter, mas habilitando um serviço de inscrição no projeto X. Muito interessante e promissor.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bruno Laturner</title>
		<link>http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/comment-page-1/#comment-5981</link>
		<dc:creator>Bruno Laturner</dc:creator>
		<pubDate>Wed, 25 Feb 2009 17:44:34 +0000</pubDate>
		<guid isPermaLink="false">http://gc.blog.br/?p=802#comment-5981</guid>
		<description>Escalabilidade não é um problema, é um domínio bem entendido por diversas áreas, bibliotecários já trabalham e estudam isso desde os tempos dos monges copistas. Quem diga então a logística, praticada nos tempos do império romano.

Problema é querer escalar e ainda ter controle rígido sobre os dados. É basicamente o quanto General confia no Coronel, que confia no Major, que confia no Capitão, que confia no Tenente que instrui os aspiras pra executar as instruções lá de cima.

Basicamente, quem não confia, não escala.</description>
		<content:encoded><![CDATA[<p>Escalabilidade não é um problema, é um domínio bem entendido por diversas áreas, bibliotecários já trabalham e estudam isso desde os tempos dos monges copistas. Quem diga então a logística, praticada nos tempos do império romano.</p>
<p>Problema é querer escalar e ainda ter controle rígido sobre os dados. É basicamente o quanto General confia no Coronel, que confia no Major, que confia no Capitão, que confia no Tenente que instrui os aspiras pra executar as instruções lá de cima.</p>
<p>Basicamente, quem não confia, não escala.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andre Brito</title>
		<link>http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/comment-page-1/#comment-5976</link>
		<dc:creator>Andre Brito</dc:creator>
		<pubDate>Wed, 25 Feb 2009 14:43:15 +0000</pubDate>
		<guid isPermaLink="false">http://gc.blog.br/?p=802#comment-5976</guid>
		<description>Acho que agora ficou muito mais que provado que o James pisou na bola quando falou: &quot;Twitter guys made wrong project decision. That&#039;s why is slow.&quot;. :)
Valeu pela conversa sobre o TCC. Ajudou bastante! E só pra finalizar, &quot;pull&quot; e &quot;push&quot; me lembram Kanban (obrigado mais uma vez).

Abraço.</description>
		<content:encoded><![CDATA[<p>Acho que agora ficou muito mais que provado que o James pisou na bola quando falou: &#8220;Twitter guys made wrong project decision. That&#8217;s why is slow.&#8221;. <img src='http://gc.blog.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Valeu pela conversa sobre o TCC. Ajudou bastante! E só pra finalizar, &#8220;pull&#8221; e &#8220;push&#8221; me lembram Kanban (obrigado mais uma vez).</p>
<p>Abraço.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tetsuo</title>
		<link>http://gc.blog.br/2009/02/25/arquitetura-pull-ou-push-qual-escala-mais/comment-page-1/#comment-5975</link>
		<dc:creator>Tetsuo</dc:creator>
		<pubDate>Wed, 25 Feb 2009 14:16:59 +0000</pubDate>
		<guid isPermaLink="false">http://gc.blog.br/?p=802#comment-5975</guid>
		<description>&quot;Apesar de ser eficiente nao é lá muito eficaz.&quot;
Não seria o contrário? Funciona, portanto é eficaz, mas faz mais requisições do que você gostaria, portanto não é eficiente. :)

Em relação à abordagem push, qual a vantagem, se pelo que você diz haveria um problema de escalabilidade, que era o que você provavelmente estava tentando resolver com o push? Ou era só a questão da eficiência (menos tráfego de rede)? Ao meu ver, a única vantagem (fora a rede) é que você receberia a notificação um pouco mais rápido, já que não teria que esperar o intervalo do polling.

O polling não (necessariamente) é tão custoso, pois o HTTP tem mecanismos de verificação de alteração de um recurso. Se, por exemplo, você pudesse (não conheço a API do Twitter) criar uma busca pré-definida e associá-la a uma URL &#039;GET&#039;, o seu robô poderia, antes de solicitar o conteúdo da busca, perguntar ao servidor quando foi a última &#039;alteração&#039;, isto é, qual foi a última vez que alguém escreveu tal palavra. Esta requisição envolve apenas os headers, então você economiza bastante tráfego, e utiliza a arquitetura &#039;pull&#039;, que teoricamente é bem mais fácil de escalar.

Certo, mas uma coisa é que solução permite uma melhor escalabilidade, outra coisa é que solução é a mais apropriada. Digo, quando você tem alguma possibilidade de decidir como a coisa é feita do outro lado, claro. Quando você utiliza um serviço como o Twitter, você é um mero usuário, e pode apenas aceitar a API que eles fornecerem.

Porém, quando a escolha é sua, que arquitetura utilizar? Essa sim é uma pergunta interessante :)

Eu já trabalhei uma vez com algo deste tipo, e acredito que o critério mais apropriado é: o maior interessado deve ter o controle.

Se o maior interessado é quem, requisita a informação, ele deve poder fazer o &#039;pull&#039;, pois em caso de falha no sistema que fornece a informação, o requisitante pode simplesmente perguntar de novo quando este voltar, ao invés de ficar dependendo da capacidade de recuperação do outro (mensagens e eventos perdidos).

E, se o maior interessado é do fornecedor da informação (ele quer te vender alguma coisa, por exemplo), aí sim o sistema deveria ser &#039;push&#039;, já que o ônus da recuperação e reenvio de mensagens perdidas seria feito pela parte mais interessada.

A vantagem de deixar isto para a parte mais interessada é que a chance é maior dela criar um esquema mais confiável de recuperação de falhas. E também, quando você é a parte mais interessada, e possui o controle da situação, você pode &#039;dar um jeito&#039; bem mais facilmente, em caso de falha da outra ponta.

Mas no fim, é claro, &#039;depende&#039; :)</description>
		<content:encoded><![CDATA[<p>&#8220;Apesar de ser eficiente nao é lá muito eficaz.&#8221;<br />
Não seria o contrário? Funciona, portanto é eficaz, mas faz mais requisições do que você gostaria, portanto não é eficiente. <img src='http://gc.blog.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Em relação à abordagem push, qual a vantagem, se pelo que você diz haveria um problema de escalabilidade, que era o que você provavelmente estava tentando resolver com o push? Ou era só a questão da eficiência (menos tráfego de rede)? Ao meu ver, a única vantagem (fora a rede) é que você receberia a notificação um pouco mais rápido, já que não teria que esperar o intervalo do polling.</p>
<p>O polling não (necessariamente) é tão custoso, pois o HTTP tem mecanismos de verificação de alteração de um recurso. Se, por exemplo, você pudesse (não conheço a API do Twitter) criar uma busca pré-definida e associá-la a uma URL &#8216;GET&#8217;, o seu robô poderia, antes de solicitar o conteúdo da busca, perguntar ao servidor quando foi a última &#8216;alteração&#8217;, isto é, qual foi a última vez que alguém escreveu tal palavra. Esta requisição envolve apenas os headers, então você economiza bastante tráfego, e utiliza a arquitetura &#8216;pull&#8217;, que teoricamente é bem mais fácil de escalar.</p>
<p>Certo, mas uma coisa é que solução permite uma melhor escalabilidade, outra coisa é que solução é a mais apropriada. Digo, quando você tem alguma possibilidade de decidir como a coisa é feita do outro lado, claro. Quando você utiliza um serviço como o Twitter, você é um mero usuário, e pode apenas aceitar a API que eles fornecerem.</p>
<p>Porém, quando a escolha é sua, que arquitetura utilizar? Essa sim é uma pergunta interessante <img src='http://gc.blog.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Eu já trabalhei uma vez com algo deste tipo, e acredito que o critério mais apropriado é: o maior interessado deve ter o controle.</p>
<p>Se o maior interessado é quem, requisita a informação, ele deve poder fazer o &#8216;pull&#8217;, pois em caso de falha no sistema que fornece a informação, o requisitante pode simplesmente perguntar de novo quando este voltar, ao invés de ficar dependendo da capacidade de recuperação do outro (mensagens e eventos perdidos).</p>
<p>E, se o maior interessado é do fornecedor da informação (ele quer te vender alguma coisa, por exemplo), aí sim o sistema deveria ser &#8216;push&#8217;, já que o ônus da recuperação e reenvio de mensagens perdidas seria feito pela parte mais interessada.</p>
<p>A vantagem de deixar isto para a parte mais interessada é que a chance é maior dela criar um esquema mais confiável de recuperação de falhas. E também, quando você é a parte mais interessada, e possui o controle da situação, você pode &#8216;dar um jeito&#8217; bem mais facilmente, em caso de falha da outra ponta.</p>
<p>Mas no fim, é claro, &#8216;depende&#8217; <img src='http://gc.blog.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

