A busca pelo Deploy
     Contínuo.




       @lornlab
Barreiras
Cultura
Confiança
Software Livre
Startups
Lean
Qual o seu ciclo de
     deploy?
Você fica
assustado em dias
    de deploy?
Bugfix na
noite anterior
ao deploy?
Existe outro
jeito :)
Automatize tudo!
Automatize tudo!
   build
Automatize tudo!
   build
   test
Automatize tudo!
   build
   test
   deploy
Integração
•   SCM

•   Testes

•   CI

•   Deploy/Rollback Script

•   Máquinas automatizadas

    •    puppet/chef

•   Monitoramento
Testes
Deploy /
Rollback
 script
Puppet / Chef
Monitorament
      o
DEVOPS
DEVOPS
•   logs

•   debug

•   erro conhecido é erro
    tratado

•   menos trabalho pra você,
    mais trabalho pra ops
Arquitetura
Load balance
if ( $user->cfg =~ /funcionalidade42/ ){
         // nova funcionalidade do site
 }
else {
      // modo antigo
}
nginx +
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;

                             server_name www.localhost.com;

https://gist.github.com/     root /var/www/myapp.current;
                             keepalive_timeout 0;



        1126172              access_log /var/log/nginx/myapp.access combined;
                             error_log /var/log/nginx/myapp.error;
                             
                             location /static {
                                   root /var/www/myapp.current/root/;
                                   autoindex on;
                             }

                             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;
                               }
                             }
                           }
“It’s a unix system”
kill -s USR2
    1337
/var/www/
myapp.current
 /var/www/
 myapp-0.1
 /var/www/
 myapp-0.2
Conclusão

• A busca pelo deploy continuo é ... continua
• O hype está ajudando a melhorar a
  qualidade, ou pelo menos se preocupando
  mais com com a qualidade, do que é
  entregue
Obrigado!


• lorn @ cpan dot org
• http://twitter.com/lornlab

A busca pelo deploy continuo

Notas do Editor

  • #2 \n
  • #3 \n
  • #4 \n
  • #5 Cultura enterprise dificulta bastante a implementação o conceito de torres não ajuda em nada, torre de design, torre de infra etc\n
  • #6 \n
  • #7 As pessoas te contrataram para fazer aquilo, te pagam para aquilo mais não confiam naquilo que você faz O_o\nDesenvolvedores gostam de ver suas coisas sendo usadas / em produção, isso o motiva a trabalhar melhor\nSe você não confia no seu funcionario, demita-o e contrate um que você confie\n
  • #8 \n
  • #9 Startups que se enterpriserisam, criando processos desnecessarios\n
  • #10 Cultura de startup facilita muito isso\npensando lean, o conceito de deploy/integração continua tá enraizado em muitos "frameworks" de startups como Lean e afins\nStartup precisa entregar valor rapido ao cliente para se diferencia, se não tem deploy continuo não há como garantir isso\nEnterprise2startup como faz//\n\n
  • #11 \n
  • #12 \n
  • #13 \n
  • #14 Antes somente uma pessoa estava ‘autorizada’a fazer o deploy\nagora todos podem fazer, quando quiser\nvocê tem que fazer um deploy no seu 1o dia de trabalho\nAntes o rollback era tenebroso, agora é vitorioso\n
  • #15 \n
  • #16 \n
  • #17 Tudo o que você precisa fazer para fazer o deploy, incluindo testes unitario, integração, segurança, desempenho e interface\nQuando você diminui esse ciclo, você aumenta sua competitividade\n\n
  • #18 \n
  • #19 \n
  • #20 (thats not me :-)\n
  • #21 \n
  • #22 \n
  • #23 \n
  • #24 \n
  • #25 \n
  • #26 \n
  • #27 \n
  • #28 Unitario, integração, performance, segurança\n
  • #29 o 1o passo é ter um script magico, que faz deploy/rollback apenas executando ele\n
  • #30 \n
  • #31 \n
  • #32 \n
  • #33 \n
  • #34 Como você vai saber que algo deu errado? como combate o “feeling” do seu chefe\n“não sei não o site tá estranho, acho que esse ultimo deploy diminuiu o numero de vendas”\nmeça tudo, tire estatisticas de tudo e deixe isso facil para o dev\nuse o graphite e o statsd\n\n
  • #35 Quando devs trabalha com ops\n
  • #36 - menos trabalho pra você, mais trabalho pra ops\ncitar exemplo de quando o cara de ops te liga e fica te falando mensagem que está acontecendo no terminal, como se ele fosse um terminal via telefone :P\n
  • #37 \n
  • #38 \n
  • #39 Com um load balance você consegue fazer deploy aos poucos, isolando as maquinas e verificando se tem algum erro\nex: ldiretord, perlball, haproxy\n
  • #40 \n
  • #41 \n
  • #42 \n
  • #43 \n
  • #44 \n
  • #45 \n
  • #46 \n
  • #47 \n
  • #48 \n
  • #49 \n
  • #50 \n