<?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>Marcel Nicolay</title>
	<atom:link href="http://blog.marcelnicolay.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.marcelnicolay.com</link>
	<description>Inovar é uma Arte</description>
	<lastBuildDate>Thu, 16 Jun 2011 21:23:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Kanban como ferramenta de desenvolvimento ágil</title>
		<link>http://blog.marcelnicolay.com/2011/06/kanban-como-ferramenta-de-desenvolvimento-agil/</link>
		<comments>http://blog.marcelnicolay.com/2011/06/kanban-como-ferramenta-de-desenvolvimento-agil/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 21:21:30 +0000</pubDate>
		<dc:creator>marcelnicolay</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[quatix]]></category>

		<guid isPermaLink="false">http://blog.marcelnicolay.com/?p=58</guid>
		<description><![CDATA[Desde de 2009 que trabalho com metodologias ágeis de desenvolvimento de software. Por muito tempo trabalhei com Scrum, que é uma poderosa ferramenta, mas eu sentia que apesar de ser menos prescritiva que RUP ou XP o Scrum ainda tinha algumas prescrições que não se adequavam mais com o processo de trabalho que eu vinha [...]]]></description>
			<content:encoded><![CDATA[<p>Desde de 2009 que trabalho com metodologias ágeis de desenvolvimento de software. Por muito tempo trabalhei com Scrum, que é uma poderosa ferramenta, mas eu sentia que apesar de ser menos prescritiva que RUP ou XP o Scrum ainda tinha algumas prescrições que não se adequavam mais com o processo de trabalho que eu vinha construindo.</p>
<p>Isso ficou bastante evidente quando entrei na Quatix, uma empresa pequena, com uma carteira pequena de clientes, mas que precisava reagir rapidamente as mudanças, para poder se manter na frente dos concorrentes. Venho a alguns meses estudando sobre Kanban, e como seria a melhor forma de empregar essa metodologia que ao mesmo tempo que é muito simples, é também muito poderosa.</p>
<p>O Kanban é a mais adaptativa das metodologias, se aproxima bastante do &#8220;faça da forma que você quiser&#8221;, e é isso que me seduz. Ela prescreve somente 3 regras:</p>
<ul>
<li><strong>Visualize o fluxo de trabalho</strong></li>
<li><strong>Limite o trabalho em progresso</strong></li>
<li><strong>Acompanhe o tempo de execução das histórias</strong></li>
</ul>
<p>Estas 3 regras, ao longo de um processo empírico de experimentações, que deve ser executado todo o tempo através de feedbacks e avaliações constantes do próprio sistema de desenvolvimento, podem ser aliadas a novas regras construídas com o time, transformando o Kanban em um processo totalmente voltado para suas necessidades.</p>
<p>Estamos começando a implantar o Kanban na minha empresa, e montei um workshop para poder apresentar essa ferramenta para todo o time. O que foi mais interessante é que durante a apresentação, diversas discussões e questionamentos foram surgindo, sobre como poderíamos adequar esse processo a nossa maneira de trabalhar, e o legal é que eu não sabia responder, e nem precisava.</p>
<p>Em times auto-organizáveis, essas respostas são criadas e discutidas o tempo todo por todos, as pessoas são fundamentais nesse processo, e é dessa forma que o &#8220;seu&#8221; Kanban é construído. Estou bastante empolgado em dar prosseguimento a esse &#8220;experimento&#8221; e ver o quão longe nosso time pode chegar! Aproveito para compartilhar com vocês a apresentação que fiz.</p>
<div style="width:425px" id="__ss_8331325"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/marcelnicolay/kanban-8331325" title="Kanban - desenvolvimento ágil e lean">Kanban &#8211; desenvolvimento ágil e lean</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8331325" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/marcelnicolay">Marcel Nicolay</a> </div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.marcelnicolay.com/2011/06/kanban-como-ferramenta-de-desenvolvimento-agil/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Quatix &#8211; Vaga para desenvolvedor</title>
		<link>http://blog.marcelnicolay.com/2011/03/quatix-vaga-para-desenvolvedor/</link>
		<comments>http://blog.marcelnicolay.com/2011/03/quatix-vaga-para-desenvolvedor/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 19:12:13 +0000</pubDate>
		<dc:creator>marcelnicolay</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>

		<guid isPermaLink="false">http://blog.marcelnicolay.com/?p=47</guid>
		<description><![CDATA[Somos uma empresa de tecnologia com espírito altamente inovador e empreendedor. Trabalhamos com grandes companhias, que confiam no nosso trabalho e nos vêem como verdadeiros parceiros, capazes de aliar o mais alto padrão de tecnologia da informação as suas necessidades. Trabalhamos com práticas ágeis de desenvolvimento, em um ambiente seguro, altamente colaborativo, que possibilita maior [...]]]></description>
			<content:encoded><![CDATA[<p>Somos uma empresa de tecnologia com espírito altamente inovador e empreendedor. Trabalhamos com grandes companhias, que confiam no nosso trabalho e nos vêem como verdadeiros parceiros, capazes de aliar o mais alto padrão de tecnologia da informação as suas necessidades.</p>
<p>Trabalhamos com práticas ágeis de desenvolvimento, em um ambiente seguro, altamente colaborativo, que possibilita maior integração e sinergia entre todos da equipe. Acreditamos que o maior valor que uma empresa pode ter está nas pessoas que a constituem, por isso, procuramos valorizar nossos profissionais e dar todas as condições necessárias para seu crescimento pessoal e profissional.</p>
<p>Acreditamos que desenvolvimento de qualidade se faz com profissionais de qualidade, motivados, com toda uma estrutura a seu dispôr, com um ambiente saudável, divertido, e com um processo de trabalho voltado para a realidade do nosso dia a dia.</p>
<p><strong>PERFIL</strong></p>
<p>Nós não procuramos um currículo recheado de títulos, cursos e antigas experiências profissionais. Procuramos uma pessoa que entenda nosso espírito de trabalho colaborativo, onde se manter em contínuo aprendizado é mais importante do que qualquer graduação. Nós queremos pessoas proativas, que saibam e principalmente gostem de trabalhar em equipe. O dicionário traduz equipe como um grupo de pessoas que trabalham juntas para alcançar um objetivo em comum, e é isso que nossa equipe faz, trabalha de forma integrada para produzir a melhor experiência para nossos clientes.</p>
<p><strong>REQUISITOS</strong></p>
<p>Nós trabalhamos com as mais variadas tecnologias, e se você conhece alguma delas e tem muita vontade de aprender as outras, nós queremos você. Na Quatix, desenvolvemos a solução de forma completa, desde concepção, arquitetura, implementação, desenvolvimento até configuração de ambientes de produção. Sendo assim, algum requisitos que procuramos no profissional são:</p>
<ul>
<li>Orientação a objetos e padrões de desenvolvimento de software</li>
<li>Code refactoring</li>
<li>Arquitetura de software</li>
<li>Conhecer muito bem uma das linguagens de programação (python, php, ruby ou java)</li>
<li>Facilidade em se comunicar, aprender e ensinar</li>
<li>Gostar de escrever testes</li>
<li>Conhecer técnicas ágeis de desenvolvimento</li>
<li>Conhecimento de sistemas web (HTTP, HTML/JS/CSS, servidores web), infraestrutura e redes</li>
<li>Conhecer algum banco de dados relacional ou não</li>
<li>Saber se adaptar as mudanças</li>
<li>Trabalhar com software livre, contribuindo com a comunidade</li>
</ul>
<p><strong>CONTATO</strong></p>
<p>Se você acredita que tecnologia se faz com qualidade e prazer, entre em contato conosco através do email rh@quatix.com.br. Teremos o maior prazer em recebê-lo no nosso escritório, na Barra da Tijuca, Rio de Janeiro &#8211; RJ, para um conversa.</p>
<p>Ah, fique a vontade para indicar esta oportunidade para seus amigos.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marcelnicolay.com/2011/03/quatix-vaga-para-desenvolvedor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blocos Carnaval RJ / 2011</title>
		<link>http://blog.marcelnicolay.com/2011/03/blocos-carnaval-rj-2011/</link>
		<comments>http://blog.marcelnicolay.com/2011/03/blocos-carnaval-rj-2011/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 21:52:20 +0000</pubDate>
		<dc:creator>marcelnicolay</dc:creator>
				<category><![CDATA[Offtopic]]></category>
		<category><![CDATA[carnaval]]></category>

		<guid isPermaLink="false">http://blog.marcelnicolay.com/?p=42</guid>
		<description><![CDATA[Alô foliões, estou voltando com as atividades desde querido blog, e para começar nada melhor que compartilhar com os amigos minha programação para os bloco desse ano. Sugestões são bem vindas, só comentar ai&#8230; SÁBADO &#8211; 05/03 BOLA PRETA Concentração: Rio Branco com Cinelândia Horário: 8h Céu na terra Concentração:  Santa Teresa. na Pça Odilo [...]]]></description>
			<content:encoded><![CDATA[<div>
<p id="internal-source-marker_0.605202816426754">Alô foliões, estou voltando com as atividades desde querido blog, e para começar nada melhor que compartilhar com os amigos minha programação para os bloco desse ano. Sugestões são bem vindas, só comentar ai&#8230;</p>
<p style="text-align: center;"><strong>SÁBADO &#8211; 05/03</strong></p>
<p>BOLA PRETA<br />
Concentração: Rio Branco com Cinelândia<br />
Horário: 8h</p>
<p>Céu na terra<br />
Concentração:  <a href="http://www.samba-choro.com.br/carnaval/2011/porbairro#santa-teresa">Santa Teresa</a>. na Pça Odilo Costa Neto<br />
Horário: 7h</p>
<p>Empurra que pega<br />
Concentração: Leblon. Delfim Moreira esq. Rita Ludolf<br />
Horário: 15h</p>
<p>Barbas<br />
Concentração : <a href="http://www.samba-choro.com.br/carnaval/2011/porbairro#botafogo">Botafogo</a>. rua Assis Bueno esq. Gal. Polidoro<br />
Percurso completo : Concentra rua Assis Bueno esq. Gal. Polidoro segue Assis Bueno, Arnaldo Quintela, Passagem, Góes Monteiro.<br />
Horário: 16h</p>
<p>Rebarbas<br />
Concentração : <a href="http://www.samba-choro.com.br/carnaval/2011/porbairro#botafogo">Botafogo</a>. Praça Mauro Duarte<br />
Percurso completo : Praça Mauro Duarte, esquina São Manuel e Fernandes Guimarães (PARADO).<br />
Horário: 16h</p>
<p>Empolga as 9<br />
Concentração: Desfile pela Av. Atlântica até a Rua Santa Clara<br />
Horário: 17h</p>
<p>Casuarina<br />
Palco do Rio Marchinhas nos Arcos da Lapa<br />
Horário: 21h\</p>
<p style="text-align: center;"><strong>Domingo &#8211; 06/03</strong></p>
<p>Cordão do Boitatá<br />
Concentração: Rua 1o de Março, Centro<br />
Percurso completo : Concentra Rua 1º Março Altura Trv. Tocantins segue em direção Pça XV segue Assembléia até rua Carmo até 7 setembro voltando para Pça XV onde termina o cortejo e continua com baile no palco.<br />
Horário: 8 hs</p>
<p>BANGALAFUMEGA<br />
Concentração: Rua Jardim Botânico com Pacheco Leão – Jardim Botânico<br />
Horário: 10 hs</p>
<p>Que merda é essa<br />
Concentração : <a href="http://www.samba-choro.com.br/carnaval/2011/porbairro#ipanema">Ipanema</a>. em frente ao Bar Paz e Amor na Rua Garcia D’Ávila, esquina com Rua Nascimento Silva<br />
Percurso completo : Segue pela até a Vieira Souto onde vira em direção ao Jardim de Alah..<br />
Horário: 14h</p>
<p>Simpatia é Quase Amor<br />
Concentração: Praça General Osório – Ipanema<br />
Horário: 15hs</p>
<p style="text-align: center;"><strong>SEGUNDA &#8211; 07/03</strong></p>
<p>Volta Alice<br />
Concentração: Rua Alice, Laranjeiras<br />
Horário: 9 Horas</p>
<p>Corre Atrás<br />
Concentração: Leblon, Segue Gal. Urquiza, Venâncio Flores, vira na Gal. Artigas segue em direção a praia. A dispersão será na Delfim Moreira esq. gal. Artigas.<br />
Horário: 12</p>
<p>Bloco de Segunda<br />
Concentração: Humaitá, Concentra rua Marques, Voluntários da Pátria, Martins Ferreira, São Clemente, Marques.<br />
Horário: 18h</p>
<p>Bangalafumenga<br />
Palco do Rio Marchinhas nos Arcos da Lapa<br />
Horário: 21:30h</p>
<p style="text-align: center;"><strong>TERÇA FEIRA &#8211; 08/03</strong></p>
<p>Carmelitas<br />
Concentração: Largo do Guimarães, Santa Teresa<br />
Horário: 8 Horas</p>
<p>Empurra que pega<br />
Concentração: Leblon. Delfim Moreira esq. Rita Ludolf<br />
Horário: 15h</p>
<p>Clube do Samba<br />
Concentração : Copacabana. Atlântica esq. Santa Clara<br />
Percurso completo : Concentra Atlântica esq. Santa Clara segue até Alm. Gonçalves.<br />
Horário: 17h</p>
<p style="text-align: center;"><strong>SABADO &#8211; 12/03</strong></p>
<p>Mulheres de Chico<br />
Concentração: Praia do Leblon, Posto 12 (palco), Leblon<br />
Horário: 15 Horas</p>
<p style="text-align: center;"><strong>DOMINGO &#8211; 13/03</strong></p>
<p>Monobloco<br />
Concentração: Avenida Presidente Vargas com Avenida Rio Branco, Centro<br />
Horário: 7 Horas</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.marcelnicolay.com/2011/03/blocos-carnaval-rj-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PythonBrasil [6] &#8211; Apresentação do CartolaFC</title>
		<link>http://blog.marcelnicolay.com/2010/10/pythonbrasil-6-apresentacao-do-cartolafc/</link>
		<comments>http://blog.marcelnicolay.com/2010/10/pythonbrasil-6-apresentacao-do-cartolafc/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 13:25:24 +0000</pubDate>
		<dc:creator>marcelnicolay</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[escalabilidade]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[palestra]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[pythonbrasil]]></category>

		<guid isPermaLink="false">http://blog.marcelnicolay.com/?p=39</guid>
		<description><![CDATA[A apresentação na pythonbrasil[6] foi um sucesso, a galera gostou, questionou, foi bem bacana! Os números do cartola assustam um pouco, e as pessoas custam a acreditar no que nós conseguimos fazer com python. A palestra foi motivada em tentar ajudar a galera, que tem problemas semelhantes aos que nós passamos durante o desenvolvimento do [...]]]></description>
			<content:encoded><![CDATA[<p>A apresentação na pythonbrasil[6] foi um sucesso, a galera gostou, questionou, foi bem bacana! Os números do cartola assustam um pouco, e as pessoas custam a acreditar no que nós conseguimos fazer com python. A palestra foi motivada em tentar ajudar a galera, que tem problemas semelhantes aos que nós passamos durante o desenvolvimento do CartolaFC.</p>
<p>Existe muito pouco conteúdo falando de performance em aplicações web feitas em python, e no que puder ajudar podem contar comigo! Segue a baixo a apresentação feita, ficou mais legal do que as anteriores que havia feito, o foco mudou um pouco também, tentei explicar como funciona non blocking I/O, event-based servers, e como extrair o máximo disso com ferramentas como nginx e tornado.</p>
<div id="__ss_5529566" style="width: 425px;"><strong><a title="CartolaFC - uma aplicação python rápida e escalável - pythonbrasil [6]" href="http://www.slideshare.net/marcelnicolay/cartolafc-uma-aplicao-python-rpida-e-escalvel-pythonbrasil-6">CartolaFC &#8211; uma aplicação python rápida e escalável &#8211; pythonbrasil [6]</a></strong><object id="__sse5529566" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cartolafc-umaaplicacaoescalavel-101022081113-phpapp01&amp;stripped_title=cartolafc-uma-aplicao-python-rpida-e-escalvel-pythonbrasil-6&amp;userName=marcelnicolay" /><param name="name" value="__sse5529566" /><param name="allowfullscreen" value="true" /><embed id="__sse5529566" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cartolafc-umaaplicacaoescalavel-101022081113-phpapp01&amp;stripped_title=cartolafc-uma-aplicao-python-rpida-e-escalvel-pythonbrasil-6&amp;userName=marcelnicolay" name="__sse5529566" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/marcelnicolay">marcelnicolay</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.marcelnicolay.com/2010/10/pythonbrasil-6-apresentacao-do-cartolafc/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Nginx &#8211; muito mais que um webserver</title>
		<link>http://blog.marcelnicolay.com/2010/09/nginx-muito-mais-que-um-webserver/</link>
		<comments>http://blog.marcelnicolay.com/2010/09/nginx-muito-mais-que-um-webserver/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 16:35:33 +0000</pubDate>
		<dc:creator>marcelnicolay</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[escalabilidade]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[servidor]]></category>

		<guid isPermaLink="false">http://blog.marcelnicolay.com/?p=23</guid>
		<description><![CDATA[Nginx (pronuncia-se engine X) é um servidor HTTP de alta performance com código aberto e totalmente livre. Foi criado em 2002, pelo russo Igor Sysoev, e teve seu primeiro release liberado em 2004. O Nginx é usado em 6.55% (13.5M) dos domínios ativos no mundo, e esse número vem crescendo exponencialmente. O Nginx é conhecido [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Nginx wiki oficial" href="http://wiki.nginx.org/Main" target="_blank">Nginx</a> (pronuncia-se engine X) é um servidor HTTP de alta performance com código aberto e totalmente livre. Foi criado em 2002, pelo russo <a title="http://sysoev.ru/en/" rel="nofollow" href="http://sysoev.ru/en/">Igor Sysoev</a>, e teve seu primeiro release liberado em 2004. O Nginx é usado em <a title="http://news.netcraft.com/archives/2010/05/14/may_2010_web_server_survey.html" rel="nofollow" href="http://news.netcraft.com/archives/2010/05/14/may_2010_web_server_survey.html">6.55% (13.5M)</a> dos domínios ativos no mundo, e esse número vem crescendo exponencialmente.</p>
<p style="text-align: center;"><img class="aligncenter" title="Nginx" src="http://wiki.nginx.org/local/nginx-logo.png" alt="" width="350" height="90" /></p>
<p>O Nginx é conhecido por ser muito rápido, estável, com uma grande variedade de módulos, com uma configuração muito simples além de consumir poucos recursos computacionais, como CPU e memória. Ele vem sendo utilizado em diversas aplicações, desde de um simples blog pessoal rodando em um VPS com recursos limitados, até aplicações críticas de alta disponibilidade.</p>
<p>Antes de tudo devemos entender como o nginx consegue ser tão performático utilizando-se de tão poucos recursos. Diferente do servidores tradicionais, nginx não utiliza threads para estabelecer conexões. Ao invés disso, ele utiliza uma arquitetura assíncrona, muito mais escalável, orientada a eventos. Isso permite que ele atenda a milhares de conexões simultâneas com pouco uso de memória e cpu. Essa arquitetura orientada a evendos é conhecida como <em><a title="Asynchronous I/O" href="http://en.wikipedia.org/wiki/Asynchronous_I/O" target="_blank">Asynchronous</a></em><a title="Asynchronous I/O" href="http://en.wikipedia.org/wiki/Asynchronous_I/O" target="_blank"> non-blocking I/O</a> e foi concebida em resposta ao <a title="10 mil conexões simultâneas" href="http://www.kegel.com/c10k.html" target="_blank">The C10K problem</a>.</p>
<p>O Nginx pode ser extendido com um grande variedade de módulos, que devem ser compilados junto com o código principal, antes de serem utilizados. Os mais importantes estão integrados a versão principal, e já podem ser utilizados na <a title="Módulos disponíveis na versão padrão" href="http://wiki.nginx.org/NginxModules" target="_blank">instalação padrão</a>, dentre eles destaco: <a title="NginxHttpFcgiModule" href="http://wiki.nginx.org/NginxHttpFcgiModule">FastCGI</a>, <a title="NginxHttpGzipModule" href="http://wiki.nginx.org/NginxHttpGzipModule">Gzip</a>, <a title="NginxHttpMemcachedModule" href="http://wiki.nginx.org/NginxHttpMemcachedModule">Memcached</a>, <a title="NginxHttpProxyModule" href="http://wiki.nginx.org/NginxHttpProxyModule">Proxy</a>, <a title="NginxHttpRewriteModule" href="http://wiki.nginx.org/NginxHttpRewriteModule">Rewrite</a>, <a title="NginxHttpSsiModule" href="http://wiki.nginx.org/NginxHttpSsiModule">SSI</a>, <a title="NginxHttpUpstreamModule" href="http://wiki.nginx.org/NginxHttpUpstreamModule">Upstream</a>.</p>
<p>Principais características do Nginx:</p>
<ul style="margin: 10px 0px 10px 30px; list-style-type: disc;">
<li>Entrega de conteúdo estático, index e listagem de diretórios</li>
<li>Proxy com balanceamento de carga (round-robin ou iphash) com fail-over</li>
<li>Suporte a servidores FastCGI remotos com balanceamentos de carga</li>
<li>Compressão com gzip</li>
<li>SSI com inclusão de arquivos estáticos ou dinâmicos (através de subrequests)</li>
<li>SSL</li>
<li>Poderoso proxy cache reverso, com escrita em disco e configuração fácil e eficiente</li>
<li>Integração direta com <a title="Sistema distribuído de cache de objetos" href="http://memcached.org/" target="_blank">Memcache</a> ou <a title="Banco chave-valor, similar ao memcached" href="http://code.google.com/p/redis/" target="_blank">Redis</a></li>
</ul>
<p>Características avançadas do Nginx:</p>
<ul style="margin: 10px 0px 10px 30px; list-style-type: disc;">
<li>Servidores virtuais baseados em IP ou nome</li>
<li>Suporta conexão keep-alive ou pipeline</li>
<li>Configuração flexível, com timeouts e buffers</li>
<li>Recarrega o arquivo de configurações, sem derrubar as conexões ativas</li>
<li>Página especias de erros HTTP 400-599</li>
<li>Reescrita, muito eficiente, de URLs com uso de expressões regulares</li>
<li>Controle de acesso por IP ou password</li>
<li>Limitação de velocidade para downloads</li>
</ul>
<p>Arquitetura específica do Nginx:</p>
<ul style="margin: 10px 0px 10px 30px; list-style-type: disc;">
<li>Um processo principal com um ou vários workers, que efetivamente manipulam as conexões</li>
<li>Suporte a diferentes formas de manipulação de sockets assíncrona: kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), rt signals (Linux 2.2.19+), /dev/poll (Solaris 7 11/99+), select and poll</li>
<li>Suporte a chamadas de sistema sendfile(): sendfile (FreeBSD 3.1+), sendfile (Linux 2.2+), sendfile64 (Linux 2.4.21+) and sendfilev (Solaris 8 7/01+)</li>
<li>Manipulação eficiente de memória, necessita de somente 2.5M de RAM para manter 10000 conexões keep-alive inativas</li>
<li>Mínimo de operações de cópia de memória</li>
</ul>
<p>Vivemos uma era onde os desafios computacionais são enormes, e esse cenário só tende a piorar. Cada dia temos mais gente acessando e se utilizando dos benefícios da internet, e isso aumenta a complexidade das aplicações, tendo em vista que a grande maioria delas terão que ser desenvolvidas para atender milhares de usuários simultaneamente. E é nesse ponto que entra o Nginx, muito mas que um simples webserver, ele possui características e features indispensáveis no desenho de soluções simples, perfomáticas e escaláveis.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marcelnicolay.com/2010/09/nginx-muito-mais-que-um-webserver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apresentação do novo Cartola FC 2010</title>
		<link>http://blog.marcelnicolay.com/2010/06/apresentacao-do-novo-cartola-fc-2010/</link>
		<comments>http://blog.marcelnicolay.com/2010/06/apresentacao-do-novo-cartola-fc-2010/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 20:57:38 +0000</pubDate>
		<dc:creator>marcelnicolay</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[arquitetura]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tornado]]></category>

		<guid isPermaLink="false">http://blog.marcelnicolay.com/?p=17</guid>
		<description><![CDATA[Compartilhando a apresentação que fizemos na PUC-RJ, sobre a nova arquitetura do Cartola FC 2010. Cartola Fc 2010 &#8211; Uma Arquitetura escalável e performática View more presentations from marcelnicolay.]]></description>
			<content:encoded><![CDATA[<p>Compartilhando a apresentação que fizemos na PUC-RJ, sobre a nova arquitetura do Cartola FC 2010.</p>
<div id="__ss_4529805" style="width: 425px;"><strong><a title="Cartola Fc 2010 - Uma Arquitetura escalável e performática" href="http://www.slideshare.net/marcelnicolay/cartola-fc-2010-uma-arquitetura-escalvel-e-performtica">Cartola Fc 2010 &#8211; Uma Arquitetura escalável e performática</a></strong><object id="__sse4529805" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cartolafc2010-apresentacaofinal-reduzida-100617155033-phpapp01&amp;stripped_title=cartola-fc-2010-uma-arquitetura-escalvel-e-performtica" /><param name="name" value="__sse4529805" /><param name="allowfullscreen" value="true" /><embed id="__sse4529805" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cartolafc2010-apresentacaofinal-reduzida-100617155033-phpapp01&amp;stripped_title=cartola-fc-2010-uma-arquitetura-escalvel-e-performtica" name="__sse4529805" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/marcelnicolay">marcelnicolay</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.marcelnicolay.com/2010/06/apresentacao-do-novo-cartola-fc-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Python Web Performance, apache+modwsgi ou nginx+tornado?</title>
		<link>http://blog.marcelnicolay.com/2010/06/python-web-performance-apache-mod-wsgi-ou-nginx-tornado/</link>
		<comments>http://blog.marcelnicolay.com/2010/06/python-web-performance-apache-mod-wsgi-ou-nginx-tornado/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 01:04:04 +0000</pubDate>
		<dc:creator>marcelnicolay</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tornado]]></category>

		<guid isPermaLink="false">http://blog.marcelnicolay.com/?p=8</guid>
		<description><![CDATA[Já se foi o tempo em que para se desenvolver uma aplicação web em Python se utilizava o bom e velho mod_wsgi do Apache para servi-lá. Essa arquitetura vem deixando de ser utilizada por não escalar e performar tão bem como soluções que integram application servers escritos em Python com web servers como Apache e [...]]]></description>
			<content:encoded><![CDATA[<p>Já se foi o tempo em que para se desenvolver uma aplicação web em <a title="Python" href="http://python.org" target="_blank">Python</a> se utilizava o bom e velho <a title="Mod_Wsgi" href="http://code.google.com/p/modwsgi/">mod_wsgi</a> do <a title="Apache HTTP Server" href="http://httpd.apache.org/" target="_blank">Apache</a> para servi-lá. Essa arquitetura vem deixando de ser utilizada por não escalar e performar tão bem como soluções que integram application servers escritos em <a title="Python" href="http://python.org" target="_blank">Python</a> com web servers como <a title="Apache HTTP Server" href="http://httpd.apache.org/" target="_blank">Apache</a> e <a title="high-performance HTTP server" href="http://wiki.nginx.org/Main" target="_blank">Nginx</a>.</p>
<p>No meu último projeto, precisamos implementar uma solução em python altamente performática. Quando entrei nesse projeto a estrutura que definimos como inicial era a tradicional, quando digo tradicional entenda <a title="Apache HTTP Server" href="http://httpd.apache.org/" target="_blank">Apache</a> + <a title="Mod_Wsgi" href="http://code.google.com/p/modwsgi/">mod_wsgi</a>. Não tinhamos muita experiência em desenvolvimento focado em performance, e foi bem difícil encontrar cases de sucesso que pudessem nos guiar. Diria que quando decidimos implementar o novo <a title="Cartola FC 2010" href="http://cartolafc.globo.com" target="_blank">Cartola FC</a>, fantasy game oficial do campeonato brasileiro, em python, entramos em um túnel completamente apagado e sem luz no final, fomos na cara e na coragem, a fim de provar que performance e escalabilidade não estão ligadas a linguagem e sim a arquitetura da sua aplicação.</p>
<p>Após definir que faríamos em python, pelos benefícios que a linguagem trás, começamos a pensar o que seria a arquitetura ideal de uma aplicação web escrita 100% em <a title="Python" href="http://python.org" target="_blank">Python</a>. Como não tinhamos muito tempo, definimos a estrutura tradicional e seguimos em frente no desenvolvimento, sem deixar de continuar pesquisando a melhor solução.</p>
<p>Após algumas semanas de testes com Apache + mod_wsgi, vimos que não chegava nem perto do que queríamos. Precisávamos de uma aplicação que atendesse 3 mil requisições simultâneas, por máquina. O mod_wsgi não chegava nem perto disso, além de travar com frequência. Foi nesse momento que encontrei uma apresentação feita na pycon de 2007, <a title="Apresentação PyCon 2007" href="http://www.polimetrix.com/pycon/slides/" target="_blank">Scaling Python for High-Load Web Sites</a>, que caiu como uma luva para o nosso problema. Por que não utilizar um web server escrito em <a title="Python" href="http://python.org" target="_blank">Python</a>? Pois é, pensei a mesma coisa!</p>
<p>Agora vem a segunda pergunta, qual utilizar? Sem tempo a perder inciamos os testes com o <a title="Cherrypy" href="http://www.cherrypy.org" target="_blank">CherryPy</a>, podereso e consolidado <a title="Python" href="http://python.org" target="_blank">Python</a> web server que se mostrou robusto e performático nos testes inciais. Só que como você já sabe, nosso problema principal é performance e como atender muitas requisições simultâneas. Sobre as requisições simultâneas, descobri que não era um problema tão novo, como relatado no <a title="C10K Problem" href="http://www.kegel.com/c10k.html" target="_blank">The C10K Problem</a> (o problema das 10 mil conexões simultâneas), e percebi que a solução passaria necessáriamente por um web server non-blocking I/O. Aconselho a leitura do <a title="Brincando com Node.js, Tornado and Thin" href="http://www.akitaonrails.com/2010/03/16/brincando-com-node-js-tornado-and-thin" target="_blank">post do Akita</a>, que faz uma imersão legal sobre non-blocking.</p>
<p><a title="Cherrypy" href="http://www.cherrypy.org" target="_blank">CherryPy</a> apesar de ser um excelente framework, não era non-blocking e isso representaria um problema para nossas pretenções. Pequisando sobre python web server non-blocking, descobri 2 bem legais, um é o <a title="Twisted" href="http://twistedmatrix.com/trac/" target="_blank">Twisted</a>, e o outro nosso amigo <a title="Tornado Web Server" href="http://www.tornadoweb.org/" target="_blank">Tornado</a>. <a title="Twisted" href="http://twistedmatrix.com/trac/" target="_blank">Twisted</a> é uma engine de rede escrita em python, com suporte a diversos protocolos e com um web server non-blocking. Ele é bem completo e complexo, talvez por isso a opção pelo <a title="Tornado Web Server" href="http://www.tornadoweb.org/" target="_blank">Tornado</a>, que é um framework bem enxuto, com um poderoso web server non-blocking e muito simples de ser implementado.</p>
<p>Antes de prosseguir na escolha do melhor python web server, nos questionamos sobre o uso do tradicional <a title="Apache HTTP Server" href="http://httpd.apache.org/" target="_blank">Apache</a>. Lembro que começamos com aquela estrutura tradicional, que caiu por terra com o uso de um web server escrito em python, então porquê continuar com o Apache? Ele só serviria para fazer proxy com a instância do servidor da aplicação, isso enquanto tinhamos uma única instância de <a title="Cherrypy" href="http://www.cherrypy.org" target="_blank">CherryPy</a> rodando por máquina, agora já temos inúmeras instâncias, e como balancear a carga entre elas? Simples, utilizando o <a title="high-performance HTTP server" href="http://wiki.nginx.org/Main" target="_blank">Nginx</a>!</p>
<p style="text-align: center;"><img class="aligncenter" title="Nginx HTTP Server" src="http://wiki.nginx.org/local/nginx-logo.png" alt="" width="350" height="90" /></p>
<p>O <a title="high-performance HTTP server" href="http://wiki.nginx.org/Main" target="_blank">Nginx</a> foi uma descoberta e tanto, ele é um servidor HTTP, assim como o Apache, só que possui alguns módulos bem interessantes, dentre eles o <a title="Nginx Load Balancing Module" href="http://wiki.nginx.org/NginxHttpUpstreamModule" target="_blank">HTTP Upstream</a>, que faz balanceamento de carga via proxy com o servidor da aplicação. Além de possuir esse módulo, o <a title="high-performance HTTP server" href="http://wiki.nginx.org/Main" target="_blank">Nginx</a> é um dos inúmeros servidores escritos para resolver o <a title="C10K Problem" href="http://www.kegel.com/c10k.html" target="_blank">The C10K Problem</a>, pois implementa non-blocking I/O com uso de epoll event handler. Utilizando <a title="high-performance HTTP server" href="http://wiki.nginx.org/Main" target="_blank">Nginx</a>, estaríamos tratando nossas inumeras conexões simultâneas no front end e balanceando a carga entre as instâncias dos servidores de aplicação. Isso melhorou radicalmente nosso desempenho, saimos de 200 conexões simultâneas com apache+mod_wsgi para 3 mil conexões simultâneas, sem consumo de memória e com pouco uso de CPU. Agora já podemos voltar nossas atenções para o application server, que passa a ser o nosso limitante.</p>
<p style="text-align: center;"><img class="aligncenter" title="Tornado Web Server" src="http://www.tornadoweb.org/static/tornado.png" alt="" width="286" height="72" /></p>
<p>Resolvemos então fazer uma implementação com o <a title="Tornado Web Server" href="http://www.tornadoweb.org/" target="_blank">Tornado</a> e confrontar os resultados dos testes com o <a title="Cherrypy" href="http://www.cherrypy.org" target="_blank">CherryPy</a>. Com o <a title="Cherrypy" href="http://www.cherrypy.org" target="_blank">CherryPy</a> o throughput não se mantia estável com o aumento no número de usuários simultâneos, além do alto consumos de CPU por cada instância. Já com o <a title="Tornado Web Server" href="http://www.tornadoweb.org/" target="_blank">Tornado</a> esses números foram animadores, o throughput se mantia linear e estável a medida que aumentávamos o número de usuários simultâneos, além do baixo consumo de CPU e consumo quase 0 de memória.</p>
<p>Nesse momento havíamos definido nossa arquitetura final, quase no quarto mês de um projeto que seria finalizado no seu sexto mês, nada mal! Essa arquitetura contava com 9 máquinas (Intel Quad-Core Xeon 2.5 GHz), cada máquina rodando um <a title="high-performance HTTP server" href="http://wiki.nginx.org/Main" target="_blank">Nginx</a>, balanceando a carga entre 7 servidores de aplicação construídos com <a title="Tornado Web Server" href="http://www.tornadoweb.org/" target="_blank">Tornado</a>, onde cada máquina pode processar 300 R/S (requisições por segundo) que dá 3K conexões simultâneas, pois uma média de 10% das conexões estabelecidas estão realizando alguma operação simultâneamente.</p>
<p>Para quem entrou em um túnel totalmente escuro, acredito que saímos do outro lado com um belo legado de conhecimento e descobertas que pretendo ir compartilhando com vocês. A primeira e mais importante descoberta que fizemos foi essa, performance independe de linguagem. Construa uma boa arquitetura para sua aplicação, e se ela for escrita em python, aconselho utilizar Nginx + Tornado, pois funcionam muito bem juntos. Nos meus próximos posts, irei falar bastante do Tornado e sobre como extrair o máximo dele.</p>
<p>Qualquer dúvida ou sugestão, deixe seu comentário aqui em baixo, terei o maior prazer em respondê-lo.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marcelnicolay.com/2010/06/python-web-performance-apache-mod-wsgi-ou-nginx-tornado/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Welcome back</title>
		<link>http://blog.marcelnicolay.com/2010/05/welcome-back/</link>
		<comments>http://blog.marcelnicolay.com/2010/05/welcome-back/#comments</comments>
		<pubDate>Wed, 12 May 2010 17:39:05 +0000</pubDate>
		<dc:creator>marcelnicolay</dc:creator>
				<category><![CDATA[Sobre]]></category>
		<category><![CDATA[inovar]]></category>

		<guid isPermaLink="false">http://blog.marcelnicolay.com/?p=4</guid>
		<description><![CDATA[É com muito prazer que retomo esse espaço. Depois de alguns meses envolvido em grandes projetos, me senti na obrigação de compartilhar e discutir o que venho aprendendo e fazendo. Tive o prazer e a liberdade de inovar e inovar muito, e é esse o espírito que guiará nossas discuções daqui para frente. Pretendo falar [...]]]></description>
			<content:encoded><![CDATA[<p>É com muito prazer que retomo esse espaço. Depois de alguns meses envolvido em grandes projetos, me senti na obrigação de compartilhar e discutir o que venho aprendendo e fazendo. Tive o prazer e a liberdade de inovar e inovar muito, e é esse o espírito que guiará nossas discuções daqui para frente.</p>
<p>Pretendo falar muito de tecnologia mas sem deixar de lado discuções mais filosóficas, sobre práticas, processos , pessoas e qualquer outra coisa que venha na minha cabeça, afinal de contas é para isso que servem os blogs, estou certo?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marcelnicolay.com/2010/05/welcome-back/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

