Veja os Primeiros Benchmarks Brasileiros e Entenda o Compilador HipHop que Acelera sites em PHP

Autor Convidado: Este post foi escrito por Manuel Lemos, criador do site PHPClasses.org em 1999 e fundador da Icontem, empresa na qual atua desde 2001.

Recentemente funcionários do Facebook criaram um compilador que transforma código de PHP em C++ com o intuito de servir as páginas do Facebook de forma mais rápida e eficiente.

Recentemente, o código desse compilador foi aberto ao público para que todos os sites escritos em PHP possam se beneficiar da aceleração conseguida através da compilação do código de PHP.

A Popularidade da Linguagem PHP

Para quem não sabe, o PHP é uma linguagem de programação criada em 1994 por Rasmus Lerdorf especificamente com o intuito de facilitar a geração de páginas de sites Web. A linguagem PHP pode ser usada para desenvolver outros tipos de aplicações, mas o fato de ter sido particularmente otimizada para a construção de sites Web, levou a que PHP se tenha tornado uma das linguagens mais populares da atualidade, senão a mais popular, para criação de sites Web.
De acordo com sondagem da empresa Nexen, cerca de 1/3 de todos sites no mundo usam PHP para servir as suas páginas.

Sites pequenos e grandes usam esta linguagem. Vários dos sites mais visitados do mundo usam PHP, como: Yahoo, WordPress, Wikipedia, Facebook, etc..

Facebook e PHP

De acordo com o site Alexa.com, mais de 30% dos usuários de Internet de todo mundo usam o Facebook.com diariamente. A tendência é de crescimento acelerado, podendo até vir a ultrapassar o lider de audiência Google ainda em 2011, se o ritmo de crescimento se mantiver assim tão elevado.

Com esta perspectiva de crescimento, o Facebook tem todos os motivos para investir em tecnologia de forma conter os custos de operação, nomeadamente em termos do número de servidores necessário para atender a sua comunidade de usuários, que não para de crescer.

HipHop PHP: o compilador de PHP do Facebook

Perante estes fatos, o Facebook considerou várias alternativas para lidar com o seu crescimento. Uma delas seria reescrever o código de todo site numa linguagem que rodasse de forma mais rápida, como por exemplo C++. Porém, essa opção ia demorar bastante tempo a desenvolver, retardaria a implementação de novos recursos, e aumentaria o custos de contratação de engenheiros qualificados em desenvolvimento em C++.

A opção que acabaram por escolher foi de desenvolver um compilador que convertesse o código de PHP em C++. O código C++ resultante pode ser compilado em código nativo do CPU do servidor usando um compilador de C++ comum como o GCC, para assim executar à velocidade máxima.

Assim, os seus atuais engenheiros poderiam continuar a trabalhar em novos recursos do site em PHP e não gastariam tempo e dinheiro convertendo manualmente o código do site em C++.

A ideia de compilar PHP em código nativo do CPU do servidor, não é uma novidade em si. Anos atrás foram lançados compiladores de PHP, como o Roadsend e o PHC. Porém, é vital para o Facebook controlar o desenvolvimento do compilador de forma a otimizá-lo para rodar o código compilado de forma mais eficiente nos seus servidores.

Liderado por Haiping Zhao, engenheiro chinês do Facebook radicado nos Estados Unidos e ex-funcionário da empresa da rede social Plaxo, o projeto demorou quase 2 anos a ficar pronto para uso. Foi batizado de HipHop for PHP.

Apesar do valor comercial que poderia ser atribuído a um compilador de PHP tão poderoso como o HipHop, o objetivo do Facebook não é a sua comercialização. Por isso decidiram abrir o código do compilador de forma a que a comunidade de desenvolvedores de PHP possa testar e ajudar a melhorar o compilador em benefício de todos.

O código do HipHop foi aberto no dia 20 de Fevereiro depois de grande expectativa criada durante o processo de abertura, dado o entusiasmo gerado pela apresentação prévia do HipHop ao mundo.

O Facebook contratou o engenheiro escocês Scott MacVicar para liderar o processo de abertura de código do projeto. Scott foi desenvolvedor na empresa do conhecido sistema de fóruns vBulletin, também escrito em PHP. Ele é também um dos desenvolvedores ativos do núcleo do projeto do PHP.

Os Ganhos de Performance Proporcionados pelo HipHop PHP

Logo que o código foi aberto, a comunidade de PHP iniciou uma corrida para testar e avaliar a eficiência do HipHop. Os primeiros resultados dos testes de performance mostraram que o HipHop pode gerar código C++ que roda em cerca de 80% menos tempo que o código em PHP que faz uso intensivo do CPU, quando comparado com uma distribuição de PHP comum como a do Zend Server ou XAMPP. Você pode ver todos os Benchmarkings mais detalhados aqui.

O ganho de desempenho de aplicações PHP proporcionado pelo HipHop é um ótimo argumento para atrair os desenvolvedores para o projeto. Porém, em situações reais, as aplicações de PHP não passam muito tempo executando tarefas de uso intensivo de CPU para se beneficiar tanto do eventual ganho de performance.

Na maior parte do tempo, os scripts de PHP executam tarefas em que ficam aguardando sem gastar CPU, como por exemplo acessos a bancos de dados, acesso a arquivos, envio de dados pela rede, etc.. Por isso, os ganhos de performance que o HipHop pode proporcionar têm um peso menor do que muitos poderiam imaginar.

No entanto, o maior benefício proporcionado pelo HipHop, não vem da rapidez em executar tarefas de uso intensivo de CPU.

O que o HipHop pode fazer é compilar todos scripts de PHP de um site e gera um programa executável que funciona como servidor Web. Esse programa substitui a combinação habitualmente usada em servidores Web Apache + PHP. Ou seja, o servidor Web Apache não é mais necessário.

O servidor Web gerado pelo HipHop tem outra particularidade que é de funcionar em modo multi-threaded. Esse modo é diferente do modo pre-fork que é usado habitualmente por servidores Web com Apache + PHP.

Explicar o que são os modos multi-threaded e pre-fork sai do escopo deste artigo por ser um assunto demasiado técnico. O que importa a reter é que os servidores Web multi-threaded podem consumir muito menos memória RAM, quando comparados com a configuração habitual PHP + Apache usando modo pre-fork.

Como a memória RAM é limitada em cada máquina (servidor), o uso de um servidor Web multi-threaded permite que cada máquina possa atender mais usuários acessando simultaneamente o mesmo servidor Web.

Portanto, o grande ganho que projeto HipHop vai trazer para o Facebook e todas empresas que o usarem, é uma redução significativa no número computadores servidores necessários para atender um elevado número de usuários acessando aos seus sites.

O Futuro do HipHop e o PHP

Com a introdução do HipHop, a expectativa para o futuro do PHP é grande. O Facebook declarou que o HipHop está sendo usado hoje em dia em 90% dos seus servidores Web. Porém o projeto ainda não está maduro o suficiente para ser adotado por todo tipo de sites.

O Facebook apenas investiu em adaptar as extensões de PHP que eles precisam para rodar no site deles. Muitas outras extensões ainda não foram adaptadas.

Essa vai ser uma das tarefas que a comunidade de PHP vai poder realizar em conjunto com o Facebook para tornar o projeto mais útil para todos. Talvez quando isso acontecer o Facebook possa usar código compilado pelo HipHop em 100% dos seus servidores Web.

Outro desafio é que o HipHop não implementa a totalidade das funções e sintaxe do PHP. Parte do que falta pode ser conseguido através de um projeto paralelo também do Facebook que é um interpretador de PHP chamado HPHPi.

Uma vez superadas essas limitações técnicas falta saber o que vai acontecer com a implementação hoje em dia considerada oficial do PHP que é baseada no Zend Engine. O Zend Engine foi criado pela empresa Zend. Foi lançado com o PHP 4 no ano 2000.

O que acontece é que o HipHop PHP é o que se chama uma tecnologia disruptiva. O conceito de tecnologia disruptiva foi descrito no livro “The Innovator’s Dilemma”, que é um clássico entre os empreendedores.

O HipHop PHP acaba por fazer com que o Zend Engine se torne tecnicamente obsoleto. Isso pode fazer com que empresa Zend acabe por se tornar desnecessária, apesar de ter tido um papel fulcral no desenvolvimento e popularidade do PHP. Por isso, a chegada do HipHop PHP preocupa, e muito, os dirigentes da Zend.

Até o HipHop ficar maduro e se tornar uma solução viável para todos os sites Web, vai decorrer algum tempo. Espera-se que a Zend repense o seu papel na comunidade de PHP para que o seu negócio sobreviva. Resta-nos aguardar e ver o que se vai passar.

O Sucesso do Facebook e as Oportunidades Criadas para Parceiros

Independentemente do futuro do PHP e da Zend, não restam dúvidas que o futuro da linguagem PHP e dos profissionais que trabalham com esta linguagem é brilhante.

Esta é uma conclusão um tanto irônica. A verdade é que a linguagem PHP não é tecnicamente polida e bem pensada desde o inicio, como outras tais como C++, Java ou Python. Estas 3 linguagens são as principais que o Google usa.

PHP é uma linguagem pragmática. Pouco importa se a sintaxe da linguagem é bela e bem concebida, pois para os usuários que visitam os sites, é indiferente qual é a linguagem usada pelos aplicativos que rodam no servidor Web.

A ironia da conclusão é que faz quase 2 anos que os desenvolvedores de PHP vêm quase suplicando para que o Google suporte PHP na sua plataforma de computação em nuvem App Engine.

Mesmo sabendo da elevada popularidade do PHP entre os desenvolvedores Web, o Google decidiu dar prioridade a Python e Java. Não se sabe se e quando o Google alguma vez vai dar suporte a PHP, mas parece claro que a maior perda é para o próprio Google. Uma maior adoção da plataforma App Engine eventualmente proporcionada pelos desenvolvedores de PHP, bem que poderia ser mais uma fonte de receita significativa do Google.

Reforçando a ironia, a Microsoft se antecipou e já oferece suporte nativo a PHP na sua plataforma de computação em nuvem Windows Azure. Isto resultou do esforço que a Microsoft tem feito para ouvir a comunidade de PHP. É curioso como a Microsoft hoje em dia parece mais aberta que o Google.

Enquanto isso o Facebook disponibiliza desde há muito tempo uma plataforma de criação de aplicações em PHP para se integrarem no Facebook. Como é sabido, essas aplicações do Facebook criadas por parceiros são extremamente populares e contribuem significativamente para o sucesso e receita do Facebook e seus parceiros.

Daqui se pode concluir com clareza que os negócios que têm mais sucesso são os que proporcionam maiores oportunidades para terceiros. Compete a cada empresa saber enxergar essas oportunidades antes que a concorrência o faça.

0 responses to “Veja os Primeiros Benchmarks Brasileiros e Entenda o Compilador HipHop que Acelera sites em PHP

  1. Excelente artigo Manual.

    Torço para que um dia o HipHop seja integrado ao Apache. Ter que deixar de usar o Apache me desanima um pouco pois quanto mais saimos do padrão, mais chato é para migrar o projeto do cliente local para o ambiente web.

    Se isso se passar a ser um padrão, acredito que não vai demorar muito para a zend lançar uma solução padrão e nativa do PHP.

  2. Excelente artigo Manual.

    Torço para que um dia o HipHop seja integrado ao Apache. Ter que deixar de usar o Apache me desanima um pouco pois quanto mais saimos do padrão, mais chato é para migrar o projeto do cliente local para o ambiente web.

    Se isso se passar a ser um padrão, acredito que não vai demorar muito para a zend lançar uma solução padrão e nativa do PHP.

  3. Achei o artigo excelente, mas queria saber um coisa: Se o pessoal da Zend está tão preocupado assim, por que então eles não entram na jogada e contribuem com a implementação 100% do HipHop?

Deixe uma resposta para Igor Escobar Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *