100% Rails ou JRuby?

A pergunta seria endereçada direto pro Fabio Kung, após algumas duvidas que surgiram com a palestra dele no FJ2008, achei mais produtivo compartilhar a dúvida aqui pois outros também vão poder expor seus pontos de vista.

Fabio (e demais) , hoje se tu fosses criar uma aplicação, com uma média de 1.000 acessos concorrentes, vamos usar esse valor para arredondar apenas, e tu tens a opção de moldar toda a arquitetura/infra para disponibilizar essa aplicação.
Levando-se em conta os pontos que citou em sua palestra, tanto os fatores de multi-thread, caches, libs javas disponíveis para uso em ambiente jruby, compartilhamento ou não de dados, essas coisas, tu farias essa aplicação num ambiente 100% ruby ou colocaria um container java para rodar essa aplicação em JRuby?

Queria só que comentasse um pouco (apesar de já ter falado e muito bem na palestra) o por quê de sua escolha e principais disvantagens que vê nos dois ambientes.

A pergunta é meio longa, um pouco genérica, mas espero que tenha ficado claro a dúvida.

Valeu!

boa pergunta, embora eu ñ me interesse por ruby

Tambem gostaria de saber a opiniao do Fabio.

Estou MUITO interessado em projetos Ruby, mas nao existem muitas vagas no Brasil (pelo que andei vendo).

Obrigado

Olá

Vou dar meu pitaco antes do Fábio para não me influenciar pela opinião dele.

Como já disse em outros tópicos, para mim, Ruby é uma linguagem com comandos concisos e poderosos, que permite fazer muitas coisas em menos tempo e escrevendo menos código. Os frameworks Ror ou Merb permitem desenvolver aplicações web com muita agilidade.

Mas há alguns fatores determinantes que poderiam determinar a exclusão de Ruby do leque de escolhas. Um exemplo seria a necessidade de consultas complexas à base de dados em que o modelo simples do Active Record não atenda. Outro exemplo seria a necessidade de usar facilidades disponíveis em Java de um modo que mesmo com JRuby fique muito complicado.

Ainda acho que a resposta deste tipo de pergunta depende muito do grau de conhecimento da equipe e do domínio das tecnologias envolvidas.

Em resumo: não vejo como responder a este tipo de pergunta sem saber todas as informações do projeto. Pode até ser que a melhor escolha não seja Java ou Ruby. Aliás este tipo de escolha foi tema da palestra de ontem do Guilherme e eu concordo 100% com o que ele disse.

[]s
Luca

e prefiro ter um pé em j2ee e o outro em .NET, daqui a pouco ruby fica como php. Eu prefiro apostar minhas fichas no groovy e grails e nas idéias
do seaside

Concordo

[quote=LuksS]e prefiro ter um pé em j2ee e o outro em .NET, daqui a pouco ruby fica como php. Eu prefiro apostar minhas fichas no groovy e grails e nas idéias
do seaside[/quote]
LuksS concordo que você tenha sua opinião sobre o assunto.
O que não é legal é ficar fazendo alegações sem nenhum complemento técnico ou argumento válido para podermos entender seu ponto de vista.
Afinal.
Qual o problema do Ruby ?
Qual o problema do php ?
Por que você gosta mais de groovy ? grails ? seaside ?

Ponha suas idéias a discussão, isso iria agregar muito mais ao fórum do que pitacos sem relevância.

Olá

Concordo[/quote]

Será? Acho que o PHP propiciou fazer o YouTube em pouco tempo. Se ao invés de gente boa em PHP, lá estivessem javeiros de qualidade o site ficaria igualmente bom mas o tempo de desenvolvimento poderia ser um pouco maior.

Na verdade muita gente se prende na discussão sobre qual a melhor linguagem para desenvolver um site e às vezes se esquece de estudar a infra-estrutura. Os caras do YouTube, além de bons em PHP, eram feras nas questões de infra-estrutura. Isto ficou claro para mim em uma entrevista que li de um dos caras da área técnica do you tube.

[]s
Luca

Oi Luca, acho esses bem interessantes esses pontos e isso também me passou pela cabeça, principalmente a parte da grande quantidade de blibliotecas java disponíveis para tudo que é tipo de coisa, por isso a dúvida em analisar as opções de uso ou não do JRuby mesmo se tendo a opção de usar um ambiente “ruby puro”.

Não ache que seja tão complexo/genérico assim minha pergunta, qualquer portal hoje tem esse tipo de necessidade, milhares de acessos concorrentes, gostaria de ater apenas à questão de arquitetura mesmo para a aplicação, claro que é relevante fatores como equipe, tempo de desenvolvimento, mas apenas conceitualmente acho que não precisamos nos “prender” a esses pontos, vamos supor que o intuíto é ditático apenas.
Senão vai aparecer um monte de subdiscuções paralelas que acho que não vão ajudar tanto. :wink:

Valeu pelo seu ponto de vista.

ok, concordo contigo

Antes de tudo eu não trabalho diretamente com php(Deus me livre) e nem ruby
, só com j2ee e .net.

Com Ruby tive minhas experiências pessoais e tirei minhas conclusões pessoais, veja bem pessoais:

  • O rails foi e é o tchan tchan tchan tchan do ruby. Sem dúvida alguma ele contribui de forma gigantesca
    p/ ampliar as idéias tão dinâmicas que ele traz consigo p/ a comunidade de desenvolvedores
  • A comunidade rails tá meio estática … cadê aquele alvoroço quando do lançamento do framework,
    sim é dinâmico, tudo integrado, uniforme … cadê mais ??
    -Eu ñ consegui obter o alto grau de independência entre os componentes de uma aplicação, com tecnologia
    j2me vc tem um punhado de opções. Tdb que no java tem que se aprender 1000 e 1 frameworks p/ fazer uma única
    coisa e então a curva de aprendizado é maior, mais o grau de liberdade oferecido tb é maior
  • Gostei de groovy e ainda mais do grails, redescubri a dinâmica de código depois de ter decepciondo-me com python

Não quero gerar confusão, prefiro parar de postar sobre isso p/ ñ gerar intrigas, só respondi o que foi perguntado.

Concordo[/quote]

Essa história de q Ruby é lento, ruby não vira, era a msm história de Java há alguns anos atrás…

Acho que se hj eu tivesse q fazer uma aplicação de pequeno e médio porte eu arriscaria JRuby, não por apenas aprender, mas porque tem muitos conceitos úteis, mtas coisas que me dão vantagens e isso agilizaria meu tempo.
:smiley:

[quote=Luiz Aguiar]A pergunta seria endereçada direto pro Fabio Kung, após algumas duvidas que surgiram com a palestra dele no FJ2008, achei mais produtivo compartilhar a dúvida aqui pois outros também vão poder expor seus pontos de vista.

Fabio (e demais) , hoje se tu fosses criar uma aplicação, com uma média de 1.000 acessos concorrentes, vamos usar esse valor para arredondar apenas, e tu tens a opção de moldar toda a arquitetura/infra para disponibilizar essa aplicação.
Levando-se em conta os pontos que citou em sua palestra, tanto os fatores de multi-thread, caches, libs javas disponíveis para uso em ambiente jruby, compartilhamento ou não de dados, essas coisas, tu farias essa aplicação num ambiente 100% ruby ou colocaria um container java para rodar essa aplicação em JRuby?

Queria só que comentasse um pouco (apesar de já ter falado e muito bem na palestra) o por quê de sua escolha e principais disvantagens que vê nos dois ambientes.

A pergunta é meio longa, um pouco genérica, mas espero que tenha ficado claro a dúvida.

Valeu![/quote]

Mil acessos concorrentes? Essa volumetria está muito, mas muito errada; ou você está trabalhando em um site de gigantesco volume. Para ter mil acessos concorrentes, um site com tempo de resposta médio de meio segundo (que é lento) estaríamos falando de 2000 requisições por segundo. Isso dá 6.4 milhões de requisições por hora. Um volume desses é compatível com a página de entrada de portais como globo, uol e terra. Você tem certeza?

A grande vantagem em usar JRuby é que o deployment é muito mais simples. Achar mão de obra capaz de lidar com o deployment e operação de java no Brasil é muito mais fácil que para mongrel, mod_rails ou sei lá oque.

Em termos de performance não vai faz muita diferença, ainda mais se for para escalar para esse volume que você sugeriu.

Eu também vi a apresentação do Fabio Kung, e gostaria de dar um pitaco, um tanto quanto polêmico:

1- Não escolha se o Rails vai sobre JRuby ou MRI levando-se unicamente em consideração a performance de cada um. Existe uma “corrida armamentista” entre as várias implementações de Ruby para ver quem é o mais rápido. Portanto, independente de sua escolha, saiba que ela ficará mais rápido com o tempo, basta se preparar (testes automatizados, por exemplo) para fazer atualizações.

2- Não caia no conto do vigário dos “JayRubistas” de que com JRuby “além das bibliotecas do Ruby, você ganha as bibliotecas do Java”, isso é parcialmente verdade. Apesar do Rails puro ser 100% Ruby, algumas bibliotecas extras são implementações nativas em C, que NÃO funcionam em Java e que NEM SEMPRE existem alternativas satisfatórias. Não estou querendo dizer pra nunca se usar JRuby, às vezes se está utilizando Java justamente para aproveitar uma biblioteca ou framework que existe nessa linguagem. Mas é bom pensar um pouco nas suas necessidades, antes de cair de cabeça no JRuby.

3- Se você quer inovação, fique com o MRI (ou YARV, a partir do Ruby 1.9). Esta é a implementação de referência para todas as implementações Ruby existentes, e é onde surgem as novidades. A mesma coisa ocorre com os plugins, onde primeiramente é pensado para o mundo C/Linux, depois para o mundo Java.

Uma outra coisa, ouvi falar do surgimento do mod_rails e em como ele consome menos memória e é mais fácil de se usar. Existe algum benchmark mod_rails com JRuby?

Não entendi por que Rails ou JRuby. Framework vs implementação de linguagem não faz muito sentido, a menos que consideremos também as APIs e frameworks Java.

Alguém aí por favor me corrija se eu estiver errado…

Alguém lembra do Prevayler?

Pois bem, era uma coisa muito UOW, muito NOSSA, portais sendo feitos com ele, o mundo seria à partir daquele dia PRÉ PREVAYLER e PÓS PREVAYLER, tutoriais, discussões…até que… nunca mais ouvi falar dele… ninguém mais tem dúvida… ué… (se alguém tiver algo a falar sobre tal por favor)

No começo, Ruby pra mim ia ter o mesmo destino(apesar de coisas bem distintas), ia ser muito UOW, muito NOSSA, e depois, puff… mas eu vejo com outros olhos agora, não dá pra dizer que é inútil e que ninguém vai usar e que não presta e bla bla bla, ele tá começando agora, estão dando seus primeiros passos, e pessoas como o Kung fazendo o que está fazendo(apostando nele) mostra que não é assim também tão meia boca né?

Eu não escolheria Ruby agora, baseado no que ouvi na palestra: aquela história de Cache, de “Gambiarra likes” para multi-thread… pra que EU, Raul, perderia tempo nessas reviravoltas que com certeza não me agilizariam em nada? Só pra eu aprender a fazer tudo o que é necessário já se foi a agilidade…

Não estou com tempo infelizmente de investir nisso, até gostaria, mas não dá, e felizmente existem pessoas que com o tempo vão melhorar isso, e daqui um tempo QUEM SABE tudo isto será passado e teremos facilidades e “tudo na mão” como o Java?

Eu não aposto mas, espero que dê certo, espero mesmo… mudar sempre é bom…

Cara cê desenterrou o Prevayler das profundesas, nossa!

[quote=RaulCarlin]Alguém aí por favor me corrija se eu estiver errado…

Alguém lembra do Prevayler?

Pois bem, era uma coisa muito UOW, muito NOSSA, portais sendo feitos com ele, o mundo seria à partir daquele dia PRÉ PREVAYLER e PÓS PREVAYLER, tutoriais, discussões…até que… nunca mais ouvi falar dele… ninguém mais tem dúvida… ué… (se alguém tiver algo a falar sobre tal por favor)
[/quote]

O Prevayler é mto bom, era um projeto de futuro até, mas o criador vira e fala q é pra jogar fora o Banco de dados pra usar tal ferramenta, coisas radicais assim nao viram, pq só agora um monte de empresa ta migrando os sistemas pra Java 1.5 sendo que já tem o 1.6, pq ninguem é radical, pq se der problema ninguem quer se responsabilizar…
:smiley:

É exatamente por isso que não aposto no Ruby AGORA, mas espero que dê certo e que todos que estão apostando nele AGORA tenham sucesso…

É a mesma história do JavaScript, quem diria, que depois de tantos anos, bibliotecas tão poderosas como jQuery e ExtJS pudessem ressucitar algo tão pré-histórico e com tão pouca ambição? Esse é o tchan daquilo que foi falado na primeira palestra, não ter receio de misturar tecnologias, temos tudo pra resolver tudo de n maneiras… basta não ser preconceituoso…

Depois que eu disse pra mim mesmo há anos atrás que seria MCAD de qualquer jeito e logo depois tava cagando e andando pro C# por achar que Java era A minha, nunca mais cuspo pro alto…

Sempre que vejo a galera falar de frameworks Web,MVC me vêm à cabeça arquitetura desacoplada, orientada à Serviços. Poucos designers projetam sua aplicação para utilizar tal conceito, como em Rails - REST e hoje olhando o cenário das aplicações que são criadas nas empresas, essas questões como Modelo Canônico de dados, são muito superiores à qual linguagem implementar.

Não vejo ninguém falando de ESB Patterns de Integração … só um desabafo…

Prevayler realmente seria uma boa se tivesse REALMENTE sido concluído de fato, até onde me lembro, não sei se questões como segurança e transações tinham sido implementadas, e se não, então não haveria a mínima possibilidade de utilizar num sistema de grande porte, que exige coisas além do supracitado.
E aproveitando o tema, alguém sabe dos rumos do Prevayler?