<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rafael Lima &#187; web-services</title>
	<atom:link href="http://rafael.adm.br/tag/web-services/feed/" rel="self" type="application/rss+xml" />
	<link>http://rafael.adm.br</link>
	<description>Empreendedorismo, Web, Agile, Tecnologia, Desenvolvimento, Negócios, Marketing, Aplicação Web, Ruby on Rails.</description>
	<lastBuildDate>Sat, 03 Dec 2011 23:55:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google App Engine vs Amazon EC2</title>
		<link>http://rafael.adm.br/p/google-app-engine-vs-amazon-ec2/</link>
		<comments>http://rafael.adm.br/p/google-app-engine-vs-amazon-ec2/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 18:56:40 +0000</pubDate>
		<dc:creator>Rafael Lima</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[datacenter]]></category>
		<category><![CDATA[escalabilidade]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[tendências]]></category>
		<category><![CDATA[web-services]]></category>
		<category><![CDATA[webapp]]></category>

		<guid isPermaLink="false">http://rafael.adm.br/p/google-app-engine-vs-amazon-ec2/</guid>
		<description><![CDATA[O Google lançou nesta semana o Google App Engine que é uma plataforma de Cloud Computing para qualquer desenvolvedor realizar o deploy da sua aplicação de forma simples num ambiente escalável. A novidade já está causando burburinhos lá fora e realmente tem motivos para tal.
Você já imaginou desenvolver uma aplicação e oferecê-la ao mundo com [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fgoogle-app-engine-vs-amazon-ec2%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fgoogle-app-engine-vs-amazon-ec2%2F" height="61" width="51" /></a></div><p>O Google lançou nesta semana o <a href="http://code.google.com/appengine/">Google App Engine</a> que é uma plataforma de <a href="http://en.wikipedia.org/wiki/Cloud_computing">Cloud Computing</a> para qualquer desenvolvedor realizar o deploy da sua aplicação de forma simples num ambiente escalável. A novidade já está causando burburinhos lá fora e realmente tem motivos para tal.</p>
<p><strong>Você já imaginou desenvolver uma aplicação e oferecê-la ao mundo com a estrutura do Google?</strong></p>
<p>Esta é a proposta! Entenda mais abaixo por que fiquei surpreendido com o App Engine.</p>
<p>Recentemente, escrevendo sobre <a href="http://rafael.adm.br/p/arquitetura-de-servidores-para-aplicacoes-rails/">Arquitetura de servidores para aplicações Rails</a>, citei o Amazon EC2, serviço de virtualização da Amazon Webservices. Quando conheci o EC2 fiquei bastante impressionado em ver como esse tipo de recurso está cada vez mais fácil de ser contratado e utilizado. Como previsto pelo pessoal do <a href="http://www.mit.edu">MIT</a> TI vai se tornar uma commodity como água e luz. A Amazon foi pioneira no serviço e Cloud Computing e fez um ótimo trabalho.</p>
<p><strong>O EC2 é realmente um caso de sucesso e está bastante consolidado, mas o App Engine sai muito na frente nessa corrida justamente por causa da amplitude dos serviços do Google.</strong></p>
<p>Em termos técnicos poderíamos dizer que a Amazon e o Google são excelentes e ambos estão fornecendo serviços de infra-estrutura para o desenvolvedor, mas por que o App Engine sai muito na frente?</p>
<p>Além de oferecer máquinas virtuais, o App Engine oferece a estrutura da tecnologia desenvolvida e usada pelo Google nos seus aplicativos para qualquer desenvolvedor.</p>
<p>Está incluso no &#8220;pacote&#8221; do App Engine:</p>
<ul>
<li>Framework de desenvolvimento &#8211; Bibliotecas e frameworks para facilitar a programação.</li>
<li>Datastore &#8211; Mesma tecnologia usada pelo Gmai</li>
<li>Google Accounts &#8211; Seu usuário poderá ser autenticado para usar sua aplicação com a conta do Google</li>
<li>Relatórios &#8211; Um sistema similar ao Google Analytics que informaŕa sobre as estatísticas do servidor, ou seja, uso de banda, processamento, memória e demais recursos.</li>
<li>Conta Grátis &#8211; Você poderá utilizar gratuitamente com limite de uso para 5 milhoões de pageviews/mês e 500 MB</li>
</ul>
<p>Estes são os aspectos que diferenciam o App Engine do EC2. O principal deles é a conta grátis, pois na Amazon, mesmo o valor sendo baixo, você já começa pagando e  apelo de não pagar NADA é de fato bem mais forte do que o utilizado pela Amazon no seu lançamento de que você paga MUITO POUCO.</p>
<p><strong>Eu tenho algumas restrições quanto ao uso de alguns recursos do App Engine, mas dependendo de como as coisas caminharem, pode ser que este serviço se torne irresistível, como é o caso do próprio Analytics, que todo mundo usa.</strong></p>
<p>Depois dessa análise, arrisco dizer que ambos os serviços não são concorrentes diretos. Acho que a tendência é que o App Engine abocanhe apenas as aplicações web enquanto o EC2 tome conta do resto de aplicativos e processamento que não estejam ligados à sites. Embora a Amazon estivesse caminhando para atender fortemente as aplicações we.</p>
<p>Vamos esperar para ver qual vai ser o resultado de mais uma briga de gigantes!</p>
<p>Abraços e até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.adm.br/p/google-app-engine-vs-amazon-ec2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Cuidado ao usar web services</title>
		<link>http://rafael.adm.br/p/cuidado-ao-usar-web-services/</link>
		<comments>http://rafael.adm.br/p/cuidado-ao-usar-web-services/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 01:57:01 +0000</pubDate>
		<dc:creator>Rafael Lima</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[conectividade]]></category>
		<category><![CDATA[segurança]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[web-services]]></category>

		<guid isPermaLink="false">http://rafael.adm.br/p/cuidado-ao-usar-web-services/</guid>
		<description><![CDATA[Utilizar web-services é muito bom, mas exige alguns cuidados. Nesta semana tive um problema que nunca imaginei que pudesse acontecer.
A conexão do meu servidor com o servidor do web service foi interrompida de uma hora pra outra.
Demorou um tempo para acharmos a causa e até agora o problema não foi resolvido por completo. Já conseguimos [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fcuidado-ao-usar-web-services%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frafael.adm.br%2Fp%2Fcuidado-ao-usar-web-services%2F" height="61" width="51" /></a></div><p>Utilizar web-services é muito bom, mas exige alguns cuidados. Nesta semana tive um problema que nunca imaginei que pudesse acontecer.</p>
<p><span style="font-weight: bold">A conexão do meu servidor com o servidor do web service foi interrompida de uma hora pra outra.</span></p>
<p>Demorou um tempo para acharmos a causa e até agora o problema não foi resolvido por completo. Já conseguimos uma solução paleativa, mas de qualquer forma ainda preciso investigar o por quê do problema ter ocorrido.</p>
<p>Depois de muito chat com os donos do web service, detectamos que o firewall deles começou a bloquear as minhas conexões pois estava  entendendo como sendo um ataque hacker. Muito estranho, mas o que acontecia é que o meu servidor começou a abrir quatro sockets para cada conexão sendo todos eles com a mesma &#8220;source port&#8221;. Por este motivo que o firewal começou a bloquear as conexões.</p>
<p>Agora, por que isso começou a acontecer ninguém sabe. Os possíveis motivos seriam: a) atualização de algum pacote no meu servidor, b) alteração na configuração do gateway do meu datacenter, c) mudança de regras no firewall do web service.</p>
<p>Das duas uma, ou meu servidor sempre mandou os sockets desta maneira e o firewall do web service não  detectava antes, ou ele passou a mandar a partir de uma atualização de pacote no meu servidor ou a partir de uma mudança no gateway do datacenter.</p>
<p>Como eu não realizei nenhuma atualização no servidor, só restam as opções do datacenter ter alterado alguma configuração no gateway ou o web service ter alterado as regras no firewal.</p>
<p style="font-weight: bold">O problema é que ambos dizem que não realizaram nenhuma alteração!</p>
<p>A solução paleativa, foi utilizar o servidor secundário do web service. Eles me passaram o ip e eu configurei no hosts para que o domínio do web service fosse atendido primeiramente pelo ip secundário. Isso resolveu o problema, mas não corrigiu a causa.Já apliquei um patch do grsecurity no kernel, que corrigiria uma possível falha. Não adiantou. Neste final de semana irei atualizar todos os pacotes do servidor, como solicitado pelo meu datacenter, e verei se isso resolve.</p>
<p>Estou acreditando que meu datacenter forçou essa configuração, para poder monitorar as conexões, uma vez que o meu servidor fazia muitas conexões por minuto ao servidor do web service. Mas só poderei cair em cima deles depois que atualizar meu sistema.</p>
<p><span style="font-weight: bold">Situação delicada e neste caso o melhor é prevenir.</span> Por isso o motivo deste post. Eu não imaginava que isso pudesse acontecer e me pegou de surpresa&#8230; Agora já estou me mexendo para evitar que isso aconteça novamente.</p>
<p><span style="font-weight: bold">Ai vão algumas dicas para evitar este tipo de problema com conexões à web services.</span></p>
<ul>
<li>Primeiramente é interessante que você tenha ao menos dois servidores de aplicação, neste caso se der problema em um, você terá o outro de backup. O ideal é que cada um destes servidores estejam em datacenters diferentes, pois caso um datacenter aplique uma política de segurança que cause este problema, você terá tempo de tentar resolver o problema e até configurar um terceiro servidor, enquanto o de backup fica em produção.</li>
<li>Comunique ao web service que você pretende fazer diversas conexões ao serviço deles. Pergunte sobre a política de segurança e sobre as regras do firewall. Se possível passe o IP do seu servidor para que eles possam colocar numa &#8220;white list&#8221;</li>
<li>Comunique seu datacenter sobre o número de conexões que serão feitas á um mesmo IP (do web service). Pergunte sobre as políticas de segurança. Solicite que não haja nenhum tipo de interferência nos pacotes enviados do seu servidor para o servidor do web service.</li>
<li>Prepare um túnel reverso de SSH, desta maneira, caso  você não consiga realizar a conexão, você consegue roteá-la por outro servidor, chamado de &#8220;middle&#8221;, de forma que seu servidor se conecte ao middle e o middle se conecte ao web service.</li>
</ul>
<p>Bem, espero poder ajudar com a experiência que tive. Deixem seus comentários caso tenham alguma sugestão para este caso.</p>
<p>Abraços e até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.adm.br/p/cuidado-ao-usar-web-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arquitetura de servidores para aplicações Rails</title>
		<link>http://rafael.adm.br/p/arquitetura-de-servidores-para-aplicacoes-rails/</link>
		<comments>http://rafael.adm.br/p/arquitetura-de-servidores-para-aplicacoes-rails/#comments</comments>
		<pubDate>Fri, 11 Jan 2008 17:01:07 +0000</pubDate>
		<dc:creator>Rafael Lima</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[datacenter]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[tendências]]></category>
		<category><![CDATA[web-services]]></category>
		<category><![CDATA[webapp]]></category>

		<guid isPermaLink="false">http://rafael.adm.br/p/arquitetura-de-servidores-para-aplicacoes-rails/</guid>
		<description><![CDATA[Eu estudei ontem várias opções de arquitetura para aplicações web, focando um pouco em Rails. Eu queria chegar há uma opção econômica que tivesse alta performance, alta disponibilidade e fosse altamente escalável.
Encontrei este excelente slide entitulado  How to build a state-of-art rails cluster.
Tendo em mãos as informações do slide, entrei no site do Datacenter [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frafael.adm.br%2Fp%2Farquitetura-de-servidores-para-aplicacoes-rails%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frafael.adm.br%2Fp%2Farquitetura-de-servidores-para-aplicacoes-rails%2F" height="61" width="51" /></a></div><p>Eu estudei ontem várias opções de arquitetura para aplicações web, focando um pouco em Rails. Eu queria chegar há uma opção econômica que tivesse alta performance, alta disponibilidade e fosse altamente escalável.</p>
<p>Encontrei este excelente slide entitulado  <a href="http://www.slideshare.net/tim.lossen.de/how-to-build-a-stateoftheart-rails-cluster">How to build a state-of-art rails cluster</a>.</p>
<p>Tendo em mãos as informações do slide, entrei no <a href="https://www.cari.net">site do Datacenter Cari.net</a> e montrei uma cesta de compras com 5 servidores sendo 2 load balancers (web), 2 de aplicação (app) e um de banco de dados (db).</p>
<p>Não saiu caro, fiquei empolgado com a solução. Se eu não me engano algo em torno de $550/mês e um setup de $1.000.</p>
<p>Depois disso continuei lendo sobre outras opções e cai no <a href="http://www.amazon.com/b/ref=sc_fe_l_2?ie=UTF8&#038;node=201590011&#038;no=3435361&#038;me=A36L942TSJ2AJA">Amazon Elastic Compute Cloud</a> ou Amazon EC2 ou só EC2. Eles disponibilizam máquinas virtuais dedicadas por $0,10 por máquina por minuto + uma micharia por consumo de banda, ou seja, você pode ter o equivalente a um processador 1.7gh com 1.75GB RAM 160GB RAM e 250Mb/s de Banda por apenas $72/mês.</p>
<p>Com a grana da primeira opção é possível pagar tranqüilamente 7 máquinas virtuais na Amazon e sem custo de setup.</p>
<p>Encontrei o projeto <a href="http://ec2onrails.rubyforge.org/">EC on Rails</a> que é uma imagem para o EC2 que já vem com tudo instalado para você hospedar um site em Rails. Já vem inclusive com os gems e rake tasks que facilitam o deploy e gerenciamento da máquina virtual.</p>
<p>Fique mais empolgado ainda, mas como nem tudo é mágica, não demorou muito para eu encontrar as restrições. O EC2 não possui IP fixo nem storage persistente. Isso quer dizer que toda vez que a máquina virtual for reiniciada ela terá um novo IP e o disco estará &#8220;vazio&#8221;, ou seja, somente com a imagem, sem nenhum arquivo criado durante a utilização anterior.</p>
<p>O problema do IP fixo pode ser contornado com o <a href="http://weoceo.weogeo.com/">WeoCEO</a>, sistema de load balancing e escalonamento para EC2. Não deixe de ver o <a href="http://weoceo.weogeo.com/video/">vídeo</a>. Este custa $0,05 por máquina por minuto de uso.</p>
<p>A questão da falta de storage permanente a princípio pode ser contornada com o <a href="http://www.amazon.com/gp/browse.html?node=16427261">S3</a>, web service da Amazon para storage.  <a href="http://www.slideshare.net/martin.rehfeld/s3-and-ec2-rails-scenarios">Este slide</a> mostra algumas opções para o banco de dados, que é o problema maior. Todas elas ainda são experimentais. Por enquanto a solução é copiar o banco de dados todo para o S# de tempos em tempos, mas usando esta opção, em caso de falhas, você perde tudo que foi feito do momento do último backup até o momento da falha, o que é inaceitável para sistemas em produção.</p>
<p>Resumindo, o EC2 é uma grande promessa para arquiteturas de aplicações web em produção, mas por enquanto é aconselhável utilizar apenas para ambientes de qualidade (staging).</p>
<p>A princípio o uso do EC2 deve ser realizado apena para processamento, ou seja, recebe dados, processa e joga pra fora. Caso você precise hospedar uma solução database-driven, procure os servidores dedicados.</p>
<p>Este foi um resumo do que estudei ontem, espero que possa ser útil de alguma forma.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafael.adm.br/p/arquitetura-de-servidores-para-aplicacoes-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

