rails nas nuvens
DESCRIPTION
Palestra ministrada no RubyConfBR em 03/11/2011. Tópicos abordados:- Ferramentas: RVM, Phusion Passenger, Nginx, Apache, Ubuntu Server, Chef, Capistrano, MySQL- Serviços: Locaweb Cloud Server Pro, UOL CLOUD, Amazon EC2, Linode, HerokuTRANSCRIPT
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?
Ferramentas
http://www.flickr.com/photos/harapekodoggybag/6029300410/sizes/l/in/photostream/
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
Serviços
http://www.flickr.com/photos/49587000@N07/6151142127/sizes/l/in/photostream/
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
E agora?
http://www.flickr.com/photos/49587000@N07/5968744585/sizes/l/in/photostream/
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
Obrigado!
http://www.flickr.com/photos/49587000@N07/6033777706/sizes/l/in/photostream/
Perguntas?
• Saulo Arruda
• Twitter: @sauloarruda
• Email: [email protected]
• Blog: http://sauloarruda.eti.br