práticas recomendadas de CI/CD
A integração contínua (CI) e a entrega contínua (CD) geralmente estão associadas a DevOps, DevSecOps, inteligência artificial para operações de TI (AIOps), GitOps e muito mais. Não basta apenas dizer que você está fazendo IC e CD; existem certas práticas recomendadas que, se usadas bem e de forma consistente, tornarão seus pipelines de CI/CD mais bem-sucedidos.
A expressão "melhores práticas" sugere as etapas, processos, maneiras, iterações, etc. que devem ser implementadas ou executadas para obter os melhores resultados de algo como software ou entrega de produtos. No CI/CD, ele também inclui a maneira como o monitoramento é configurado para oferecer suporte ao design e à implantação.
Há uma variedade de práticas recomendadas em CI/CD que melhorarão seu fluxo de trabalho e resultados. Neste artigo, vou explorar algumas delas.
Dutos e ferramentas
As práticas recomendadas de CI/CD envolvem a combinação de um pipeline de implantação eficaz e eficiente e ferramentas de orquestração, como Jenkins, GitLab e Azure Pipelines. Os benefícios incluem maior velocidade, redução do risco de erro humano e habilitação do autoatendimento.
Taz Castanho, CC BY-SA 4.0
Controle de versão
O uso do controle de versão compartilhado é uma prática recomendada que fornece uma única fonte de verdade para todas as equipes (por exemplo, desenvolvimento, garantia de qualidade [QA], segurança da informação, operações, etc.) e coloca todos os artefatos em um repositório. O controle de versão também deve ser seguro, utilizando padrões como repositórios criptografados, check-ins assinados e separação de tarefas (por exemplo, duas pessoas necessárias para se comprometer). Algumas coisas que você pode esperar no controle de versão incluem:
Taz Castanho, CC BY-SA 4.0
QA e testes
As melhores práticas de CI/CD também se estendem ao gerenciamento da qualidade. Os pipelines de implantação devem testar, testar, testar e testar um pouco mais para mitigar os defeitos com senso de urgência e de olho na velocidade da recuperação. Coloque seu foco em princípios relacionados à qualidade, tais como:
- "Teste de deslocamento para a esquerda"
- Pequenos lotes, lançamentos frequentes, aprendendo com defeitos escapados
- Cinco camadas de testes de segurança
- Teste de software versus infraestrutura
As práticas recomendadas exigem que os testes sejam automatizados para detectar problemas mais rapidamente — e atenuá-los ainda mais rapidamente. Alguns testes incluem:
Taz Castanho, CC BY-SA 4.0
Os testes devem incluir código, particularmente análise de código e ferramentas de teste automatizado.
As ferramentas comuns de análise de código incluem:
- Linguagem específica
- – Python: Pylint & Pyflakes
- – Java: PMD, Checkstyle
- – C++: Cppcheck, Clang-Tidy
- – PHP: PHP_CodeSniffer, PHPMD
- – Ruby: RuboCop, Reek
- Não específico de idioma
- – SonarQube: 20+ idiomas
- – Scanners de
- segurança – Analisadores de complexidade
As ferramentas comuns de teste automatizado incluem:
- Teste unitário
- – JUnit, NUnit
- Testes
- funcionais ou de desempenho – HP ALM
- – Pepino
- – Selênio
- Testes de
- segurança – Ferramentas
- de teste de penetração – Ferramentas de análise ativa
Taz Castanho, CC BY-SA 4.0
Testando seus próprios processos
As equipes devem ser persistentes em fazer IC, e você pode verificar o desempenho de sua equipe respondendo às seguintes perguntas:
- Os desenvolvedores fazem check-in no porta-malas pelo menos uma vez por dia?
- Todo check-in aciona uma compilação e testes automatizados (unidade e regressão)?
- Se a compilação for quebrada ou os testes falharem, o problema é resolvido em poucos minutos?
Métricas, monitoramento, alertas
Todos os itens a seguir devem ser automatizados e contínuos em um pipeline de CI/CD:
- As métricas são dados que podem ser capturados e são úteis para detectar eventos (alterações no estado de algo relevante) e entender o estado atual e o histórico.
- O monitoramento envolve a observação de métricas para identificar eventos de interesse.
- O alerta notifica as pessoas quando um evento requer sua ação.
A incorporação da telemetria, um "processo de comunicação altamente automatizado pelo qual são feitas medições e outros dados coletados em pontos remotos ou inacessíveis e transmitidos ao equipamento receptor para monitoramento, exibição e gravação", é uma opção para criar métricas contínuas, monitoramento e alertas em seus pipelines de CI/CD.
Mapeamento do fluxo de valor e do fluxo de valor
Identificar fluxos de valor e, em seguida, mapeá-los pode ajudar uma organização e equipes ao tentar resolver problemas. Também ajuda a estabelecer valor para os clientes por meio de atividades que levam um produto ou serviço desde o início até o cliente. Exemplos de fluxo de valor incluem:
- Desenvolvimento de software
- Suporte ao usuário
- Gestão de incidentes
Taz Castanho, CC BY-SA 4.0
Infraestrutura como código
Tratar a infraestrutura como código (IaC) é uma prática recomendada que tem muitos benefícios para CI e CD, tais como:
- Fornecendo visibilidade sobre dependências de infraestrutura de aplicativos
- Permitindo testes e preparo em ambientes de produção mais cedo em projetos de desenvolvimento que aprimoram a definição de "concluído" das equipes ágeis
- Entendendo que a infraestrutura é mais fácil de construir do que reparar
- – Sistemas físicos: Limpar e reconfigurar
- – Virtual e nuvem: Destruir e recriar (por exemplo, Doctor Monkey da Netflix)
- Cumprir o plano de continuidade ideal, que de acordo com Adam Jacob, CTO da Chef, "permite a reconstrução do negócio a partir de nada além de um repositório de código-fonte, um backup de dados de aplicativos e recursos bare-metal"
Amplificar o feedback
Desenvolver a capacidade de amplificar o feedback é outra prática recomendada de CI/CD. Um sistema para trabalhar com segurança dentro de sistemas complexos é:
- Gerencie de uma forma que revele erros no projeto e na operação
- Enxame e resolução de problemas resultando em rápida construção de novos conhecimentos
- Tornar o novo conhecimento local explícito globalmente em toda a organização
- Criar líderes que continuem nessas condições
Resposta à falha
As práticas recomendadas para responder a falhas devem ser incorporadas a um sistema de compilação, teste, implantação, análise e projeto. Não se trata apenas de considerar quais sistemas de resposta a falhas devem ser projetados, construídos e implantados; As formas como as organizações ou equipes responderão também devem ser bem pensadas e executadas.
A cultura ideal considera as falhas como características e uma oportunidade de aprender, em vez de uma forma de colocar culpa. Retrospectivas sem culpa ou post-mortems são uma prática recomendada que permite que as equipes se concentrem em fatos, considerem muitas perspectivas, atribuam itens de ação e aprendam.
Criar uma cultura de aprendizado e inovação em torno da integração e entrega contínuas é outra prática recomendada que resultará em experimentação e melhoria contínuas no curto prazo e sustentabilidade, confiabilidade e estabilidade no longo prazo.
Taz Castanho, CC BY-SA 4.0
Os líderes podem criar as condições necessárias para essa mudança cultural de várias maneiras, incluindo:
- Tornar os post-mortems irrepreensíveis
- Valorize a aprendizagem e a resolução de problemas
- Definir metas estratégicas de melhoria
- Ensine e treine os membros da equipe em:
- – Habilidades
- de resolução de problemas – Técnicas
- de experimentação – Praticando falhas
As melhores práticas envolvem ganhar e perder, falhar rapidamente, remover barreiras, ajustar sistemas, quebrar softwares complexos usando ferramentas populares e, mais importante, levar as pessoas a responder de maneiras que resolvam problemas rapidamente, sejam decisivas e sejam criativas e inovadoras.
Trata-se de criar uma cultura onde as pessoas esperam mais. Trata-se de mudar sua mentalidade para cumprir o que é prometido e entregar valor de maneiras que encantem.