Twitter muda front-end de Ruby para Java

Alguém tem ideia de como é realizada a troca, como é que eles “dizem” que a partir de agora será uma o front de Java e não o de Ruby? Deve ter algum processo por trás disso, não deve ser só subir a versão :lol:

[mode troll on]
Com certeza se tivessem desenvolvido o twitter em assembly não teriam estes problemas
[mode troll of]

[color=olive](em ordem aleatória)[/color] kenobi, luca, marcosalex, chun, kicoloco, cv, vini godoy, josenaldo, thingol, paulo silveira, mauricio linhares, felegund… esses são os que lembro agora… sempre leio o que escrevem… todos muito bons! :wink:

[color=olive](em ordem aleatória)[/color] kenobi, luca, marcosalex, kicoloco, cv, vini godoy, josenaldo, thingol, paulo silveira, mauricio linhares, felegund… esses são os que lembro agora… sempre leio o que escrevem… todos muito bons! :wink:[/quote]

esse felegund so eu? nossa quase chorei agora :shock:

[quote]qualquer latência que é colocada no percurso da informação (que vem de bolsas
de valores) é ruim para o negócio da empresa[/quote]

Falta de integração é ruim. Se twitter usa http corretamente não precisava reescrever tudo pra ganhar 600 milisegundos.

Vergonha!

não vou nem me aprofundar nessa questão… :roll:

[quote=Kenobi]
A VM entretanto é avançadíssima realmente e como o Maurício disse, vai demorar muito até outras chegarem no nível. Contudo, a idéia da VM é se tornar cada vez mais plural e talvez no futuro tenhamos uma outra linguagem, melhor desenhada, fazendo uso dos seus recursos.

Scala é uma forte candidata, isso sem contar com coisas que estão vindo, como The Ceylon Project - http://blog.talawah.net/2011/04/gavin-king-unviels-red-hats-top-secret.html[/quote]

Eu diria que já temos essa linguagem melhor desenhada e ela é Scala. Hoje Scala já é mais rápida que o Java inclusive pra muitos trabalhos, ela está evoluindo a passos largos e não tem nenhuma grande empresa enterprisey por trás pra congelar a linguagem numa versão específica. Já vi muita gente dizendo, inclusive, que as vezes a linguagem muda até demais.

Agora na versão 2.8 eles resolveram muitos dos pain points mais conhecidos (e reclamados) da linguagem e eu acredito que a partir de agora seja seguro investir na linguagem pra deployments em larga escala. Já temos muitos big players investindo e o ecosistema ao redor da linguagem só faz crescer. Além disso muitos dos frameworks conhecidos funcionam perfeitamente com ela, então você não perde o seu investimento já feito no Java.

Quanto a Ceylon, eu, pessoalmente, não boto fé. A idéia deles parece ser um Groovy 2, essa coisa de “vamos fazer um java mais legal” não vai muito longe não, porque você vai acabar batendo de frente com outros problemas que a linguagem tem e que não foram resolvidos porque fazem parte da cultura do java. Sem contar que eles ainda vão começar o projeto, existem vários detalhes pra serem encarados na hora de se implementar uma nova linguagem pra JVM e não e aprende isso do dia pra noite não.

Recomendo quem tiver interesse em ler mais sobre isso a ir dar uma olhada no blog do Charles Nutter, um dos desenvolvedores do JRuby, onde ele fala muito sobre como é desenvolver uma linguagem pra JVM.

Maurício. Interessante… A maioria dos programadores ruby que conheço prefere clojure.

Disse bem, programadores Ruby. Clojure é uma obra de arte, mas é distante demais do Java pra ter algum apelo real pro programador Java comum. Seria ótimo ver pessoas migrando pra Clojure hoje, mas eu não tenho fé que isso vá acontecer tão cedo. Scala é uma linguagem bem mais próxima e as chances de se ver programadores Java realmente usando ela são bem maiores.

Se qualquer uma das duas sair na frente eu já fico feliz, mas se Ceylon ou Groovy terminarem se tornando o padrão eu vou realmente ficar muito desapontado. Vamos ver o que o futuro guarda pras linguagens da JVM.

Na verdade os dois colegas nunca sairiam do GUJ, apenas não encontraram uma oportunidade para discutir o assunto.

Vamos valorizar os tópicos assim colocando opiniões e de preferência sempre citando as fontes.

Quanto à discussão desse tópico, cada caso é um caso, vejam o do Linkedin que começou com tudo em Java e hoje está com Scala/JRuby.

Na verdade os dois colegas nunca sairiam do GUJ, apenas não encontraram uma oportunidade para discutir o assunto.

Vamos valorizar os tópicos assim colocando opiniões e de preferência sempre citando as fontes.

Quanto à discussão desse tópico, cada caso é um caso, vejam o do Linkedin que começou com tudo em Java e hoje está com Scala/JRuby.[/quote]

OMG, isso quer dizer que java não é enterprise? Corram para as colinas

sim, é vc! :wink:

acreditem se quiser, mas tem gente que acha que a decisão do twitter por mudar pra java foi equivocada, que ‘nem tudo é performance’ etc… vai entender… :roll:

No caso do twitter, foi. Mas tem muitos casos que é melhor o sistema ficar um pouco mais lento e ganhar produtividade, por exemplo. Claro, dependendo do quão mais lento.

Sem falar que o Ruby aguentou um volume muito grande, até que a equipe do twitter precisou migrar. Creio que os “meros mortais” vão passar longe desse limite.

Pra 99% das empresas isso é fato, nem tudo é performance. Pra o 1% que o twitter faz parte a diminuição de custos que isso pode gerar deve bater nos milhões de dólares :slight_smile:

O maior problema que temos hoje é que a maior parte das pessoas que está nos 99% acha que está, na verdade, nos 1%.

Pra 99% das empresas isso é fato, nem tudo é performance. Pra o 1% que o twitter faz parte a diminuição de custos que isso pode gerar deve bater nos milhões de dólares :slight_smile:

O maior problema que temos hoje é que a maior parte das pessoas que está nos 99% acha que está, na verdade, nos 1%.[/quote]

Mas eu acho que ha duas fases no que diz respeito a produtividade, uma coisa é quando se esta no inicio do projeto, ou sequer temos o produto pronto ainda, ou até mesmo temo o produto pronto, mas devido ao grande sucesso temos que fazer mudanças muito rapidas;
Outra coisa é quanto ja temos um sistema maduro, e temos apenas que ir melhorando, neste caso não ha aquela pressao enorme no quesito produtividade, e é nesta situação que eu acho que se encontra o twitter atualmente.

se fizeram isso, estão jogando fora o que eles tem mais de valor as pessoas, não é a linguagem que defini se o twitter é uma boa ferramenta. E se foram os estagiarios que fizeram isso, puts, os programadores deveriam aprender com eles então, pois eu sentir no comentario um certo tipo preconceito com estagiarios.

[quote=Mauricio Linhares]
Pra 99% das empresas isso é fato, nem tudo é performance. Pra o 1% que o twitter faz parte a diminuição de custos que isso pode gerar deve bater nos milhões de dólares :slight_smile:

O maior problema que temos hoje é que a maior parte das pessoas que está nos 99% acha que está, na verdade, nos 1%.[/quote]
Falou tudo… concordo 100%.

[]s

[quote=fredferrao]Mas eu acho que ha duas fases no que diz respeito a produtividade, uma coisa é quando se esta no inicio do projeto, ou sequer temos o produto pronto ainda, ou até mesmo temo o produto pronto, mas devido ao grande sucesso temos que fazer mudanças muito rapidas;
Outra coisa é quanto ja temos um sistema maduro, e temos apenas que ir melhorando, neste caso não ha aquela pressao enorme no quesito produtividade, e é nesta situação que eu acho que se encontra o twitter atualmente.[/quote]

O Twitter tinha vários problemas pra se resolver:

  • Base de código em Ruby difícil de se extender
  • Alta latência
  • Modelo single threaded do Rails
  • VM lenta e pouco confiável pra quantidade de acessos que eles tinham (o Twitter foi um dos primeiros grandes clientes do pessoal do Passenger e do Ruby Enterprise Edition)

Na hora de resolver isso, eles não tinham como resolver os problemas do Rails ou do interpretador do Ruby e eles já tinham muito código rodando na JVM com Scala e Java, por que não ir pro lado do Java que seria capaz de fazer o mesmo trabalho? O sistema teria que ser reescrito de qualquer forma, seja em Ruby ou em Java, mas se eles escrevessem o sistema em Ruby continuariam com as desvantagens de estarem executando no MRI, Nada mais correto do que ir além e pular direto pro Java que já ia dar vários avanços de graça.

Quanto a manutenção, acho que entre Java e Ruby não haja uma distância tão grande. Tenho codebases em Ruby e em Java que trabalho diariamente e o maior problema não é a linguagem, mas sim quem escreve o código. É possível escrever código ruim e difícil de manter em qualquer linguagem, a única vantagem do Java nesse caso é que refactorings são mais fáceis.

Me identifico bastante com esta discussão.

Atualmente estou trabalhando em um projeto de enorme concorrência e consumo de dados para um jogo, dos grandes.

Quanto entrei na empresa, o ex “líder técnico” havia feito uma implementação em Ruby (não finalizada) com Mongo DB, com argumentos mais pelo hype e pelo gosto pessoal do que coerência técnica.

A maturidade da JVM é algo inquestionável frente a outras VMs, inclusive a do Ruby, seja ela qual for. Indo além, a maturidade de APIs para o Membase (leia-se, basicamente Memcached persistido) também não era bacana, entre outras soluções já maduras, há anos, para o Java.

Minha proposta foi parar de brigar com a solução, que na verdade era nosso maior problema, e jogar fora tudo feito em Ruby e usar Java puro.

Refiro-me, acrescentando a discussão, que o Java tem soluções (libs, etc) bem mais maduras e estáveis que as providas pelo Ruby, em muitos casos.

Eu adoro programar em Ruby, porém é necessário colocar de lado predileções e decidir com responsabilidade o que você vai sugerir como solução para os projetos que você venha a participar.

Por fim, digo que rendeu muita conversa até resolverem jogar no lixo o que estava pronto, ato este que, por definição, não soa bem para nenhum gerente ou padrinho de projeto, no nosso caso. Hoje estamos muito bem, mais rápidos e tranquilos usando Java puro.