Marcelio Leal

Indo num caminho que talvez não leve aonde se quer chegar…

Posts Tagged ‘twitter’

Twitter, Ruby on Rails, Escalabilidade e outras coisas…

Posted by marcelioleal em maio 5, 2008

Pela lista PHP-MG vi a notícia que o Twitter (grande case em Ruby on Rails) estava pensando em migrar para outra plataforma: PHP ou Java.

O principal motivo, segundo a notícia, seria a estabilidade e a escalabilidade(A Wikipedia não é o melhor lugar para se um conceito aplicado à este caso, mas em todo caso tá linkado) da plataforma/framework.

O Blog PHPZine explica bem o caso e cita a notícia inicial no Techcrunch. Só discordo quando ele diz que o Ruby on Rails é um divisor de águas. De fato, a sintaxe do Ruby é muito show, porém o Rails não é, e nem foi, algo revolucionário. Muitos outros frameworks e geradores de artefato já executavam a mesma idéia. Porém, ele realmente se tornou o mais famoso e público caso de sucesso destes tipos de aplicações.

No blog do Akita On Rail, ele cita que já foi desmentido esta afirmação e complementa seu artigo expondo seus argumentos em favor da tecnologia. Cito aqui duas afirmações que comento logo abaixo.

A primeira é que escalabilidade é um mito e que qualquer coisa escala. De fato isso não é verdade. Escalabilidade é um requisito não-funcional que envolve custo-benefício, portanto, depende do ambiente que está configurado para aplicação, em especial, as restrições para este ambiente. A escalabilidade tembém varia de acordo com o objetivo do sistema. Portanto, a escalabilidade é um conceito que depende de contextualização.

É um fato que PHP precisa de menos hardware para aplicações Web que JAVA, ou seja, em condições iguais de hardware (hardware limitado – “servidores reais”) e aplicações normais, PHP é mais escalável. Porém essa afirmação pode ser contextada quando precisamos de transações assíncronas, temos maior hardware (grandes servidores SUN), etc.

Jon Udell já havia falado sobre isso, porém é importante dizer que ele não quis afirmar que todas as coisas são escaláveis, mas que não podemos afirmar, como geralmente se afirma, que determinada plataforma não é escalável sem contextualizar.

Outro aspecto importante é se os frameworks influenciam na escalabilidade. É claro que sim, porém menor escala que a plataforma. De fato, não é só trocando o framework que teremos resolvido a maioria dos problemas, porém ele podem de fato ter uma influência direta na performance/escalabilidade. Há algum tempo atrás conversando com o colega Aldrin Leal, discutiamos sobre o overhead que o hibernate adicionava em uma aplicação. Nesta ocasião ele fez alguns testes mudando a máquina virtual, compilando o código, etc. E conseguiu resultados bem melhores que as configurações iniciais.

Da mesma maneira faz diferença, em alguns casos, utilizar o padrão Active Record e o Data Mapper, que são padrões, que geralmente, estão encapsulados pelos frameworks.

Anúncios

Posted in php, Software Livre | Etiquetado: , , , | 2 Comments »