O documento discute os conceitos de CI/CD, como automação contínua do ciclo de vida de aplicações, incluindo testes, entrega e implantação. Também aborda como implementar CI/CD na prática com ferramentas como Jenkins, Docker Swarm e Github, destacando que requer processo de desenvolvimento eficiente, equipe madura e infraestrutura de monitoramento.
2. Quando a gente lê sobre CI/CD
“CI/CD é um método para entregar aplicações com frequência aos clientes. Para isso,
é aplicada a automação nas etapas do desenvolvimento de aplicações. Os principais
conceitos atribuídos a esse método são integração, entrega e implantação contínuas.
Com o CI/CD, é possível solucionar os problemas que a integração de novos códigos
pode causar para as equipes de operações e desenvolvimento (o famoso ‘inferno de
integração’).
Especificamente, o CI/CD aplica monitoramento e automação contínuos a todo o
ciclo de vida das aplicações, incluindo as etapas de teste e integração, além da
entrega e implantação. Juntas, essas práticas relacionadas são muitas vezes
chamadas de ‘pipeline de CI/CD’ e compatíveis com o trabalho conjunto das equipes
de operações e desenvolvimento com métodos ágeis.”
4. Simples assim?
● Projetos longos;
● Ficamos 1 mês fazendo uma atividade;
● Muitas vezes nem ambiente de homologação existe;
Daí lembro de algumas características dos projetos que participei.
Eu fico pensando.
“Vai dar uma merda se for pra produção
direto.”
5. Em resumo
● Ter um processo de desenvolvimento eficiente;
● Ter um time com maturidade no processo de C/CD;
● Ter uma infraestrutura com monitoramento;
● etc...
Não é bem assim. Implantar um CI/CD eficiente, com todos os seus
benefícios, depende de muitos detalhes;
6. Então vamos descomplicar.
O que é o CI/CD?
CI/CD é um método para entregar aplicações com frequência aos clientes.
● Monitoramento;
● Automatização continua a todo o ciclo de vida das aplicações;
● Entrega e implantações;
7. Todo time de desenvolvimento, toda empresa, deseja desenvolver o
melhor software, que no final, alcance uma alta qualidade técnica e que
entregue maior valor às reais necessidades do negócio.
Para atingir esses objetivos, não adianta chegar no final e testar toda a
aplicação, para saber se está tudo funcionando.
8. A chave é ter um feedback curto, tanto na qualidade do código quanto na
validação do negócio.
Quanto mais rápido for para desenvolver algo, fazer o code review, colocar
em um ambiente de teste para ser validado pelo dono do produto e ir
para a produção, melhor vai ser o resultado final.
9. Mas o que é um CI (Continuos Integration)
Então o CI é uma prática de desenvolvimento que tem o
objetivo de fazer merges constantes com a branch principal,
fazer automatização dos testes e code review. Essas práticas
fazem com que as interações sejam curtas, evitando os
métodos antigos, que ficávamos semanas ou meses
trabalhando em uma atividade, sem atualizar o código e
quando iríamos fazer os merges, dava conflito em tudo. A
integração contínua coloca uma grande ênfase na
automatização de testes para verificar se o código não está
corrompido sempre que novos commits são integrados.
10.
11. O que é um CD (Continuous Delivery)
É a automatização do processo de liberação para seu cliente.
Com o CD você automatiza seu processo de liberação decidindo
liberar diariamente, semanalmente, mensalmente,
dependendo da maturidade do seu time.
12. O que é um CD (Continuous Deployment)
É o continuous delivery com um detalhe. Não tem interação
humana.
13.
14. Estou desenvolvendo um produto
complexo ou um MVP para minha
startup, porque o CI/CD é
importante?
15. “Se sua empresa puder implantar coisas
novas na produção centenas de vezes
por dia, poderá se recuperar de erros
quase instantaneamente. Se você puder
se recuperar de erros quase
instantaneamente, poderá assumir mais
riscos. Se você poder assumir mais
riscos, poderá fazer mais experimentos.
Os resultados dos experimentos podem
transformar na sua próxima vantagem
competitiva.”