O Twitter está abandonando o Ruby. Eu faria o mesmo.

10 de abril de 2009  |  Opinião  | 

twitter

Com certeza você já ouviu muita coisa a respeito do Twitter estar trocando seu código de backend de Ruby para Scala. Mas o Twitter ainda continuará com Ruby on Rails no seu frontend.

Mesmo isso não afetando a vida de ninguém, uma certa polemica foi criada quanto a qualidade dos desenvolvedores do Twitter e principalmente sobre as capacidades do Ruby/Rails. Muitos membros importantes da nossa comunidade internacional escreveram em seus blogs a respeito deste assunto e a grande maioria demonstrou sua insatisfação com a decisão, muitos deles até levantaram quais decisões poderiam ser tomadas afim de melhorar o serviço e continuar com Ruby.

Sendo empático com a equipe do Twitter, eu posso dizer que tomaria a mesma decisão. É evidente que Ruby não é a melhor escolha para o Twitter.

O primeiro ponto que precisamos considerar é que o Twitter cresceu demais. Quando ele foi concebido não se tinha ideia de que faria tanto sucesso. E como é óbvio para qualquer usuário do serviço, dado aos constantes problemas de escalabilidade, ele foi criado com pouco ou nenhum planejamento nesta área, o que é totalmente aceitável para um projeto deste tipo.

Com o sucesso também vieram os problemas. E para ajudar a resolver estes problemas eles precisavam de uma linguagem que tivesse um sistema mais eficiente de threading, uma performance melhor e um baixo consumo de memória, coisas que não são consideradas como pontos fortes do Ruby.

Seguindo este raciocínio, talvez alguns questionem que ainda assim uma boa equipe de Ruby poderia resolver este problema de outra forma, talvez usando algum projeto como o excelente RabbitMQ, mantendo o código em Ruby e sanando grande parte do problema. Sim, tendo Ruby como minha linguagem de programação preferida também gostaria de ver isto acontecendo, mas temos de considerar que aparentemente, e devido a certos comentários feitos por Alex Payne, o twitter parece não ter uma equipe excepcional de Ruby. Mas por outro lado tem Alex, que por ter acabado de escrever um livro sobre Scala deve ser um profundo conhecedor desta linguagem.

Analisando por este angulo, concordo com a escolha e faria o mesmo se estivesse no lugar deles. Só espero que Alex treine muito bem sua equipe para que depois ninguém diga que Scala não escala, pois isto soaria ridículo.


20 Comentários


  1. Mas os problemas que a equipe do Twitter enfrentaram foram causados, em sua maioria, apenas pela implementação da máquina virtual? Se eles trocassem a implementação pra JRuby, resolveria o problema?

  2. Mas que foi engraçado ver a reação histérica de alguns consultores (leia-se Obie e Akita), foi!

    Foi como se eu voltasse no tempo, quando o Rails começou a aparecer, e os consultores Java (me incluo nisso, inclusive) ficaram perturbadíssimos, falando que não era nada daquilo, que Java também podia ser fácil, que era culpa de quem implementava os sistemas e não da linguagem, e blablabla.

    Ruby é não é famoso por ser rápido. O próprio criador da linguagem diz que a performance da linguagem ficou em último plano quando ele a projetou. Isso é um problema? Não quando você tem ‘usuários navegando em algumas páginas do site’ (como Payne mesmo disse), já que o gargalo raramente fica na aplicação, mas no banco ou na rede. Mas, já no backend, se os caras que estão lá, utilizando a linguagem, fazendo um sistema de grande porte, muito maior do que qualquer um de nós vai fazer na vida, estão dizendo que Ruby não serviu pra eles, O QUE DIABOS ALGUÉM TEM QUE FALAR O CONTRÁRIO?!?

    Ficar dizendo ‘mas eles não fizeram direito’ é fácil pra quem está de fora. Exigir que eles sejam super-uber-experts em Ruby pra fazer o sistema ficar com uma performance aceitável é muito fácil. Agora, vai lá, faça um Twitter, depois volta e diz se é assim tão fácil.

    E o pior é que, se eles tivessem feito a porra toda em C, e só fizessem a chamada do Ruby, ninguém falava nada, porque assim que Ruby tem que ser, quando a coisa aperta, você corre pra Assembler (C é assembler estruturado, né). Mas, se eles resolvem mudar pra uma linguagem palatável, com abstrações interessantes para o problema deles, e que TEM CRESCIDO COMO UM COMPETIDOR FORTE AO RUBY, aí eles enlouquecem.

    kkkkkk

  3. Concordo totalmente contigo Carlos.

    Que mal tem? Isso não faz Ruby/Rails ser ruim.

    Usar Ruby para o backend de uma aplicação do tamanho do Twitter NÃO seria o mais indicado e isso é obvio…

    Tá tá tem Jruby, Ruby 1.9, blah blah, mas pq não mudar pra outra linguagem?

    Que mal tem? A mentalidade não tem que ser: “Use a linguagem certa no lugar certo” ou “Tome decisoes certas para coisas obvias”?

    Pq deixar o twitter com problemas e mais problemas, sendo que simplesmente mudar o backend pra outra coisa resolveria tudo? Ok, talvez com algum tipo de estrutura isso seria resolvido, mas Ruby não tem como forte a performace mesmo. Eu não usaria como backend pra uma app do tamanho de milhoes usuarios e crescendo…

    Achei feio varios comentarios bem do tipo “fanboy” de algumas pessoas da comunidade Ruby… Infelizmente isso é exatamente oq muitas pessoas que são contra Ruby/Rails usam pra fazer midia negativa contra Rails.

    Ruby/Rails dá marketing e infelizmente algumas pessoas usam isso.

    Enfim, que mal tem em mudar de Ruby pra outra coisa?

    Somos desenvolvedores oras bolas!

  4. Acho legal isso, a atitude de mudar e perceber as falhas.

    Twitter está certo, tem que mudar, afinal de contas todos nós queremos sombra e água fresca. Se hoje usamos Ruby e por que percebemos isso.

    Esse texto demonstra como é bom estar aberto a mudanças e acompanhar a evolução.

  5. Concordo em boa parte do artigo. Pela entrevista fica claro que o Twitter não usava Ruby de uma maneira sadia (search: greenspunning) mas mesmo se usasse dificilmente teria o resultado esperado.

    De qualquer forma, mudar para RabbitMQ não seria muito diferente de migrar para Scala, já que o servidor de filas seria ainda implementado em algo que não é Ruby.

    []s

  6. Para se ver a ironia da coisa, se eles tivessem anunciado que estariam usando o RabbitMQ eu acredito que não surgiria está polêmica.

    Mas o grande problema no Twitter é que parece que eles gostam muito de reinventar a roda, e o problema é que pelo menos até agora todas as novas rodas saíram quadradas…

  7. Ruby é linda, acho q p frontend é uma solução no mínimo muito boa.
    Mas tem suas desvantagens no backend.
    Acho uma migração boa, a polêmica com certeza esta no fato dos amantes de ruby estarem defendendo com unhas e dentes sua linguagem preferida.

  8. Pena … Sendo em ruby o twitter sempre foi uma boa referencia de aplicação … existe tantas soluções para escalar em apache … mas … boa sorte para eles

  9. Carlos, eles receberam visita pessoal do Alexis, um dos desenvolvedores do RabbitMQ. O cara viu qual é exatamente a necessidade do Twitter e concluiu que o RabbitMQ não era apropriado, e ainda discutiu com eles como os problemas poderiam ser resolvidos (o que influenciou o design do Kestrel). Então não, sair gritando “RabbitMQ” (ou qualquer outro MQ que o pessoal do Twitter falou ter testado) não é solução.

  10. Pra mim, da mesma forma como eles escolheram a linguagem/framework da moda (ao menos à época…), eles estão mudando para (quem sabe?) a nova “linguagem da moda”…

    Então, por que não escolheram uma linguagem “empresarial”, dessas, “famosas”, “suportadas por grandes empresas”?

    Agora o que vai acontecer com Scala é o mesmo que aconteceu com Ruby/Rails assim que o Twitter foi lançado, esperem para ver!

  11. Ruby é bom, mas nao aguentou o tranco? Logo, é uma droga!!!
    Faz assim: continua com o seu Ruby, e reza para sua aplicação nao ser muito utilizada ;) hahhahaha

  12. @Ignobil, eu só posso sentir pena de você.

  13. @Carlos Brando, eu não sou profundo conhecedor do RR, mas o que o Ignobil falou não é totalmente ignorante… (também não estou aqui para polemizar).

  14. @Filipe, O Twitter só é um dos sites mais acessados do mundo no momento e até agora ele é feito em que?

    O que te faz pensar que se ele tivesse sido feito em Java ou C# ou PHP ele aguentaria o tranco?

    Pelos comentários da equipe do Twitter você consegue perceber que nem de longe eles são bons em Ruby. E mesmo assim eles conseguem manter no ar o produto deles.

    Se você é um leitor deste blog vai entender o que eu estou dizendo. Não faz diferença em que tecnologia o software foi feito. A diferença é o quão bom a equipe que você tem é na tecnologia que está utilizando.

    Eu disse que tenho pena de pessoas como o Ignobil, porque pessoas como ele dão todo o mérito a tecnologia. Quando na verdade o mérito e culpa estão sempre no programador.

  15. Olá amigos,

    Bom, vou falar do que acontece comigo.

    Eu desenvolvo sites pela minha empresa a muitos anos e sempre fiz em PHP e algumas coisas em java, e nesses ultimos meses comprei livro de Rails para aprender e até gostei, tanto que tenho 2 sites em Rails (www.preventos.com.br e http://www.devgames.com.br) e desde o início eu percebi que eles eram muito mais lentos que meus sites em PHP com Zend Framework e toda estrutura que criei, como este (www.prsolucoes.com/valeu).

    Então fico pensando todos os dias em trocar minha aplicação de Rails para PHP, pois o PHP já está homologado tanto em pequenos sites/blogs como em aplicações enterprise como as que eu tenho rodando em sites com milhares de acesso e sem problemas de performance.

    Fica ai a minha vivência, mas sinceramente acho que vou voltar pro PHP usando um framework mais robusto que o Zend Framework como Symphony.

    O rails é muito bom, mas peca em algumas coisas realmente.

  16. Estão certícimos. Essa é a verdadeira mentalidade ágil. Usaram RoR para colocar a aplicação no ar o mais rápido possível. Quando os requisitos mudaram e a escalabilidade tornou-se fundamental buscaram tecnologias que atendessem esse novo requisito. Poderiam ter escalado horizontalmente mas talvez escalar bem verticalmente seja um novo requisito tambem.

    O grande problema (como T citou sobre o Akita e Obie) são os rubystas fundamentalistas que acham que Ruby ou RoR são a resposta pra todos os problemas.

    Meu projeto mais ágil foi exatamente assim. Usamos grails por sua excelente compatibilidade com java. Subimos a primeira versão no fim do primeiro sprint e fomos evoluido, reimplementando em java os bottlenecks(que foram poucos). Assim entregamos o que o cliente precisa o mais rápido possível.

    Que o Twiter e Al3x tenham sorte e suas novas empreitadas.

  17. Usa Java então,coisa de nerd babaca.

    Povo de Java tem medo de novas tecnologias e tentar ficar derrubando tudo que existe pq tem medo de mudanças.
    Eu sou foda em java,mas odeio.
    Sou muito mais Ruby.

  18. Não vejo problemas com o ruby, acho que na verdade a linguagem em si, não diz muito a respeito de performance, creio que o uso de uma arquitetura de rede ideal e do banco de dados certo, tornaria a aplicação twiter mais estável, como que vocês acha que o Google comporta milhões de acessos por dia, com a linguagem phyton que não é, mas sim com a qualidade de quem desenvolve a aplicação, na minha opinião a linguagem é a maior desculpa pela falta de planejamento de um projeto, mas fico satisfeito em ver que ele reconheceram o erro.

  19. sério, eu ri muito de uns comentários sem-noção e dos comentários do Carlos Brando! Desculpe, não tenho nada de útil pra adicionar a discussão, mas o q mais chegou perto da minha opinião foi o Kira.

Deixe um comentário