Vitor Pamplona

Innovation on Vision: Imaging , Enhancement and Simulation

Rails, Escalabilidade e Twitter

 A notícia já é um pouco antiga, o Twitter pensa em abandonar o Rails porque o mesmo não escala. O mais interessante (do lado negativo) disto tudo é que uma das alternativas é o PHP!

Desde o dia que eu entendi que uma imensa parte (99%?) das aplicações web não passa de aplicações cliente / servidor, onde o servidor é o próprio banco de dados, eu parei de pensar em escalabilidade porque a solução é trivial. Você escala a aplicação Web da mesma forma que escalava as antigas aplicações cliente / servidor, duplica-se os clientes e mantem-se o contexto transacional no banco de dados. Pronto! Sua aplicação agora é escalável (sentiram o poder da frase?). E mais, esta solução é independente da tecnologia usada na parte cliente. Não é o máximo?

Coloque um Apache (ou similar) na frente direcionando os requests para n servidores web (Ruby, Java, PHP, Whatever...), homogeneos ou heterogêneos, que vão se comunicar com n servidores de banco de dados conectados em cluster ou grid (PostgreSQL, Oracle,...). Separe os servidores de bancos de dados em dois grupos: os que consultam e os que alteram. Faça um tunning correto para cada caso e aproveite.

Juro que eu não entendo o que passa pela cabeça de uma pessoa ao dizer que Rails não escala. Como se o problema de escalar fosse inteiramente da tecnologia.      

Posted in Jan 24, 2009 by Vitor Pamplona - Edit - History

Showing Comments

Pena que na prática não é tão simples. Como vc não tem uma empresa do tamanho da que está pensando em migrar, não tem a visão deles. Aliás, a pergunta a se fazer seria, você sabe o que está por trás de tudo isso?
Qual o custo disso na realidade e se realmente o PHP escala melhor que Rails. Realmente, basta um teste idiota e vc já percebe que Rails consome mais que o framework Zend e percebe que se multiplicar por milhões de acessos, vai imaginar quantas máquinas poderão ser economizadas. Sinceramente, não olhe pelo lado desenvolvedor e sim financeiro. Desculpe a crítica, mas não é tecnologia que importa e sim o custo de manter o sistema rodando. Lembre-se, não é uma coisa que muda constantemente, apenas se aperfeiçoa. Rails já tá mais que provado que é bom para projetos de inicio ao fim. Porém, precisa escalar melhor para projetos que não se modificam tanto.
Poderia ser em Assembler se eles achassem mais barato.

- - Ronado P. Dias

- - Posted in May 3, 2008 by 200.207.67.241

Oi Ronaldo.

Aí o problema não é escala, é performance. Não sei se vale a pena migrar agora por causa da performance. Tem muita gente trabalhando em cima das VM para Ruby, aos poucos ela vai deixar de ser lenta, assim como aconteceu com o java.

[] s

- - Posted in May 3, 2008 by Vitor Pamplona

Escalabilidade não fica apenas entre o banco e a aplicação, Vitor. E quanto a acesso ao sistema de arquivos (que vc também distribui para algo como o mogilefs)? E quanto ao processamento de tarefas custosas (que vc também distribui algo como o mapreduce)? E quanto a clientes gordos comendo a sua banda (cache!)? E quanto a distribuir as mensagens para quem está " seguindo " via im (no caso do twitter, que eles provavelmente devem resolver com algum sistema de mensageria)?

Bom, não importa. A noticia foi desmentida: http://twitter.com/ev/statuses/801530348: -)

- - Marcos Silva Pereira

- - Posted in May 5, 2008 by 189.70.28.251

Exato Marcos. Qualquer um destes problemas pode ser resolvido de diversas maneiras em qualquer linguagem. Não é a implementação de um EJB, por exemplo, que vai tornar uma linguagem ou API escalável ou não.

- - Vitor Pamplona

- - Posted in May 5, 2008 by 143.54.13.84

Vitor, o Ola Bini falou sobre isso esses dias.

http://ola-bini.blogspot.com/2008/05/just-add-scaling.html

valeuz...

- - Marcos Silva Pereira

- - Posted in May 6, 2008 by 189.70.105.216

bem mais facil utilizar algo pronto como o hadoop que é feito em java do que reinventar a roda em ruby, nem a microsoft tirou o hadoop da implementação do BING (exemplo) so pra citar o que voce falou de que pode ser resolvido de diversas maneiras em qualquer linguagem, a questão é vale a pena??? não pense so como programador...

- - Odilio Noronha Filho

- - Posted in Aug 10, 2009 by 200.164.107.129

Add New Comment

Your Name:


Write the code showed above on the text below.