Um Benchmark para Grails e Ruby on Rails, e escalabilidade

Nesta semana o líder do projeto Grails, Graeme Rocher, criou um benchmark para comparar a performance de uma aplicação implementada com Grails e com Rails. O resultado inicial demonstra uma performance melhor para o Grails. Os resultados podem ser vistos aqui.

Ainda acho cedo para chegar a conclusões com 100% de certeza, vamos aguardar o pessoal do Rails se pronunciar. Acredito que o objetivo não foi o de se vangloriar em relação ao Rails, mas apenas o de mostrar para a própria comunidade Grails que o framework tem uma performance bem razoável.

É interessante apontar que no início do post do Graeme, ele faz questão de dizer: "A realidade deste benchmark é que ele é mais para Rails vs Groovy + SpringMVC + Hibernate + Sitemesh. O grails pode até receber algum crédito, mas o trabalho pesado é feito principalmente por Spring e Hibernate.".

Eu acho esse tipo de benchmark importante para acalmar os ânimos dos usuários do Grails que têm grande preocupação com performance. No fim das contas, estamos comparando uma solução que roda na plataforma Java, que utiliza alguns frameworks conhecidos (Spring, Hibernate, etc), com uma solução do Rails. E o resultado, por enquanto, fala por si só. Eu, particularmente, fico ainda mais confortável de seguir utilizando Grails nos meus novos projetos.

Em seguida ao post, a discussão na maillist continuou, e o assunto escalabilidade surgiu, como não poderia deixar de ser. Afinal, performance != escalabilidade.

Para uma aplicação Grails ganhar em escalabilidade, que no fundo é uma aplicação que roda na JVM, há sempre a possibilidade de se colocar esta aplicação sobre o Terracotta (que recentemente ficou open source lançando o Open Terracotta) ou então o Coherence.

Por outro lado, foi sugerida uma solução bem mais simples que pode dar conta da escalabilidade até um certo ponto. Basta colocar o Squid na frente do servidor, recebendo as requisições, e fazendo com que a aplicação Grails retorne corretamente os headers para o Squid. Se precisar de mais escalabilidade, pode-se aumentar o número servidores com Squid. Até um único servidor com Squid, Grails e Tomcat (ou Jetty, ou...) pode ser usado logo de início. Para resumir, esta solução usa o Squid como um Proxy Reverso de cache para fazer um cache do conteúdo de uma aplicação Grails. No fundo poderia ser uma aplicação Grails, PHP, Rails, ....

Por último, mas não menos importante, já que estamos falando de Grails, e consequentemente de Hibernate, um cache para o hibernate usando o EhCache pode também trazer grandes resultados.

Até a próxima...

[]s
Felipe

Aplicação pública feita em Grails com código fonte disponível

Parece que o ano realmente só começa depois do carnaval. Este mês de fevereiro foi bastante movimentado, e março também começou bem agitado. Já se passou mais de um mês desde meu último post. Prometo tentar colocar novos posts com mais frequência.

Algumas coisas que me chamaram a atenção nas últimas semanas foram:
1) Glen Smith criou o site groovyblogs.org . Ested site é uma aplicação feita em Grails, e foi feita como parte do projeto de "desafio 20h". Ele queria ver o que poderia produzir com Grails em 20h. Acabou fazendo este site legal que agrega blogs sobre groovy e grails. Parece brincadeira, mas em 20h ele produziu bastante funcionalidade se olharmos o que é preciso fazer para ter um site com estes requisitos no ar: autenticação, cadastro de usuários, busca do conteúdo dos blogs cadastrados através de seus feeds RSS, varredura da maillist do Grails, entre outros detalhes.

Mais uma vez é a prova do alta produtividade do Grails aliada ao poder de Java e seus projetos open-source. Por exemplo, para buscar os feeds nos diversos blogs cadastrados, ele usou o Apache Commons Http, o que facilitou bastante a vida dele.

Além disso tudo, o site tem seu próprio código fonte disponível, servindo de um belo exemplo de aplicação grails. Download do código aqui. Lá você verá tbem a possibilidade de download do Groogle, que é a solução que o Glen Smith deu para integrar uma aplicação Grails com um mecanismo de busca utilizando o Lucene.


Depois vou falar um pouco sobre outras coisas que vi por aí:


Tanta coisa pra falar....tão pouco tempo.


Abcs
Felipe