Ruby on Rails é definitivamente o primeiro motivo para qualquer novo programador se interessar por Ruby. É um framework muito estável que conquistou uma posição de destaque. Atualmente criou-se um ecossistema que expandiu além do framework e gerou uma coleção de bibliotecas, ferramentas e serviços. O pacote básico oferece muito: desde um excelente suporte a MVC-Web. O sistema de roteamento ainda é excepcional mesmo comparado a outros frameworks. Apesar de controverso o ORM ActiveRecord evoluiu e se tornou muito estável. Novos patterns de organização como Presenters, Service Objects, Concerns surgiram para facilitar aplicativos maiores. Pacotes como Minitest, RSpec, Factory Girl, Fabricator e outros continuam a tornar os testes mais e mais completos. Também controverso o Asset Pipeline faz o que todo framework deveria fazer como básico: minificar e otimizar assets.

O mundo front-end evoluiu além do JQuery. É trivial integrar os novos frameworks como Backbone, Angular, Ember. O mundo de CSS também evoluiu além do Sass, temos facilmente integrado Twitter Bootstrap, Foundation e outros. E o mundo de templates evoluiu além do ERB e HAML com exemplos como Slim. Enfim, existem opções simples para todos os gostos.

E para facilitar a vida durante o desenvolvimento temos servicos como CodeClimate para análise estática de código, Travis-CI para integração contínua. New Relic continua sendo uma opções completa e robusta de monitoramento em produção e melhoria contínua.

E se quisermos explorar além do básico ainda temos o mundo de NoSQL, Mongoid é a melhor opção para MongoDB. O melhor sistema de execução de tarefas assíncronas é o Sidekiq, que usa Redis. Integrar cache com Memcached chega a ser trivial. E tudo isso numa arquitetura que continua se mantendo "shared nothing", garantindo nossa opções de escalabilidade horizontal.

E se o Ruby MRI não é mais suficiente, sempre temos a opção de usar JRuby e ganhar alta performance com poucas (ou às vezes nenhuma) mudança de código. E com isso temos diversas opções de servidores de aplicação com Unicorn, Passenger e Puma.

Mais do que isso, depois que o tema "assíncrono" ficou na moda por causa de node.js, surgiram diversos serviços que solucionam todos os use cases. Não há mais necessidade de se preocupar com comunicação assíncrona com serviços como Pusher, PubNub e diversos outros.

O stack está bastante completo, é uma combinação muito difícil de equiparar. E além disso o mundo Ruby está evoluindo para outras direções. Uma constatação importante: hoje o mundo está se movendo para a virtualização de servidores e automação de infraestrutura. O primeiro grande exemplo e ainda a melhor opção da categoria que ficou conhecida como IaaS (Infrastructure as a Service) é Amazon Web Services (AWS) EC2. Temos outros como Rackspace Cloud, Digital Ocean e no mundo não-open source temos Microsoft Azure.

Mas nós do mundo Ruby usamos uma categoria acima faz alguns anos: o chamado PaaS (Platform as a Service). A opção mais conhecida é sem dúvida o Heroku onde com um mero "git push" fazemos deployment em quantos servidores quisermos. Além dele ainda temos o Engine Yard Cloud. Agora outra coisa interessante, dentre as maiores opções temos ainda os recém-chegados RedHat OpenShift, VMWare Cloud Foundry, até certo ponto também o Microsoft Azure, a própria Amazon com o AWS Elastic Beanstalk, AWS Opsworks, e o Google com uma opção mais restrita que é o Google App Engine. Existem outros mas vamos ficar com esses mais conhecidos, 7 opções e delas 5 utilizam ferramental e tecnologias Ruby.

O mundo Ruby está evoluindo isso faz algum tempo, começando com ferramentas de automação de infraestrutura que tentam tratar o mundo de hardware como se fosse software e nessa categoria temos Puppet, Chef. Sobre esse ferramental, novas tecnologias como Bosh foram criadas. Essas tecnologias permitiram Heroku, Engine Yard, OpenShift, Cloud Foundry, e o próprio AWS OpsWorks (que é uma interface Web sobre Chef).

Essa evolução no mundo de ferramental de Cloud retorna ao mundo de desenvolvimento mesmo no desktop com ferramentas como Vagrant, que automatiza a montagem do seu ambiente de desenvolvimento. Integrado com ferramentas como o Chef e facilitadores como Berkshelf, temos uma enorme biblioteca para montar ambiente complicados, podemos inclusive configurar rapidamente um ambiente inteiro Cloud Foundry sobre Vagrant.

O que quero dizer com isso? O mundo Cloud não está chegando: ele já está aqui. O ecossistema Ruby colaborou muito no bootstrap do novo mundo Front-end, influenciando práticas, tecnologias e agora faz o mesmo no mundo Back-end, diretamente no motor do Cloud. Além disso o ecossistema permeia hoje todas as etapas de uma solução completa: front-end, back-end, infraestrutura, além de Java, poucos ecossistemas são tão verticais.

Dicas? Comece a estudar ecossistemas como Chef e evoluções de ferramentas como Vagrant. Saber Rails, saber fazer testes automatizados, saber fazer front-end com pipeline automatizado, já pode ser considerado o básico.

comentários deste blog disponibilizados por Disqus