Agora um exemplo de arquitetura para facilitar o uso do deploy continuo usando um Load Balancer).
Você não precisa de applicances milionários para fazer isso o github, serve 2500 conexões TCP por SEGUNDO usando o ldirectord em uma máquina Xen com 128mb.
Com um Load Balance, você consegue testar funcionalidades novas no site para uma pequena porção dos usuários do site e usar os gráficos ( que você já tem lógico ) para ver se ela é boa ou não.
Como fazer isso? faça o deploy para apenas 1 das ‘n’ máquinas que você tem atrás do Load Balancer e redirecione, 5% ~ 10% das suas conexões dos seus usuários para essa máquina, o resto os gráficos que você preparou da sua aplicação irão te dizer ;)
Falando um pouco mais de arquitetura, e especificamente de Perl, eu gosto bastante de usar o Nginx + Starman a comunicação é feita via Unix Socket o Starman foi baseado no Unicorn do Ruby, ele funciona muito bem e…
“It’s a unix system I known this!” arquiteturas unix, forks, sockets e afins funcionam muito bem :)
O seu deploy consistiria em copiar os arquivos novos e mandar um sinal de reset para o pid do Starman:
1
| |
Ele vai recarregar o código, e vai reiniciar todos os seus fork assim que eles forem ficando sem conexões ou seja para seus usuários a percepção de downtime será ZERO!
Abaixo uma conf de exemplo para se usar no Nginx para se conectar a um socket gerado pelo Starman:
upstream myapp_starman {
server unix:/tmp/starman.sock fail_timeout=0;
}
server {
listen 80;
client_max_body_size 1024m;
client_body_buffer_size 8k;
proxy_read_timeout 300;
##
# basic
##
server_name www.localhost.com;
root /home/user/MyApp/root;
keepalive_timeout 0;
##
# logging
##
access_log /var/log/nginx/myapp.access combined;
error_log /var/log/nginx/myapp.error;
location /static {
root /home/user/MyApp/root/;
autoindex on;
}
##
# proxy
##
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_buffering off;
if (!-f $request_filename) {
proxy_pass http://myapp_starman;
}
}
}Bom, basicamente é isso se tiver alguma duvida pergunte nos comentários :)
Bibliografia
Alguns slides foram copiados dessa palestra da etsy:
E outros foram copiados dessa palestra da AOE Media
Obrigado :) qualquer dúvida estou a disposição nos comentários.