Rails nas Nuvens
    @sauloarruda




         Imagem: http://www.flickr.com/photos/jan2you/2646026559/sizes/z/in/photostream/
by “Saulo Arruda”

• Sócio e um dos fundadores da
• 29 anos
• Pai de 2 filhas
• 12 anos de código e cabelos brancos
• Programador, DevOP, cantora, atriz, modelo...
O que temos?

• Ferramentas
• Serviços
• Práticas
• E agora?
http://www.flickr.com/photos/harapekodoggybag/6029300410/sizes/l/in/photostream/




Ferramentas
Ferramentas
• Ruby 1.9+ com RVM
• Phusion Passenger (modrails)
• Nginx ou Apache
• Ubuntu Server
• Chef e Capistrano
• MySQL
• JMeter e Apache AB
Ruby 1.9+ com RVM
•   Facilita atualização do Ruby
•   Melhora gerenciamento de gems
•   Um servidor para várias aplicações
Phusion Passenger
•   Setup simples
•   Boa performance
•   Bom gerenciamento
•   Funciona com Nginx ou Apache
Nginx
•   Rápido com baixo consumo de memória
•   Configuração simples
•   Módulos interessantes
Apache
•   Maior suporte da comunidade
•   Integração mais simples com outras
    tecnologias (ex. PHP)
•   Muitas opções de módulos
Ubuntu Server
•   Excelente compatibilidade
•   Fácil administração
•   Suporte de longo prazo
    10.4 LTS - até 2015
Chef
•   Automatização de configuração de infra
•   Hosted Chef!
•   Configurar servidor com código Ruby :P
Capistrano
•   Deploy automatizado
•   Etapas: pull, bundle, migrate, assets, restart,
    etc.
•   Gerenciamento de configurações e
    recursos
MySQL
•   Boa performance e fácil gerenciamento
•   Muito simples de replicar
•   Boa integração com Ruby
JMeter
•   Teste de Performance
•   Fácil construção de planos de testes
•   Execução simultânea em várias máquinas
Apache AB
•   Medição de Threshold
•   Bom para testar concorrência
•   Configuração simples, ideal para páginas
    com grande volume de acesso
http://www.flickr.com/photos/49587000@N07/6151142127/sizes/l/in/photostream/




Serviços
Serviços
• Brasil
  •   Locaweb Cloud Server Pro
  •   UOL CLOUD
• Mundo
  •   Amazon EC2
  •   Linode
  •   Heroku
  •   Engine Yard
Locaweb Cloud Server
        Pro
•   Simples virtualização
•   Possibilidade de upgrade
•   Templates (novo recurso)
•   R$ 199,00 por 2 GB + 2 vCPUs
UOL CLOUD

•   Também Simples Virtualização
•   Igual possibilidade de upgrade
•   Não tem templates
•   R$ 119,00 por 2GB + 2vCPU
Amazon EC2

•   Melhor preço + Free Tier
•   Mais opções de serviços
•   Excelente gerenciamento
•   ~R$ 80,00 por 1,7GB + 2vCPU (reserved)
Linode

•   Simples virtualização mas muito eficiente
•   Setup simplificado
•   Preço competitivo
•   ~ R$ 140,00 por 2GB
Heroku

•   Faz tudo pra você: App Server + Database
•   Continuos Delivery simplificado
•   Serviços adicionais (add-ons)
•   US$ 35,00 por dyno + US$ 15,00 por
    20GB de database
Engine Yard

•   Faz tudo pra você: App Server + Database
•   Continuos Delivery simplificado
•   Deploy simplificado
•   ~R$ 300,00 por 1,7GB + 2vCPU
http://www.flickr.com/photos/49587000@N07/6151720918/sizes/l/in/photostream/




Práticas
Práticas
• Configuração do servidor
• Deploy contínuo
• Replicação
• Backup
• Testar carga e performance
• Alta disponibilidade
Cenário
Configuração do
           Servidor
•   Automatizar a configuração com Chef:

    •   Instalar RVM e Ruby
    •   Instalar Nginx/Apache
    •   Instalar MySQL
    •   Outras configs (segurança, backup,
        replicação, load balancer, etc)
    •   Primeiro Deploy
Deploy Contínuo

•   Deploy com Capistrano

    •   Configurar Git/SVN
    •   Configurar cap no projeto
    •   Permissões e tarefas
    •   Configurar nós
Replicação

•   Replicação do MySQL
•   Replicação de Arquivos (rsync)
•   Uso de S3
•   Uso de CDN
Backup
•   RDiff
    •   Sincronização de arquivos com
        versionamento
•   Bacula
    •   Solução mais evoluída
•   MySQL Dump
Testar carga e
         performance
•   Detectar pontos fracos
•   Oportunidades de otimização
•   Simulação de horários de pico
•   Medição de tempo de resposta
•   Medição do consumo de recursos
Alta Disponibilidade
•   Load Balancer
•   Monitorar e subir instâncias
    automaticamente
•   Memcache
•   Cluster de MySQL
•   Sistema de Filas
•   NoSQL
http://www.flickr.com/photos/49587000@N07/5968744585/sizes/l/in/photostream/




E agora?
E agora?

•   Quando usar Cloud Computing
    •   Começar rápido
    •   Escalar rápido
    •   Baixo custo para iniciar
    •   Gerenciamento simplificado
E agora?

•   Quando NÃO usar Cloud Computing

    •   Muito uso de Disco
    •   Cloud pode ter performance variável
    •   Pode ser mais barato para grande
        volume
http://www.flickr.com/photos/49587000@N07/6033777706/sizes/l/in/photostream/




Obrigado!
Perguntas?

• Saulo Arruda
 • Twitter: @sauloarruda
 • Email: saulo@jera.com.br
 • Blog: http://sauloarruda.eti.br

Rails nas Nuvens

  • 1.
    Rails nas Nuvens @sauloarruda Imagem: http://www.flickr.com/photos/jan2you/2646026559/sizes/z/in/photostream/
  • 2.
    by “Saulo Arruda” •Sócio e um dos fundadores da • 29 anos • Pai de 2 filhas • 12 anos de código e cabelos brancos • Programador, DevOP, cantora, atriz, modelo...
  • 3.
    O que temos? •Ferramentas • Serviços • Práticas • E agora?
  • 4.
  • 5.
    Ferramentas • Ruby 1.9+com RVM • Phusion Passenger (modrails) • Nginx ou Apache • Ubuntu Server • Chef e Capistrano • MySQL • JMeter e Apache AB
  • 6.
    Ruby 1.9+ comRVM • Facilita atualização do Ruby • Melhora gerenciamento de gems • Um servidor para várias aplicações
  • 7.
    Phusion Passenger • Setup simples • Boa performance • Bom gerenciamento • Funciona com Nginx ou Apache
  • 8.
    Nginx • Rápido com baixo consumo de memória • Configuração simples • Módulos interessantes
  • 9.
    Apache • Maior suporte da comunidade • Integração mais simples com outras tecnologias (ex. PHP) • Muitas opções de módulos
  • 10.
    Ubuntu Server • Excelente compatibilidade • Fácil administração • Suporte de longo prazo 10.4 LTS - até 2015
  • 11.
    Chef • Automatização de configuração de infra • Hosted Chef! • Configurar servidor com código Ruby :P
  • 12.
    Capistrano • Deploy automatizado • Etapas: pull, bundle, migrate, assets, restart, etc. • Gerenciamento de configurações e recursos
  • 13.
    MySQL • Boa performance e fácil gerenciamento • Muito simples de replicar • Boa integração com Ruby
  • 14.
    JMeter • Teste de Performance • Fácil construção de planos de testes • Execução simultânea em várias máquinas
  • 15.
    Apache AB • Medição de Threshold • Bom para testar concorrência • Configuração simples, ideal para páginas com grande volume de acesso
  • 16.
  • 17.
    Serviços • Brasil • Locaweb Cloud Server Pro • UOL CLOUD • Mundo • Amazon EC2 • Linode • Heroku • Engine Yard
  • 18.
    Locaweb Cloud Server Pro • Simples virtualização • Possibilidade de upgrade • Templates (novo recurso) • R$ 199,00 por 2 GB + 2 vCPUs
  • 19.
    UOL CLOUD • Também Simples Virtualização • Igual possibilidade de upgrade • Não tem templates • R$ 119,00 por 2GB + 2vCPU
  • 20.
    Amazon EC2 • Melhor preço + Free Tier • Mais opções de serviços • Excelente gerenciamento • ~R$ 80,00 por 1,7GB + 2vCPU (reserved)
  • 21.
    Linode • Simples virtualização mas muito eficiente • Setup simplificado • Preço competitivo • ~ R$ 140,00 por 2GB
  • 22.
    Heroku • Faz tudo pra você: App Server + Database • Continuos Delivery simplificado • Serviços adicionais (add-ons) • US$ 35,00 por dyno + US$ 15,00 por 20GB de database
  • 23.
    Engine Yard • Faz tudo pra você: App Server + Database • Continuos Delivery simplificado • Deploy simplificado • ~R$ 300,00 por 1,7GB + 2vCPU
  • 24.
  • 25.
    Práticas • Configuração doservidor • Deploy contínuo • Replicação • Backup • Testar carga e performance • Alta disponibilidade
  • 26.
  • 27.
    Configuração do Servidor • Automatizar a configuração com Chef: • Instalar RVM e Ruby • Instalar Nginx/Apache • Instalar MySQL • Outras configs (segurança, backup, replicação, load balancer, etc) • Primeiro Deploy
  • 28.
    Deploy Contínuo • Deploy com Capistrano • Configurar Git/SVN • Configurar cap no projeto • Permissões e tarefas • Configurar nós
  • 29.
    Replicação • Replicação do MySQL • Replicação de Arquivos (rsync) • Uso de S3 • Uso de CDN
  • 30.
    Backup • RDiff • Sincronização de arquivos com versionamento • Bacula • Solução mais evoluída • MySQL Dump
  • 31.
    Testar carga e performance • Detectar pontos fracos • Oportunidades de otimização • Simulação de horários de pico • Medição de tempo de resposta • Medição do consumo de recursos
  • 32.
    Alta Disponibilidade • Load Balancer • Monitorar e subir instâncias automaticamente • Memcache • Cluster de MySQL • Sistema de Filas • NoSQL
  • 33.
  • 34.
    E agora? • Quando usar Cloud Computing • Começar rápido • Escalar rápido • Baixo custo para iniciar • Gerenciamento simplificado
  • 35.
    E agora? • Quando NÃO usar Cloud Computing • Muito uso de Disco • Cloud pode ter performance variável • Pode ser mais barato para grande volume
  • 36.
  • 37.
    Perguntas? • Saulo Arruda • Twitter: @sauloarruda • Email: saulo@jera.com.br • Blog: http://sauloarruda.eti.br