$30 off During Our Annual Pro Sale. View Details »

Escalando práticas de CI CD com Gitlab

Escalando práticas de CI CD com Gitlab

Avatar for Jhonatan Morais

Jhonatan Morais

March 23, 2022
Tweet

More Decks by Jhonatan Morais

Other Decks in Technology

Transcript

  1. Escalando práticas de CI/CD com Gitlab The information in this

    document is confidential to the person to whom it is addressed and should not be disclosed to any other person. It may not be reproduced in whole, or in part, nor may any of the information contained therein be disclosed without the prior consent of the directors of iFood. It has been used as support material for an oral presentation and, therefore, it does not represent a complete record of the topics presented in the mentioned presentation. Março, 2022 Jhonn Frazão Jhonatan Morais
  2. • O problema • Premissas • A solução • Onde

    chegamos • Para onde vamos Agenda
  3. Quem somos? Staff Software Engineer @ Developer Experience Jhonatan Morais

    Staff Software Engineer @ Developer Experience Jhonn Frazão
  4. Trajetória comum nas empresas • 1 a 10 pessoas desenvolvedoras:

    Cada time desenvolve e mantém própria solução • 10 a 100 pessoas desenvolvedoras: Times começam a compartilhar templates entre si • 100 a 1000 pessoas desenvolvedoras: Necessidade de uniformizar processos e incluir novas práticas e ferramentas torna imprescindível solução que abstraia complexidade • > 1000 pessoas desenvolvedoras: Tratar CI/CD como Cattles ao invés de Pets é questão de sobrevivência do ciclo de desenvolvimento de software CI/CD na vida real
  5. E o iFood, como estava? • ~ 1k Foodlovers contribuidores

    • ~ 2,2k repositórios git • E alguns problemas…
  6. • Gitlab CI como ferramenta de CI/CD • Gestão da

    plataforma centralizada • Pipelines devem ser versionadas • Suportar workflows já estabelecidos para evitar fricções O que precisamos considerar antes de começar? • Conjunto mínimo de code bases cobertos devem ser mantidos • Não haverá migração de pipelines as-is • Migração deve ser realizada pelos times donos dos projetos
  7. Monorepo para pipelines Repositório de pipelines padrão da companhia, com

    objetivo de tornar mais sustentável a manutenção e evolução do processo de CI/CD, garantindo que padrões, práticas e ferramentas sejam adotados de maneira rápida e efetiva em escala. iFood Gitlab Pipelines
  8. Pipelines como pacotes • Crie um .gitlab-ci.yml no seu projeto,

    e importe a pipeline desejada, informando a versão (include) • Configure funcionalidades e comportamentos via variáveis de entrada (variables)
  9. Pipelines como pacotes • Pacotes para cada natureza de code

    base ◦ Backend ◦ Frontend ◦ Mobile ◦ Libs (por linguagem) ◦ Container images ◦ Helm charts ◦ Plugins diversos ◦ E assim por diante…
  10. Versionamento • Tags imutáveis para denotar pipeline + versão (SemVer)

    ◦ ifood-backend-1.2.0 • Tags dinâmicas (a.k.a. dynamic/rolling tags) ◦ ifood-backend-1-stable, ifood-backend-1-edge, …
  11. Criação de uma internal CLI • Evitar explosão de scripts

    kilométricos dentro dos arquivos de CI, difíceis de testar e manter (quem nunca?) • Criar "cola" entre múltiplas ferramentas externas e internas • Opinar alguns comportamentos próprios p/ ecossistema iFood Food CLI
  12. Testes Reduza as dores de cabeça com Com grandes poderes,

    grandes responsabilidades. Como reduzir as chances de problemas em escala?
  13. Testes • Assim como qualquer software, código de CI/CD também

    deve ser testado, de maneira automática e contínua • Cada pipeline tem seus próprios cenários de teste, priorizando os principais workflows e funcionalidades críticas • Executados em cada Merge Request submetido ao mono repo de pipelines • Simulam um projeto real utilizando o novo código submetido
  14. Documentação Não dá pra ser feliz sem • Documentar o

    que? ◦ Pré-requisitos do projetos ◦ Como utilizar ◦ Variáveis de entrada ◦ Workflows suportados ◦ FAQ ◦ O que for importante :)
  15. ~4.6K ~2K ~3K ~3,5K Deploys por mês Só em produção

    209/dia de seg-sex Usuários No GitLab Respositórios Git No GitLab Serviços Que usam o GitLab como CI/CD Quais resultados obtivemos? Onde Chegamos? Em pouco mais de um ano… 13 Pipelines packages
  16. • Empacotamento e versionamento aumentam a velocidade e segurança no

    lançamento de funcionalidades e correções em escala • Centralização da plataforma de CI aumenta estabilidade e qualidade do serviço • Consolidação da stack de CI/CD diminui variância não essencial de tecnologias, concentrando foco na pavimentação de uma estrada principal sobre o tema Resultados
  17. Para o curto prazo Queremos… • Evoluir estratégias de deploy

    de serviços em produção • Implementar EOL (End of Lifecycle) das versões das pipelines • Extração de métricas sobre SDLC (DORA)1 • Compliance check p/ pipelines usando OPA2 • Evoluir integração com outras plataformas internas para reduzir ainda mais a complexidade de configuração das pipelines 1. DevOps Research and Assessment (DORA) 2. Open Policy Agent
  18. • Inner sourcing • Engajamento por parte dos desenvolvedores •

    Apoio das lideranças de engenharia • Mudanças incrementais, sem quebras bruscas na rotina dos desenvolvedores • Estar próximo dos problemas • Construir bases sólidas para suportar evolução Chaves para o sucesso