↓ Ir para o conteúdo principal

← todas as notas

📎 Webclip

[Heroku Tips] Enciclopédia do Heroku

O post explica como usar o Heroku para publicar aplicações Rails com rapidez. Ele descreve os dynos como máquinas virtuais voláteis, mostra os limites de uma configuração gratuita com um único dyno e lembra que tutoriais antigos precisam ser conferidos pela stack usada.

Fichamento
#

  • Heroku é apresentado como um PaaS sobre o Amazon EC2 que automatiza a criação de uma máquina virtual volátil e prepara o ambiente para Ruby.
  • Um dyno é descrito como uma máquina virtual pequena, com 4 cores, até 512 MB de RAM, sem swap file e sem persistência de arquivos, por isso uploads devem ir para o Amazon S3.
  • A configuração gratuita com um único dyno e PostgreSQL compartilhado serve para testes, mas não basta para uma aplicação séria em produção.
  • Para Ruby e Rails, o texto aponta a stack Cedar e recomenda verificar qual stack um tutorial usa antes de segui-lo.
  • Thin aparece como a recomendação padrão, mas Passenger é sugerido quando a ideia é rodar mais de um processo Ruby e atender mais requisições ao mesmo tempo.
  • O exemplo troca thin por passenger no Gemfile e usa o Procfile para subir o Passenger com max-pool-size.
  • O texto diz que o ideal é entre 3 e 4 processos, dependendo de a dyno ser 1X ou 2X, e que o uso de memória precisa ficar abaixo de 512 MB.
  • Git é obrigatório, e o deploy é feito por um remote do Heroku, com git push heroku master acionando bundle install e a pré-compilação de assets.
  • O post recomenda fixar Ruby 1.9.3 ou 2.0.0 adicionando a versão no Gemfile.
  • Tarefas pesadas, como relatórios, emails e chamadas a APIs externas, devem rodar em background com Resque e Redis.
  • O texto mostra como adicionar o add-on de Redis, configurar as gems e tasks do Resque, definir REDISTOGO_URL nos ambientes de desenvolvimento e teste e criar entradas web, scheduler e worker no Procfile.
  • Ele explica que os workers do Resque fazem fork, então as conexões com o banco precisam ser refeitas depois do fork.
  • O scheduler pode criar tarefas duplicadas se uma execução durar mais do que o intervalo de agendamento, e resque-lock é sugerido para jobs que não podem rodar em paralelo.
  • Para escalar workers, o post usa o exemplo web=4, scheduler=1 e worker=2, e estima as conexões simultâneas necessárias para Redis e PostgreSQL.
  • Assets estáticos devem ser servidos por Amazon S3 ou por uma CDN, com buckets criados na AWS, policies corretas e variáveis de configuração para credenciais e FOG.
  • O artigo diz que o asset pipeline deve usar helpers em vez de URLs fixas, para manter o desenvolvimento local e apontar a produção para o S3.
  • asset_sync é configurado para enviar os assets compilados para o S3, com opções de gzip, região, manifest e falha silenciosa.
  • Para uploads de usuários, o texto mostra CarrierWave usando fog e um bucket separado no S3, e lembra que os dynos do Heroku não preservam arquivos locais.
  • New Relic precisa de um reconnect after_fork quando o Unicorn faz fork.
  • As notas finais recomendam múltiplos dynos web em produção, upgrade de Redis e PostgreSQL conforme a necessidade e configuração de domínios customizados no Heroku.
  • O post encerra dizendo que o Heroku pode sair mais barato do que contratar um sysadmin sênior e montar a própria infraestrutura do zero.