Slide 1

Slide 1 text

Como evitar quebras em produção?? Estratégias de deploy, monitoramento e observabilidade em poucos minutos

Slide 2

Slide 2 text

DevOps e Gerenciamento de incidentes Estratégias de deploy, monitoramento e observabilidade em poucos minutos

Slide 3

Slide 3 text

Quem é esse? ● 26 anos ● 4 anos de engenharia de dados ● Google Cloud certified ● Dono de gatos ● Nerd, músico frustrado e cubista ● Especialista em gambiarras ● Participante de eventos e caçador de brindes Cadu Magalhães @1cadumagalhaes blog.cadumagalhaes.dev datacareer.guide

Slide 4

Slide 4 text

Agenda 1. DevOps 2. Estratégias de deploy 3. Monitoramento e Observabilidade 4. Gerenciamento de incidentes

Slide 5

Slide 5 text

O que é DevOps?

Slide 6

Slide 6 text

O que é DevOps? ● DevOps é uma cultura ● Um conjunto de práticas, de filosofias e de ferramentas ● O resultado da implementação de metodologias ágeis no desenvolvimento de software "DevOps descreve as abordagens que aumentam a velocidade dos processos pelos quais uma ideia (um produto, uma funcionalidade, um ajuste) vai do desenvolvimento para a entrega num ambiente de produção onde pode prover valor ao usuário." - RedHat

Slide 7

Slide 7 text

Dev ● Quem cuida da infraestrutura e entrega ● Quer evitar que o sistema caia ● Quer estabilidade Ops ● Quem escreve código ● Quer implementar coisas novas ● Quer agilidade, entregas

Slide 8

Slide 8 text

História do DevOps

Slide 9

Slide 9 text

História do DevOps

Slide 10

Slide 10 text

História do DevOps

Slide 11

Slide 11 text

Resumindo DevOps ● Pra que: ○ Diminuir a taxa de falhas em novas releases ○ Diminuir o tempo de recuperação, nos casos de falha ○ Diminuir o tempo necessário entre ajustes

Slide 12

Slide 12 text

Resumindo DevOps ● Como: ○ Metodologias Ágeis: ajudando no planejamento e na execução do desenvolvimento ○ Versionamento de código: permitindo um maior controle sobre o código, e mais tarde trazendo automações ○ CI/CD (integração e entrega contínuas): aplicando automações no merge de código, testes e entrega. ○ Gerenciamento de incidentes: criando padrões e estratégias de resposta aos problemas como os que falamos aqui hoje.

Slide 13

Slide 13 text

Resumindo DevOps ● Resultados esperados: ○ Aumentar a frequência de deploy ○ Aumentar produtividade e eficiência ○ Permitir que produtos sejam entregues mais cedo ○ Clientes mais satisfeitos.

Slide 14

Slide 14 text

Como aplicar DevOps? ● Usando git para controle de versão ● Escrevendo testes automatizados ● Utilizando containers ● Entregando (deploy) seu software de maneira eficiente e planejada ● Usando uma pipeline de CI/CD que conecta todos os tópicos acima

Slide 15

Slide 15 text

Dicas de estudo ● Git, Github ● TDD, testes unitários, testes de integração ● Containers, Docker, Podman ● Kubernetes, Openshift, Amazon ECS, Google GKE, Azure AKS ● Github Actions, Azure DevOps, Google Cloud Build, AWS CodePipeline ou CodeBuild

Slide 16

Slide 16 text

Estratégias de deploy

Slide 17

Slide 17 text

1. Deploy Básico (big bang, reckless, recreate, in-place) Como funciona: derruba completamente a versão antiga, atualiza para a versão nova, sobe tudo de volta Vantagens: costuma ser rápido, é barato. Desvantagens: downtime da aplicação, dificil recuperar o estado anterior.

Slide 18

Slide 18 text

1. Deploy Básico (big bang, reckless, recreate, in-place) Créditos: thenewstack: https://thenewstack.io/deployment-strategies/

Slide 19

Slide 19 text

2. Rolling deployment Como funciona: cria uma nova instância da aplicação, e divide o tráfego de forma gradual entre a versão atual e a nova. Vantagens: 0 downtime, relativamente fácil de implementar* Desvantagens: leva tempo para o rollout/rollback, as versões precisam ser compatíveis.

Slide 20

Slide 20 text

2. Rolling deployment Créditos: thenewstack: https://thenewstack.io/deployment-strategies/

Slide 21

Slide 21 text

3. Blue/Green Deployment Como funciona: Faz deploy da versão nova B (green) com exatamente os mesmos recursos da versão antiga A (blue), para testes no ambiente de produção. Depois de testado, troca o tráfego da versão A para a versão B . Vantagens: rollout/rollback instantâneos, 0 downtime. Desvantagens: mais caro

Slide 22

Slide 22 text

3. Blue/Green Deployment Créditos: thenewstack: https://thenewstack.io/deployment-strategies/

Slide 23

Slide 23 text

4. Canary deployment Como funciona: Faz uma versão nova igual ao blue/green. Vai mudando o tráfego para a versão nova gradualmente. Vantagens: rollback instantâneo, 0 downtime, permite monitoramento de performance Desvantagens: rollout mais lento, custo alto

Slide 24

Slide 24 text

4. Canary deployment Créditos: thenewstack: https://thenewstack.io/deployment-strategies/

Slide 25

Slide 25 text

5. Shadow deployment Como funciona: Faz a entrega da versão B ao lado da versão A, duplica todas as requisições de A e as envia para B, sem impactar o tráfego de produção. Vantagens: Testes em produção com tráfego real, 0 impactos ao usuário. Desvantagens: Caro, somente as requisições são testadas, não a plataforma completa, extremamente complexo, precisa de serviços de mock em alguns casos

Slide 26

Slide 26 text

5. Shadow deployment Créditos: thenewstack: https://thenewstack.io/deployment-strategies/

Slide 27

Slide 27 text

Monitoramento e Observabilidade

Slide 28

Slide 28 text

O que é Monitoramento? Monitoramento de software consiste em coletar, analisar e observar dados de vários aspectos do sistema como performance, saúde e comportamento. Ele te permite construir dashboards e criar alertas, e entender como suas aplicações estão funcionando e sendo usadas. De acordo com o SRE Book do Google, seu monitoramento tem que responder duas coisas: ● O que quebrou ● Por que quebrou

Slide 29

Slide 29 text

O que é Observabilidade? Observabilidade é a habilidade de entender o estado interno do sistema a partir dos dados que ele gera (como logs e metricas). O conceito vem da Engenharia de Controle, uma área da matemática aplicada. “Observabilidade é uma ferramenta ou solução técnica que permite às equipes depurar ativamente seu sistema. A observabilidade baseia-se na exploração de propriedades e padrões não definidos antecipadamente” - dora.dev (Google Cloud)

Slide 30

Slide 30 text

Monitoramento vs Observabilidade ● As duas áreas se complementam, mas servem propósitos diferentes. ● Monitoramento é uma parte contida na observabilidade. ● Podemos considerar que o monitoramento são os números, enquanto a observabilidade serve para prover contexto e ajudar a entender o que e como. Monitoramento Observabilidade

Slide 31

Slide 31 text

Como implementar? Para implementar isso, considere: ● Usando métricas disponíveis na plataforma que você está utilizando (como requests, por ex). Google Cloud Logging, AWS CloudWatch ● Gerar e coletar logs padronizados e que permitam análises ● Utilizar padrões e ferramentas. OpenTelemetry, OpenMetrics, Jaeger

Slide 32

Slide 32 text

Gerenciamento de Incidentes em 3 minutos ou menos

Slide 33

Slide 33 text

Que gerenciamento? ● Uma boa prática é ter um manual de como reagir caso algum incidente tenha ocorrido. Esse manual precisa ter algumas etapas importantes para que possamos resolver da melhor forma possível

Slide 34

Slide 34 text

Gerenciamento de incidentes 1. Detecção Aqui entram o monitoramento e observabilidade. De preferência, configure alertas sobre as métricas mais importantes. 2. Resposta Garantir que o incidente seja reportado a todos que precisam saber. Desenvolvedores do time responsável, liderança, etc.

Slide 35

Slide 35 text

Gerenciamento de incidentes 3. Resolução Investigar, encontrar e entender a causa raiz do incidente. Implementar ajustes para minimizar o impacto, ou fazer rollback para uma versão estável (se disponível e possível). E documentar informações detalhadas sobre o incidente. 4. Outras coisas ● Review pós incidente: aprender com os erros para sugerir melhorias de processo, garantir que TUDO será documentado. ● Comunicação: manter os times internos informados sobre o status e o que está sendo feito; caso o incidente impacte usuários, prover comunicação clara e frequente sobre o problema e o progresso.

Slide 36

Slide 36 text

Dúvidas?

Slide 37

Slide 37 text

Obrigade! @1cadumagalhaes linkedin.com/in/1cadumagalhaes work.cadumagalhaes.dev blog.cadumagalhaes.dev dev.to/1cadumagalhaes

Slide 38

Slide 38 text

Algumas referências ● https://www.atlassian.com/devops/what-is-devops/history-of-devops ● https://www.bunnyshell.com/blog/history-of-devops/ ● https://www.atlassian.com/solutions/devops/guides/beginner ● https://dora.dev/publications/ ● https://www.redhat.com/en/topics/devops ● https://azure.microsoft.com/pt-br/resources/cloud-computing-dictionary/w hat-is-devops ● https://aws.amazon.com/pt/devops/what-is-devops/ ● https://www.youtube.com/watch?v=LdOe18KhtT4