37
Rails nas Nuvens @sauloarruda Imagem: http://www.flickr.com/photos/jan2you/2646026559/sizes/z/in/photostream/

Rails nas Nuvens

Embed Size (px)

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, Heroku

Citation preview

Page 1: Rails nas Nuvens

Rails nas Nuvens@sauloarruda

Imagem: http://www.flickr.com/photos/jan2you/2646026559/sizes/z/in/photostream/

Page 2: Rails nas Nuvens

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...

Page 3: Rails nas Nuvens

O que temos?

• Ferramentas

• Serviços

• Práticas

• E agora?

Page 6: Rails nas Nuvens

Ruby 1.9+ com RVM

• Facilita atualização do Ruby

• Melhora gerenciamento de gems

• Um servidor para várias aplicações

Page 7: Rails nas Nuvens

Phusion Passenger

• Setup simples

• Boa performance

• Bom gerenciamento

• Funciona com Nginx ou Apache

Page 8: Rails nas Nuvens

Nginx

• Rápido com baixo consumo de memória

• Configuração simples

• Módulos interessantes

Page 9: Rails nas Nuvens

Apache

• Maior suporte da comunidade

• Integração mais simples com outras tecnologias (ex. PHP)

• Muitas opções de módulos

Page 10: Rails nas Nuvens

Ubuntu Server

• Excelente compatibilidade

• Fácil administração

• Suporte de longo prazo 10.4 LTS - até 2015

Page 11: Rails nas Nuvens

Chef

• Automatização de configuração de infra

• Hosted Chef!

• Configurar servidor com código Ruby :P

Page 12: Rails nas Nuvens

Capistrano

• Deploy automatizado

• Etapas: pull, bundle, migrate, assets, restart, etc.

• Gerenciamento de configurações e recursos

Page 13: Rails nas Nuvens

MySQL

• Boa performance e fácil gerenciamento

• Muito simples de replicar

• Boa integração com Ruby

Page 14: Rails nas Nuvens

JMeter

• Teste de Performance

• Fácil construção de planos de testes

• Execução simultânea em várias máquinas

Page 15: Rails nas Nuvens

Apache AB

• Medição de Threshold

• Bom para testar concorrência

• Configuração simples, ideal para páginas com grande volume de acesso

Page 18: Rails nas Nuvens

Locaweb Cloud Server Pro

• Simples virtualização

• Possibilidade de upgrade

• Templates (novo recurso)

• R$ 199,00 por 2 GB + 2 vCPUs

Page 19: Rails nas Nuvens

UOL CLOUD

• Também Simples Virtualização

• Igual possibilidade de upgrade

• Não tem templates

• R$ 119,00 por 2GB + 2vCPU

Page 20: Rails nas Nuvens

Amazon EC2

• Melhor preço + Free Tier

• Mais opções de serviços

• Excelente gerenciamento

• ~R$ 80,00 por 1,7GB + 2vCPU (reserved)

Page 21: Rails nas Nuvens

Linode

• Simples virtualização mas muito eficiente

• Setup simplificado

• Preço competitivo

• ~ R$ 140,00 por 2GB

Page 22: Rails nas Nuvens

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

Page 23: Rails nas Nuvens

Engine Yard

• Faz tudo pra você: App Server + Database

• Continuos Delivery simplificado

• Deploy simplificado

• ~R$ 300,00 por 1,7GB + 2vCPU

Page 25: Rails nas Nuvens

Práticas

• Configuração do servidor

• Deploy contínuo

• Replicação

• Backup

• Testar carga e performance

• Alta disponibilidade

Page 26: Rails nas Nuvens

Cenário

Page 27: Rails nas Nuvens

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

Page 28: Rails nas Nuvens

Deploy Contínuo

• Deploy com Capistrano

• Configurar Git/SVN

• Configurar cap no projeto

• Permissões e tarefas

• Configurar nós

Page 29: Rails nas Nuvens

Replicação

• Replicação do MySQL

• Replicação de Arquivos (rsync)

• Uso de S3

• Uso de CDN

Page 30: Rails nas Nuvens

Backup

• RDiff

• Sincronização de arquivos com versionamento

• Bacula

• Solução mais evoluída

• MySQL Dump

Page 31: Rails nas Nuvens

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

Page 32: Rails nas Nuvens

Alta Disponibilidade

• Load Balancer

• Monitorar e subir instâncias automaticamente

• Memcache

• Cluster de MySQL

• Sistema de Filas

• NoSQL

Page 34: Rails nas Nuvens

E agora?

• Quando usar Cloud Computing

• Começar rápido

• Escalar rápido

• Baixo custo para iniciar

• Gerenciamento simplificado

Page 35: Rails nas Nuvens

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

Page 37: Rails nas Nuvens

Perguntas?

• Saulo Arruda

• Twitter: @sauloarruda

• Email: [email protected]

• Blog: http://sauloarruda.eti.br