Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Reliable Deployments @ ContaAzul

Diogo Nicoleti
September 13, 2018

Reliable Deployments @ ContaAzul

A plataforma ContaAzul está crescendo constantemente e enfrentamos desafios constantes de como liberar nosso monólito de maneira confiável, frequente e sem impactar nossos usuários.

Nesta apresentação é apresentado os objetivos e desafios que temos, porque e como adotamos práticas como Immutable Infrastructure, Deployment Window e Canary Release no nosso deployment pipeline, quais ferramentas utilizamos e como isso ajudou a tornar nossas liberações mais confiáveis e seguras impactando menos nossos usuários e melhorando nossas métricas de MTTR e MTTD.

Diogo Nicoleti

September 13, 2018
Tweet

More Decks by Diogo Nicoleti

Other Decks in Technology

Transcript

  1. 3 • Confiabilidade • Implantações confiáveis ◦ Nosso pipeline de

    implantação ◦ Processo de promoção de estágios ◦ Infraestrutura Imutável ◦ Janela de implantação ◦ Build & Testes ◦ Staging ◦ Canary ◦ Blue Green deployment ◦ Rollback AGENDA 30"
  2. 4 Um pouco sobre a Conta Azul Conta Azul é

    a plataforma online que conecta tudo que o dono de um negócio precisa para a sua gestão. Com planos e soluções acessíveis ao micro e pequeno empresário do varejo, já recebeu +800 mil empresas na plataforma com mais de 1 milhão de notas fiscais emitidas e mais de 250 milhões de lançamentos financeiros gerados.
  3. 6 Confiabilidade é a característica mais importante de qualquer sistema

    Basicamente: • Se seu sistema não é confiável, usuários não irão confiar nele. • Se os usuários não confiam no sistema, quanto tiverem uma chance não usarão mais ele. • Se os usuários não usarem seu sistema, não tem porque ele existir.
  4. 7 Seus usuários, não seu monitoramento, decidem sua confiabilidade •

    A única medida de confiabilidade que importa é a experiência do usuário • Se seus usuários tiverem uma experiência ruim é isso que eles irão lembrar quando precisarem decidir entre você ou um concorrente (peak end rule) • Monitoramento é valioso quando ele identifica problemas antes que seu usuário :)
  5. 9 Implantações Confiáveis Quais são os objetivos e desafios que

    temos? • Possibilitar que tenhamos implantações seguras e confiáveis, tendo o mínimo de impacto possível nos usuários. • Garantir a alta disponibilidade dos nossos serviços • Melhorar o MTTR (Mean time to recovery): se recuperar de erros e problemas o mais rápido possível • Melhorar o MTTD (Mean time to detect): identificar de maneira mais rápida um possível problema em produção • E principalmente fazer nossos usuários felizes! :)
  6. 13 Infraestrutura Imutável v272 v272 v273 v273 Ao invés de

    administrar servidores (atualizar SO, aplicações, et al) e configurações, novas imagens de máquinas (AMI) são geradas com base em uma imagem base. Infraestrutura imutável nos permite uma operação simplificada, versionamento da infraestrutura. Requisito para ASG.
  7. 14 Janela de implantação Permite controlar o tempo do dia

    e os dias da semana nos quais uma nova implantação pode ser feita. Na Conta Azul as implantações podem ser feitas durante o horário de trabalho.
  8. 15 Build & Testing A primeira etapa do pipeline de

    deployment é realizar a construção dos artefatos e executar uma série de testes. Alguns dos testes realizados são: • Testes unitários • Testes de integração • Testes de lint (front-end) Basicamente o mesmo processo executado durante o CI.
  9. 16 Staging O ambiente de staging nos permite ter um

    estado do mundo real. Toda nova versão sendo implantada passa primeiramente pelo staging o que permite que os desenvolvedores possam realizar testes em ambiente real mas sem que ele tenha tráfego real. Utilizamos staging parcial
  10. 17 Canary Release Canary release é uma técnica que nos

    permite reduzir o risco da implantação de uma nova versão em produção. Uma nova versão é implantada para um pequeno conjunto de usuários antes de implantá-la 100% em produção. Caso exista algum problema na versão o impacto será apenas neste pequeno conjunto de usuários.
  11. 19 Automated Canary Analysis (ACA) Realiza a análise automática da

    qualidade do canary comparando as métricas entre a atual e a nova versão. Caso estas métricas degradem a implantação é abortada. Reduz a necessidade de intervenção humana no processo de análise do canary.
  12. 20 Blue/Green (Red/Black) deployment O processo de Blue/Green (ou Red/Black)

    mantém dois grupos de instâncias da aplicação: um que está servindo o tráfego (green) e outro que irá receber a nova versão (blue). Quando o blue está pronto é feito o redirecionamento do tráfego para ele. Isso nos permite realizar a implantação da nova versão sem qualquer downtime da aplicação.
  13. 21 Rollback O Rollback nos permite reverter mudanças implantadas em

    produção se caso algum problema ocorrer. Basicamente este processo irá retornar o ambiente de produção a uma versão anterior estável e confiável.
  14. 22 Rollback Correções de emergência (a.k.a hotfix) são um antipadrão

    Realizar correções de emergências não é o modelo ideal para resolver um problema que está afetando o ambiente de produção. O correto é realizar o rollback para uma versão anterior estável e posteriormente seja feita uma nova liberação contendo a correção, seguindo o pipeline completo. Irão existir algumas exceções que será necessário um hotfix (como uma alteração de um serviço de terceiro ou um bug pego muito tarde), mas sempre que possível o rollback deve ser a primeira alternativa.