As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Integração e entrega contínuas
Evolua e melhore os serviços e as aplicações com mais rapidez do que organizações que usam processos tradicionais de desenvolvimento de software e gerenciamento de infraestrutura.
A adoção de práticas de DevOps
Iniciar
Adotar o gerenciamento de componentes de software
O gerenciamento de componentes de software é a prática de gerenciar todos os componentes individuais usados para criar software, incluindo bibliotecas, frameworks, repositórios de código-fonte, módulos, artefatos e dependências de terceiros. Recomendamos que você use um sistema de controle de versão, como o Git ou o Apache Subversion, para gerenciar o código-fonte, permitir a colaboração e manter um histórico das alterações no código. Você pode monitorar alterações e eventos no repositório para automatizar o processo, criar pipelines, gerenciar seu código e integrar seus fluxos de trabalho com serviços adicionais, conforme necessário.
Criar os pipelines de CI/CD.
Os pipelines de CI/CD são conjuntos de instruções automatizadas que são iniciadas por alterações confirmadas no sistema de controle de versão. Eles geralmente incluem instruções para criar a aplicação, executar testes automatizados e implantar código em um ambiente específico. Você pode configurar um pipeline automatizado de CI/CD usando ferramentas como AWS CodePipeline, Jenkins, GitLab ou CircleCI. Também é possível configurá-los diretamente em sistemas de controle de versão compatíveis com a geração de pipeline.
Comece com um pipeline mínimo viável para integração contínua e, em seguida, faça a transição para um pipeline de entrega contínua
Considere as janelas de implantação, em quais dias e horários você deseja implantar seu código. Considere as horas de baixa demanda do seu sistema. Portanto, se você precisar reverter, isso terá o menor impacto sobre seus clientes. Outras práticas recomendadas incluem evitar implantações às sextas-feiras e implementar um congelamento de código durante datas de pico elevado ou antes dos feriados. Considere definir regras sobre a implantação de código quando o autor da confirmação não estiver disponível (por exemplo, em férias). Lembre-se de que as implantações falham, e talvez você precise contar com ajuda externa. Avalie diferentes métodos de implantação, como implantações no local, contínuas, imutáveis e azul/verde. Considere o uso de serviços totalmente gerenciados para fluxos de trabalho de entrega contínua, a fim de aumentar a disponibilidade e a segurança e, ao mesmo tempo, minimizar a complexidade e o gerenciamento.
Implementar testes automatizados
As práticas modernas recomendam o shifting left (aproximar os testes do desenvolvedor e do IDE
Os testes automatizados detectam erros no início do processo de desenvolvimento e inclui testes de unidade, testes de integração e testes funcionais. Recomendamos que você incentive os desenvolvedores a usar ferramentas
Criar documentação
Além de implementar um pipeline de CI/CD para agilizar os fluxos de trabalho de desenvolvimento, você deve manter uma documentação clara e abrangente para garantir a eficácia, a capacidade de manutenção e a escalabilidade contínuas do pipeline. A documentação é um aspecto vital dos pipelines de CI/CD, pois fornece às equipes de desenvolvimento uma compreensão clara do design, dos componentes e dos processos do pipeline. Ao criar a documentação, comece com uma visão geral do pipeline, explique as concessões da arquitetura e do design, descreva as ferramentas e tecnologias que estão sendo usadas, especifique a configuração e as configurações iniciais, descreva as medidas de segurança e o controle de acesso e inclua informações de solução de problemas e manutenção.
Usar infraestrutura como código
Use ferramentas como Terraform, Ansible ou AWS CloudFormation para gerenciar a infraestrutura e garantir ambientes consistentes e reproduzíveis. Trate sua infraestrutura como código, acompanhe as alterações na infraestrutura e evite fazer alterações diretamente no console. Defina toda a infraestrutura, incluindo o provisionamento de banco de dados, como código e implante essas alterações usando pipelines. Considere executar a integração do banco de dados como código em pipelines com um pequeno subconjunto de dados de produção limpos. Quando possível, faça as alterações e acompanhe essas alterações no código.
Assim como no código de software, siga estas práticas recomendadas para seu código de infraestrutura:
-
Use o controle de versões.
-
Faça uso de sistemas de rastreamento de bugs e geração de tíquetes.
-
Peça aos colegas que revisem as alterações antes de aplicá-las.
-
Estabeleça padrões e designs de código de infraestrutura.
-
Teste as alterações na infraestrutura.
Manter e acompanhar métricas padrão
Para manter um alto nível de performance, desenvolva e acompanhe as principais métricas para entender o impacto nos negócios e na integridade de seus pipelines, incluindo:
-
Frequência de criação. O número de criações oferece insights sobre a produtividade da sua equipe e a complexidade das alterações.
-
Frequência de implantação. Implantações regulares indicam um processo de desenvolvimento ágil e íntegro.
-
Tempo de antecedência das alterações. Medir o tempo médio para que as alterações cheguem à produção pode ajudar você a identificar gargalos em seu processo de implantação.
-
Tempo médio de processamento do pipeline. O tempo médio da etapa inicial do pipeline até cada etapa subsequente pode ajudar a otimizar seu fluxo de trabalho.
-
Volume de alterações de produção. Acompanhar o número de mudanças que chegam à produção pode fornecer insights sobre a estabilidade do seu ambiente de produção.
-
Tempo de criação. O tempo médio de criação pode indicar possíveis problemas na base de código ou na infraestrutura.
Avançado
Usar gerenciamento de configuração
As ferramentas de gerenciamento de configuração desempenham um papel fundamental na automação da implantação, da configuração e do gerenciamento de software e infraestrutura. Elas fornecem uma abordagem sistemática para lidar com mudanças e manter o estado desejado de infraestrutura, software e configurações em vários ambientes. Essas ferramentas permitem que os desenvolvedores definam o estado desejado de um sistema usando linguagens declarativas ou imperativas. Em seguida, a ferramenta de gerenciamento de configuração automatiza o processo de aplicação dessas configurações aos sistemas de destino, garantindo consistência e repetibilidade.
Use ferramentas de gerenciamento de configuração para automatizar a implantação, a configuração e o gerenciamento de software e infraestrutura. O Gerenciador de Estados do AWS Systems Manageré um serviço de gerenciamento de configuração seguro e escalável que automatiza o processo de manter os nós gerenciados e outros recursos da AWS em um estado definido por você.
Integrar monitoramento e registro em log
A integração de soluções de monitoramento e registro em log em pipelines de CD oferece vários benefícios para as equipes de desenvolvimento e para o processo geral de desenvolvimento de software. Essas soluções podem fornecer insights em tempo real sobre a performance da aplicação, permitir a identificação e a resolução mais rápidas de problemas e promover a melhoria contínua para ajudar a garantir que as aplicações permaneçam confiáveis, com performance e escaláveis durante todo o ciclo de vida. Investir em soluções de monitoramento e registro em log é um aspecto fundamental para manter um pipeline de CD robusto e eficiente e, em última análise, contribui para a entrega bem-sucedida de software de alta qualidade.
Criar uma cadência para mesclagem
Confirme ou mescle as alterações de código na ramificação da linha principal (trunk ou principal) pelo menos uma vez ao dia ou, de preferência, várias vezes ao dia após cada tarefa. Essa cadência leva a várias invocações diárias do pipeline. Um modelo de fluxo de trabalho ramificado baseado em pull se alinha a essa abordagem. Use sinalizadores de recursos
Capturar o comportamento pós-implantação
Depois de uma implantação, capture o comportamento da produção usando testes sintéticos automatizados e sincronize os resultados com o pipeline de entrega contínua para garantir que as ações corretivas ocorram imediatamente. A principal prioridade dos desenvolvedores deve ser corrigir os erros descobertos nos pipelines o mais rápido possível, confirmar as alterações de código no repositório do código-fonte e verificar a resolução de erros no pipeline.
As práticas recomendadas pós-implantação incluem observar os indicadores-chave de performance (KPIs) mais importantes e validar se não há erros no ambiente de produção. Automatize o tratamento de erros e a avaliação de KPIs pós-implantação para quantificar o impacto do seu lançamento. Gere automaticamente métricas de velocidade, segurança e estabilidade que os desenvolvedores podem usar para fazer melhorias. Para obter mais informações, consulte a solução Painel de Monitoramento de DevOps
Excel
Adote práticas e tecnologias de ponta para uma performance ideal. O refinamento contínuo de seus processos de CI/CD ajuda você a melhorar a qualidade do software, a reduzir o tempo de lançamento no mercado e a aumentar a agilidade. Novas técnicas e ferramentas surgem continuamente, o que torna essencial que sua organização se mantenha informada e se adapte para manter uma vantagem competitiva.
Para permanecer adaptável, considere o seguinte:
-
Defina tudo como código, incluindo sua aplicação, configuração, infraestrutura, dados, contas e organizações da AWS, pipelines de implantação, redes e controles de segurança e conformidade.
-
Crie pipelines de implantação
correspondentes para imagens computacionais, serviços compartilhados e aplicações. -
Considere um modelo do GitOps em que solicitações baseadas em pull iniciam um fluxo de trabalho para implantar alterações comparando o estado da infraestrutura existente com o estado desejado, conforme descrito no código.
-
Considere usar pipelines de CD para implantar machine learning (ML), dados, Internet das Coisas (IoT) e outras workloads.
-
Assine digitalmente todos os artefatos de criação e armazene-os em um repositório seguro.
-
Rastreie a proveniência do software gerando automaticamente uma lista de materiais de software que cria um registro de todos os artefatos versionados e assinados digitalmente que são implantados nos clientes.
-
Depois de eliminar todas as atividades manuais em um processo de entrega de software, remova os quadros de revisão manual.
Para aplicações e serviços que automatizaram todo o processo de entrega de software, considere a implantação contínua, em que as equipes implementam mudanças que passam todas as verificações em um pipeline para os clientes em produção. Para uma visualização, consulte o primeiro diagrama em O que é entrega contínua
Integrar tecnologias de IA/ML
A integração das tecnologias de inteligência artificial e machine learning (ML) em pipelines de CI/CD oferece vários benefícios, incluindo os seguintes:
-
Geração automatizada de testes
-
Priorização inteligente de testes
-
Analytics preditivo para detecção de problemas
-
Detecção de anomalias e análise da causa raiz
-
Revisão de código e garantia de qualidade
-
Otimização da implantação
Para obter mais informações, consulte Adicionar inteligência às suas operações de desenvolvedor
Adotar práticas de engenharia do caos
A engenharia do caos envolve a injeção intencional de falhas nos sistemas para testar sua capacidade de resistir e se recuperar de eventos inesperados. Ao identificar pontos fracos e abordá-los de forma proativa, as organizações podem melhorar a confiabilidade geral do sistema e minimizar o impacto de possíveis problemas.
Adote práticas de engenharia do caos para testar a resiliência de seus sistemas usando ferramentas como Gremlin, Chaos Monkey ou Litmus. Execute experimentos controlados regularmente para identificar vulnerabilidades, validar a tolerância a falhas e garantir que sua aplicação lide com falhas inesperadas sem problemas. Essa abordagem proativa ajuda a melhorar a confiabilidade do sistema e contribui para um pipeline de CI/CD mais robusto.
Otimizar a performance
Otimizea performance da sua aplicação continuamente usando ferramentas de criação de perfil, monitoramento em tempo real e ciclos de feedback. Aplique técnicas como as seguintes para garantir que suas aplicações possam lidar com o aumento do tráfego e da demanda:
-
Otimização de código
-
Criação de perfil
-
Monitoramento em tempo real
-
Encaminhamentos de feedback
-
Armazenamento em cache
-
Balanceamento de carga
-
Testes de escalabilidade e performance
Implementar a observabilidade avançada
Elevar a observabilidade da sua infraestrutura de nuvem vai além do básico de coletar, agregar e analisar métricas, logs e rastreamentos. Quando a observabilidade é aprimorada com ferramentas como o Amazon CloudWatch e AWS X-Ray, ela evolui para uma prática estratégica que estimula a entrega contínua e a inovação.
Em um pipeline robusto de CI/CD, a observabilidade avançada permite que você descubra insights, não apenas sobre suas aplicações e infraestrutura, mas também sobre a performance e a integridade de todo o sistema, incluindo o próprio pipeline. Esses insights ajudam você a:
-
Identificar, compreender e resolver rapidamente possíveis problemas para melhorar a estabilidade da aplicação e reduzir o tempo de inatividade
-
Simplificar seus processos de CI/CD para criar entregas mais rápidas e confiáveis
-
Obter insights mais profundos sobre o impacto das alterações e implantações de código para impulsionar a tomada de decisões informada
-
Otimizar a utilização de recursos para melhorar a eficiência operacional e a relação custo-benefício
Para elevar a observabilidade:
-
Incorpore a observabilidade em todas as camadas de suas aplicações e infraestrutura para criar uma visão abrangente da performance, do comportamento e da integridade de seus sistemas.
-
Centralize a coleta, o armazenamento e a análise de dados com ferramentas como o Amazon CloudWatch para unificar seus dados de observabilidade para facilitar o acesso e a interpretação.
-
Use AWS X-Ray para rastreamento distribuído para entender a performance de suas aplicações e seus serviços subjacentes.
-
Estabeleça loops de feedback para melhoria contínua e use seus dados de observabilidade para impulsionar aprimoramentos iterativos em seus sistemas.
Adotar a observabilidade avançada não significa apenas manter seus sistemas, é um movimento estratégico para alcançar a excelência operacional e impulsionar a inovação contínua em sua organização.
Implementar práticas de GitOps
Implemente as práticas do GitOps para gerenciar as configurações de infraestrutura e aplicações usando um repositório Git como uma única fonte confiável. Essa abordagem simplifica o gerenciamento de alterações, aprimora a rastreabilidade e garante a consistência em todos os ambientes.