Review - Deploying Rails Applications

Posted by Daniel Lopes on 04/02/2009

Atendendo a pedidos vou voltar a escrever os reviews sobre livros que eu havia prometido há um tempo atrás.

Ontém acabei a leitura do livro Deploying Rails Applications , escrito por Ezra Zygmuntowicz da Engine Yard com co-autoria de Bruce Tate (autor do livro Rails Up and Running) , Clinton Begin, Geoffrey Grosenbach (PeepCode) e Brian Hogan.

Ao terminar a leitura de 255 páginas, você fica com a sensação de ter aprendido muita coisa, mas definitivamente não é um livro para iniciantes. Ele cumpre exatamente o que promete, não é um livro aprenda a criar um blog com uma seção coloque online via ftp.

Capítulos

O livro possui uma parte básica, com uma introdução explicandos os ambientes como VPS, servidores dedicados e Shared Host, além de também explicar quando escolher um ou outro e também fazendo um paralelo entre uma mudança de casa e a escolha de uma hospedagem.

Também aborda dicas de como otimizar sua aplicação Rails para entrar em produção. No geral as dicas sobre otimização em Rails são muito boas, com exceção de uma que pessoalmente não sigo, que é colocar classes ActiveRecord dentro das classes de Migration ( apesar de ser até sugerido nos Rails Guides eu pessoalmente não gosto).

Depois de mostrar dicas interessantes sobre Rails, Ezra fala de como preparar um Shared Host e como escolher um servidor de hospedagem. Também dá uma passada geral nos arquivos de configuração do Rails e os principais problemas que acontecem em Shared Host

No 4º capítulo o autor explica sobre virtualização e as vantagens de um servidor Xen para criar virtualização mesmo que você tenha um servidor dedicado. É explicado passo a passo desde a instalação de um servidor com Ubuntu Gutsy Gibbon Server, passando por compiladores GCC, Ruby e RubyGems, Rails, MySql, Subversion, Mongrel, ImageMagick, FastCGI e Apache(ou Nginx se preferir). Ou seja você aprende praticamente tudo que precisará caso queira montar sua VPS do zero ou ter um servidor de Staging decente em seu escritório.

Outra ponto que gostei muito foi o capítulo sobre Capistrano, qualquer um que tenha projeto Rails em produção ( até outra linguagem ou framework) e não sabe o que é Capistrano então não sabe o que está perdendo. Mas o problema do Capistrano é que ele não é fácil de aprender, pois a documentação no site oficial é muito fraca, mas o livro aborda Capistrano de uma forma fantástica onde é possível ver o conhecimento profundo do autor sobre a ferramenta, e como ele consegue transmitir de forma prática e simples. Após ler este capítulo voltei arrumando várias receitas de deploy que eu tinha. Na minha opinião o melhor capítulo do livro.

Em seguida os autores aprofundam em Mongrel, com passo a passo de como configurar um Mongrel Cluster, como usar Monit ou God para monitorar seus processos, além de dicas de como manter FastCGI sobre controle.

Após falar sobre Mongrel temos um capítulo inteiro sobre escalar aplicações através de cluster, servidores espelhos, deploy em múltiplos servidores ( leia vários servers web, ou app servers ou database servers), load balancer via software com Apache ou Nginx, além de uma extensa explicação sobre cluster e sharding de Mysql.

Para finalizar o autor reserva um capítulo para deploy em windows (que confesso não ter lido todo), um capítulo sobre performance (muito bom, mostrando Apach Bench ou HTTPerf e gargalos mais comuns em apps Rails) terminando com um capítulo sobre fronteira onde aborda rapidamente Rubinius(atualmente praticamente morto), JRuby, Yarv(atualmente já lançado como Ruby 1.9) e IronRuby.

Conclusão

O livro é muito bom e vai te deixar por dentro de muita coisa que é praticamente regra quando o assunto é deploy em Rails, então sem dúvida é uma boa compra. Também é marcante o conhecimento profundo dos autores sobre o assunto e como é bem passado os conhecimentos.

Mas como tudo em Rails, deploy também avança muito rápido e mesmo lançado em 2008 o livro acaba ficando desatualizado em pontos como GIT ao invés de Subversion e por não falar nada sobre Phusion Passenger que se tornou praticamente o padrão em deploy para Shared Hosts.

Mas os próprios autores comentam que ao final do livro esperam que ele fique desatualizado rápido pois técnicas de deploy estão sempre mudando, então quem sabe não teremos uma nova edição?

Tirando estes detalhes, é uma leitura obrigatória, livro 5 estrelas.

blog comments powered by Disqus