Eventos
Aceite o Desafio do Microsoft Learn
19 de nov., 23 - 10 de jan., 23
Ignite Edition - Desenvolva habilidades no Microsoft Azure e ganhe um selo digital até 10 de janeiro!
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Este artigo descreve um fluxo de trabalho DevOps de alto nível para implantar alterações de aplicativo em ambientes de preparo e produção no Azure. A solução usa práticas de CI/CD (integração contínua/implantação contínua) com o Azure Pipelines.
Importante
Este artigo aborda uma arquitetura geral de CI/CD usando o Azure Pipelines. Não se destina a abranger as especificidades da implantação em ambientes diferentes, como Azure App Services, Máquinas Virtuais e Azure Power Platform. As especificidades da plataforma de implantação são abordadas em artigos separados.
Baixe um Arquivo Visio dessa arquitetura.
Observação
Embora este artigo aborde CI/CD para alterações de aplicativo, o Azure Pipelines também pode ser usado para criar pipelines de CI/CD para alterações de IaC (infraestrutura como código).
O fluxo de dados neste cenário ocorre da seguinte forma:
Pipeline de PR – uma PR (solicitação de pull) para Git do Azure Repos dispara um pipeline de PR. Esse pipeline executa verificações de qualidade rápidas. Essas verificações devem incluir:
Se qualquer uma das verificações falhar, a execução do pipeline será encerrada e o desenvolvedor precisará fazer as alterações necessárias. Se todas as verificações forem aprovadas, o pipeline deverá exigir uma revisão de PR. Se a revisão de PR falhar, o pipeline terminará e o desenvolvedor terá que fazer as alterações necessárias. Se todas as verificações e revisões de PR forem aprovadas, a PR será mesclada com êxito.
Pipeline de CI – uma mesclagem para Git do Azure Repos dispara um pipeline de CI. Esse pipeline executa as mesmas verificações que o pipeline de PR com algumas adições importantes. O pipeline de CI executa testes de integração. Esses testes de integração não devem exigir a implantação da solução, pois os artefatos de build ainda não foram criados. Se os testes de integração exigirem segredos, o pipeline obterá esses segredos do Azure Key Vault. Se qualquer uma das verificações falhar, o pipeline será encerrado e o desenvolvedor precisará fazer as alterações necessárias. O resultado de uma execução bem-sucedida desse pipeline é a criação e publicação de artefatos de build
Gatilho de pipeline de CD – a publicação de artefatos dispara o pipeline de CD.
Versão de CD para preparo – o pipeline de CD baixa os artefatos de build criados no pipeline de CI e implanta a solução em um ambiente de preparo. Em seguida, o pipeline executa testes de aceitação no ambiente de preparo para validar a implantação. Se qualquer teste de aceitação falhar, o pipeline terminará e o desenvolvedor terá que fazer as alterações necessárias. Se os testes forem bem-sucedidos, uma tarefa de validação manual poderá ser implementada para exigir que uma pessoa ou grupo valide a implantação e retome o pipeline.
Lançamento de CD para produção – se a intervenção manual for retomada ou não houver intervenção manual implementada, o pipeline lançará a solução para produção. O pipeline deve executar smoke tests em produção para garantir que a versão esteja funcionando conforme o esperado. Se uma etapa de intervenção manual resultar em um cancelamento, a versão falhar ou os smoke tests falharem, a versão será revertida, o pipeline terminará e o desenvolvedor terá que fazer as alterações necessárias.
Monitoramento – o Azure Monitor coleta dados de observabilidade, como logs e métricas, para que um operador possa analisar dados de integridade, desempenho e uso. O Application Insights coleta todos os dados de monitoramento específicos do aplicativo, como rastreamentos. O Azure Log Analytics é usado para armazenar todos esses dados.
Um repositório Git do Azure Repos serve como um repositório de código que fornece controle de versão e uma plataforma para projetos colaborativos.
O Azure Pipelines fornece uma maneira de criar, testar, empacotar e liberar código de aplicativo e infraestrutura. Este exemplo tem três pipelines distintos com as seguintes responsabilidades:
Os Feeds de Artefatos do Azure permitem que você gerencie e compartilhe pacotes de software, como Maven, npm e NuGet. Os feeds de artefato permitem que você gerencie o ciclo de vida de seus pacotes, incluindo controle de versão, promoção e desativação de pacotes. Isso ajuda você a garantir que sua equipe esteja usando as versões mais recentes e seguras de seus pacotes.
Key Vault fornece uma maneira de gerenciar dados seguros para sua solução, incluindo segredos, chaves de criptografia e certificados. Nessa arquitetura, ela é usada para armazenar segredos do aplicativo. Esses segredos são acessados por meio do pipeline. Os segredos podem ser acessados pelo Azure Pipelines com uma tarefa Key Vault ou vinculando segredos de Key Vault.
Monitor é um recurso de observabilidade que coleta e armazena métricas e logs, telemetria de aplicativos e métricas de plataforma para os serviços do Azure. Use esses dados para monitorar o aplicativo, configurar alertas e painéis e executar a análise da causa raiz de falhas.
O Application Insights é um serviço de monitoramento que fornece insights em tempo real sobre o desempenho e o uso de seus aplicativos Web.
O workspace do Log Analytics fornece um local central onde você pode armazenar, consultar e analisar dados de várias fontes, incluindo recursos, aplicativos e serviços do Azure.
Embora este artigo se concentre no Azure Pipelines, você pode considerar estas alternativas:
O Azure DevOps Server (conhecido como Team Foundation Server) poderia ser usado como substituto local.
Jenkins é uma ferramenta de código aberto usada para automatizar builds e implantações.
GitHub Actions permite que você automatize seus fluxos de trabalho de CI/CD diretamente do GitHub.
Os repositórios do GitHub podem ser substituídos como o repositório de código. O Azure Pipelines se integra perfeitamente aos repositórios do GitHub.
Este artigo se concentra em práticas gerais de CI/CD com o Azure Pipelines. Veja a seguir alguns ambientes de computação nos quais você pode considerar a implantação:
O Serviço de Aplicativo é um serviço com base em HTTP para hospedagem de aplicativos Web, APIs REST e back-ends móveis. Você pode desenvolver em seu idioma favorito e aplicativos são executados e dimensionados com facilidade em ambientes baseados em Windows e Linux. Os Aplicativos Web dão suporte a slots de implantação, como preparo e produção. Você pode implantar um aplicativo em um slot de preparo e liberá-lo para o slot de produção.
As Máquinas Virtuais do Azure lidam com cargas de trabalho que exigem um alto grau de controle, ou dependem dos componentes do sistema operacional e serviços que não são possíveis com Aplicativos Web (por exemplo, o Windows GAC ou COM).
O Azure Power Platform é uma coleção de serviços de nuvem que permitem que os usuários criem, implantem e gerenciem aplicativos sem a necessidade de infraestrutura ou experiência técnica.
O Azure Functions é uma plataforma de computação sem servidor que você pode usar para criar aplicativos. Com o Functions, você pode usar gatilhos e associações para integrar serviços. As funções também dão suporte a slots de implantação, como preparo e produção. Você pode implantar um aplicativo em um slot de preparo e liberá-lo para o slot de produção.
O AKS (Serviço de Kubernetes do Azure) são um cluster do Kubernetes gerenciado no Azure. O Kubernetes é uma plataforma de orquestração de contêiner de código aberto.
Os Aplicativos de Contêiner do Azure permitem executar aplicativos em contêineres em uma plataforma sem servidor.
O uso de práticas comprovadas de CI e CD para implantar alterações de aplicativo ou infraestrutura oferece vários benefícios, incluindo:
Considere o Azure Pipelines e os processos de CI/CD para:
Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, confira Microsoft Azure Well-Architected Framework.
Implemente a IaC (Infraestrutura como Código) para definir sua infraestrutura e implantá-la em seus pipelines.
Considere o uso de uma das Tarefas de Tokenização disponíveis no mercado VSTS, no contexto geralmente se refere a um processo em que informações confidenciais (como chaves de API, senhas ou outros segredos) são substituídas por tokens ou espaços reservados durante a implantação ou configuração.
Use as Variáveis de Versão em suas definições de versão para fazer alterações de configuração de seus ambientes. As variáveis de versão podem ser definidas para uma versão inteira ou um determinado ambiente. Ao usar variáveis de informações secretas, selecione o ícone de cadeado.
Use agentes auto-hospedados se você estiver implantando em recursos em execução em uma rede virtual protegida. Você também pode considerar agentes auto-hospedados se estiver executando um grande volume de builds. Em casos de grandes volumes de build, agentes auto-hospedados podem ser usados para acelerar os builds de maneira econômica.
Use o Application Insights e outras ferramentas de monitoramento o mais cedo possível no seu pipeline de lançamento. Muitas organizações só começam o monitoramento em seus ambientes de produção. Ao monitorar outros ambientes, você pode identificar bugs desde o início do processo de desenvolvimento e evitar problemas em seu ambiente de produção.
Use recursos de monitoramento separados para produção.
Use pipelines YAML em vez da interface Clássica. Os pipelines YAML podem ser tratados como outros códigos. Os pipelines YAML podem ser verificados no controle do código-fonte e com controle de versão, por exemplo.
Use modelos YAML para promover a reutilização e simplificar pipelines. Por exemplo, pipelines de PR e CI são semelhantes. Um único modelo parametrizado pode ser usado para ambos os pipelines.
Crie ambientes além de preparo e produção para dar suporte a atividades como testes manuais de aceitação do usuário, teste de desempenho e carga e reversões.
A otimização de custos é a análise de maneiras de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, confira Visão geral do pilar de otimização de custo.
Os custos do Azure DevOps dependem do número de usuários em sua organização que precisam de acesso, juntamente com outros fatores, como o número de builds/versões simultâneos necessários e o números de usuários de teste. Para saber mais, confira Preços de Azure DevOps.
Essa Calculadora de preços fornece uma estimativa para a execução do Azure DevOps com 20 usuários.
O Azure DevOps é cobrado por mês e por usuário. Pode haver mais cobranças, dependendo da necessidade de pipelines simultâneos, além de usuários de teste ou licenças de usuário básicas adicionais.
Considere os benefícios de segurança do uso de agentes hospedados pela Microsoft ao escolher se deseja usar agentes hospedados pela Microsoft ou auto-hospedados.
Verifique se todas as alterações nos ambientes são feitas por meio de pipelines. Implemente RBACs (controles de acesso baseados em função) no princípio de privilégios mínimos, impedindo que os usuários acessem ambientes.
Integre as etapas no Azure Pipelines para acompanhar dependências, gerenciar o licenciamento, verificar se há vulnerabilidades e manter as dependências atualizadas.
Examine os seguintes recursos para saber mais sobre CI/CD e o Azure DevOps:
Eventos
Aceite o Desafio do Microsoft Learn
19 de nov., 23 - 10 de jan., 23
Ignite Edition - Desenvolva habilidades no Microsoft Azure e ganhe um selo digital até 10 de janeiro!
Registrar agoraTreinamento
Roteiro de aprendizagem
AZ-400: Implementar uma implantação contínua segura usando o Azure Pipelines - Training
AZ-400: Implementar uma implantação contínua segura usando o Azure Pipelines
Certificação
Microsoft Certified: DevOps Engineer Expert - Certifications
Esta certificação mede sua capacidade de realizar as seguintes tarefas técnicas: Projetar e implementar processos e comunicações, projetar e implementar uma estratégia de controle do código-fonte, projetar e implementar pipelines de criação e liberação, desenvolver um plano de segurança e conformidade e implementar uma estratégia de instrumentação.
Documentação
Arquitetura de soluções de DevOps para IaaS - Azure Pipelines
Fluxo de trabalho de DevOps de alto nível para implantar alterações de aplicativo em VMs usando práticas de CI (integração contínua) e CD (implantação contínua) usando o Azure Pipelines.
Arquitetura do Azure Pipelines para Aplicativos Web do Azure - Azure Pipelines
Aprenda a criar aplicativos Web usando ASP.NET, Java, Node.js ou PHP. Forneça valor mais rapidamente para seus clientes com um pipeline de CI/CD.
Arquitetura de soluções DevTest e DevOps - Azure Pipelines
Saiba como configurar uma infraestrutura de DevTest e DevOps para desenvolvimento, teste e implantação de um software baseado em IaaS.