Esse é o primeiro posts da série Pipeline de CI/CD com Django e Github Actions, nessa serie de posts vou trazer uma abordagem teórica e construir uma simples pipeline com uma app Django, Github e Github Action.
Confira a lista de todos os posts da série:
- #1 Pipeline de CI/CD com Django e Github Actions
- #2 Criando um app com Django
- #3 Organização de testes unitários com Django
- #4 CI/CD com Django e Github Actions
Hoje vamos falar o que é Continuous Integration (CI), Continuous Deployment (CD), e Test Driven Development (TDD). Podemos dizer que essas técnicas somadas aplicam a automação de todo o ciclo de vida de um software e juntas, essas práticas são chamadas de "pipeline de CI/CD".
O que é integração contínua?
É um conjunto de práticas e ou de ferramentas que nos ajudam a entregar software com qualidade em pequenos pedaços.
Continuous integration significa ter automações na nossa pipeline, na nossa linha de produção de software é um conjunto de práticas que leva as equipes de desenvolvimento a implementar pequenas mudanças e fazer check-in do código para repositórios de controle de versão com frequência. Por exemplo: Sempre ao gerar um Pull Request (PR) irá rodar diversas rotinas para validar as mudanças, linting, testes unitários, linting, testes de integração, teste de regressão, teste de componentes.
O objetivo técnico da CI é estabelecer uma maneira consistente e automatizada de construir, empacotar e testar aplicativos.
Entrega contínua
Ou Continuous Deployment, Delivery é um mecanismo que nos ajudam a fazer entregas contínuas, essas duas técnicas vem dos princípios ágil e do manifesto ágil, para quem não conhece eu indico muito essa leitura.
O CD automatiza a entrega de aplicativos para diversos ambientes. A maioria das equipes trabalha com vários ambientes diferentes de produção, como ambientes de desenvolvimento e teste, e o CD garante que haja uma maneira automatizada de enviar as nossas releases a esses ambientes.
Porque devemos considerar o uso de CI/CD
1. Mudanças de código menores
Permite que você integre pequenos pedaços de código de uma só vez.
Usando testes contínuos, torna a tarefa mais simples de identificar problemas. E funciona muito bem para grandes equipes de desenvolvimento que trabalham remotamente.
2. Isolamentos de falha
Projetar seu sistema com CI / CD garante que o isolamento de falhas seja mais rápido de detectar e isolar o problema antes que ele possa causar danos a todo o sistema.
3. Mais confiabilidade do teste
Usando CI / CD, a confiabilidade do teste aumenta devido a utilização de teste unitário que irá cobrir parte dos cenários de testes da aplicação.
4. Menor lista de pendências
Incorporar CI / CD ao processo de desenvolvimento da nossa organização reduz o número de defeitos não críticos em nosso backlog. Esses pequenos defeitos são detectados antes da produção e corrigidos antes de serem liberados para os usuários finais.
5. Reduzir custos
Reduz o número de erros e consequentemente libera o tempo do desenvolvedor que poderia ser gasto no desenvolvimento do produto, pois não há tantas alterações de código para corrigir no futuro se o erro for detectado rapidamente.
6. Equipe mais feliz
Teoricamente, tendo um processo de desenvolivimento bem definido, mantem a saude mental de toda a equipe :)
Desenvolvimento Orientado a Testes (TDD)
Test Driven Development (TDD), ou Test-first development, é um conjunto de técnicas orientado a testes que tambem é uma pratica relacionada com Extreme Programming (XP) e metodologia ágil. Com TDD temos um desenvolvimento incremental do código, iniciado pelos testes (Miller,2004).
Resumindo, o que é TDD?
Escreva os testes primeiro!
- Escreva testes para testar sua feature.
- Execute testes (somente os novos testes podem falhar).
- Escreva seu código para implementar o recurso.
- Execute os testes (repita os passos 3 e 4 até passarem todos os testes).
- Refatore o código (se necessário).
O que deve ser testado?
- As principais regras de negócio;
- A maior porcentagem de cenários de testes;
- Tudo que pode quebrar.
 
No próximo post iremos criar um app com Django para que possamos dar sequência na criação da nossa Pipeline.
Até logo e que a força esteja com você!
Published Jul 11, 2021 by f0rmig4