Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Com o planejamento concluído, a próxima fase é criar e configurar a solução em um ambiente de desenvolvimento, aderindo às práticas recomendadas e garantindo a qualidade por meio de testes. Uma solução nativa de nuvem usa padrões de arquitetura escalonáveis, resilientes e observáveis para maximizar os benefícios dos serviços do Azure. Construção em um ambiente não-produtivo com fortes práticas de teste e automação garante a qualidade e a preparação para a implantação em produção.
Desenvolver novas soluções nativas de nuvem
O desenvolvimento nativo de nuvem requer uma abordagem estruturada que integra as práticas de qualidade desde o início. Essas diretrizes ajudam você a criar soluções confiáveis, seguras e escalonáveis por meio de práticas de desenvolvimento comprovadas.
Aplicar princípios do Well-Architected Framework durante o desenvolvimento
Uma solução nativa de nuvem se beneficia da aplicação consistente dos princípios do WAF (Well-Architected Framework) Well-Architected Framework (WAF) fornece princípios essenciais que orientam o desenvolvimento nativo de nuvem eficaz. Integre esses cinco pilares ao processo de desenvolvimento para criar aplicativos robustos que têm um bom desempenho em produção.
Desenvolver soluções em um ambiente de não produção
Crie ambientes de desenvolvimento que espelham as configurações de produção. Configure ambientes de não produção (desenvolvimento, teste, QA) que espelham de perto a configuração de produção. Quanto mais próximos seus ambientes de teste estiverem de prod, mais confiança você terá de que as coisas funcionam após a liberação. Essa abordagem é especialmente importante ao adicionar novos recursos a uma carga de trabalho existente.
Use conjuntos de dados realistas que representam volumes de dados de produção. Teste com dados que correspondam ao tamanho e à complexidade das cargas de trabalho de produção. Grandes conjuntos de dados expõem gargalos de desempenho e problemas de dimensionamento que pequenos conjuntos de dados de teste perdem. Anonimize os dados de produção ou gere dados sintéticos que preservam as propriedades estatísticas dos dados reais.
Implemente controles de custo para ambientes de não produção. Use o Azure DevTest Labs ou o agendamento de recursos para iniciar e parar recursos automaticamente quando não estiver em uso. Aplique as camadas de serviço apropriadas para cargas de trabalho de desenvolvimento e implemente limites de gastos para evitar custos inesperados, mantendo a eficácia do teste.
Para obter mais informações, consulte Configurar o ambiente de teste no WAF.
Implementar alterações usando o controle do código-fonte e CI/CD
Armazene todo o código e a configuração em um repositório Git. Acompanhe o código do aplicativo, os modelos de infraestrutura, os scripts de implantação e os arquivos de configuração no controle de versão. Essa prática fornece um histórico completo de alterações e permite a colaboração entre os membros da equipe.
Divida o trabalho de desenvolvimento em pequenas e frequentes confirmações. Conclua o desenvolvimento de funcionalidades em pequenos incrementos que podem ser mesclados e testados independentemente. Essa abordagem reduz conflitos de integração e facilita a identificação da origem dos problemas quando eles ocorrem.
Automatizar construções e testes em cada alteração de código. Configure pipelines de CI/CD que compilem automaticamente o código, executem testes e implantem em ambientes não-produtivos quando as alterações forem confirmadas. Loops de feedback rápidos ajudam os desenvolvedores a identificar e corrigir problemas rapidamente.
Use sinalizadores de recursos para controlar o lançamento da nova funcionalidade. Implemente alternâncias de recursos que permitem implantar código em produção, mantendo novos recursos desabilitados até que estejam prontos para os usuários. Essa estratégia separa a implantação da versão e permite distribuições mais seguras e controladas.
Implementar o monitoramento durante o desenvolvimento
Integre o Azure Monitor e o Application Insights ao código do aplicativo. Adicione a coleta de dados de monitoramento para acompanhar as principais métricas de desempenho, interações do usuário e indicadores de integridade do sistema. Configure essas ferramentas durante o desenvolvimento para garantir que elas funcionem corretamente antes da implantação de produção.
Implemente o registro em log estruturado em todo o aplicativo. Use formatos de log consistentes e inclua informações contextuais, como IDs de usuário, IDs de solicitação e identificadores de processo de negócios. Estruturar seus logs como objetos JSON para habilitar recursos avançados de consulta e análise.
Configure alertas para as principais métricas e condições de falha. Configure o monitoramento proativo que notifica você quando as taxas de erro aumentam, os tempos de resposta degradam ou as métricas de negócios ficam fora dos intervalos esperados. Defina limites de alerta com base em seus objetivos de nível de serviço e requisitos de negócios.
Crie painéis que fornecem visibilidade do desempenho do sistema. Crie painéis de monitoramento que mostram a integridade de seu aplicativo, infraestrutura e processos de negócios. Inclua métricas importantes para equipes técnicas e stakeholders de negócios para habilitar decisões controladas por dados.
Para obter mais informações, consulte Criar um sistema de monitoramento e instrumentar um aplicativo no WAF.
Validar soluções nativas de nuvem com testes
O teste abrangente valida que sua solução atende aos requisitos de negócios e é executada de forma confiável em condições reais. Cada tipo de teste serve a uma finalidade específica para garantir a qualidade da solução.
Execute testes funcionais de ponta a ponta para verificar fluxos de trabalho de negócios. Teste cenários completos de usuário desde a autenticação até a conclusão da transação usando dados e interações realistas. Valide se os novos recursos funcionam corretamente e que a funcionalidade existente permanece intacta após as alterações. Execute testes de regressão para capturar efeitos colaterais não intencionais do novo desenvolvimento.
Realize testes de aceitação do usuário com os stakeholders de negócios. Envolva usuários reais ou representantes empresariais para validar que a solução atende às suas necessidades e expectativas. Faça com que eles testem os principais cenários em um ambiente UAT e forneçam comentários sobre usabilidade e funcionalidade. Obtenha aprovação formal das partes interessadas antes de iniciar a implantação em produção.
Execute o teste de carga em condições realistas para validar o desempenho. Use o Teste de Carga do Azure para simular os volumes de usuário esperados e a taxa de transferência de dados. Teste em níveis de carga de pico e além para identificar gargalos de desempenho e limites de dimensionamento. Medir tempos de resposta, taxa de transferência e utilização de recursos para garantir que sua solução atenda aos requisitos de desempenho.
Execute testes de segurança e conformidade para identificar vulnerabilidades. Execute verificações de segurança automatizadas no código do aplicativo, imagens de contêiner e configurações de infraestrutura. Use o Microsoft Defender para Nuvem para verificar se há configurações incorretas de segurança e violações de conformidade. Resolva vulnerabilidades de alto risco antes da implantação e implemente controles de compensação para riscos aceitos.
Resolva problemas críticos antes da implantação de produção. Trate as fases de teste como portões de qualidade que devem ser passados antes de prosseguir. Corrija problemas de desempenho que impedem a reunião de contratos de nível de serviço, resolvam vulnerabilidades de segurança que representam um risco significativo. Resolva os defeitos funcionais que afetam os principais processos de negócios. Documente problemas conhecidos de baixa prioridade com planos de resolução futura.
Manter conjuntos de teste de integração e de unidade automatizados. Crie testes automatizados abrangentes que validem componentes individuais e suas interações com dependências externas. Execute esses testes como parte do pipeline de CI/CD e após cada correção de bug para evitar regressões. Um robusto conjunto de testes automatizados permite entrega contínua confiante em ambientes nativos de nuvem.
Criar infraestrutura reutilizável
Depois que a solução modernizada passar em todos os testes no ambiente de não produção, você deverá capturar a configuração da infraestrutura e as configurações como código, para que ela possa ser facilmente replicada em ambientes de produção e futuros. Infraestrutura reutilizável significa usar modelos de IaC (infraestrutura como código) e automação para consistência e velocidade.
Crie modelos de IaC para configurações comprovadas. Pegue a arquitetura final do ambiente de teste (que espelha o que você deseja no prod) e codifique-a. Use modelos Bicep, Terraform ou Azure Resource Manager para definir sua infraestrutura. Parametrize esses modelos para que eles possam ser reutilizados para diferentes estágios, como desenvolvimento, teste, prod com pequenos ajustes, como nomes ou tamanhos. Essa configuração garante que o ambiente de produção criado corresponda ao que você testou. Ele evita o erro humano ao clicar manualmente no portal do Azure para criar recursos. Isso também significa que, se você precisar recriar o ambiente, como para recuperação de desastre ou implantação em novas regiões, você terá a implantação de infraestrutura pronta. Para obter mais informações, consulte Gerenciamento de CAF – Gerenciar implantações baseadas em código.
Armazene modelos no controle de versão. Verifique seu código de infraestrutura em um repositório Git (juntamente com o código do aplicativo ou em um repositório separado). Use o GitHub ou o Azure DevOps para gerenciar ativos IaC com controle de versão adequado. O controle de versão permite revisões de código, dá suporte à colaboração em equipe e incentiva a reutilização de modelo entre projetos. Essa abordagem fornece rastreabilidade completa para alterações de infraestrutura e dá suporte a recursos de reversão quando ocorrem problemas.
Automatizar a instalação e configuração das dependências. Crie scripts ou tarefas de pipeline para implantar esses modelos e também lidar com as tarefas de configuração ou propagação necessárias. Use Azure Pipelines, GitHub Actions para executar tarefas de implantação que utilizam o modelo de IaC e o implantam em uma assinatura/grupo de recursos de destino. Automatize a instalação de dependências do aplicativo, a configuração de configurações e o gerenciamento de segredos. A meta é uma configuração de ambiente de um clique (ou de um comando): do nada para um ambiente totalmente em execução que corresponda ao que você testou.
Teste a IaC e a automação de ponta a ponta. Use uma assinatura ou grupo de recursos do Azure separado como um ambiente de testes e pratique a implantação de todo o ambiente do zero usando seus modelos e scripts. Teste se seus modelos de IaC, pipelines e scripts podem criar a pilha completa de infraestrutura a partir do zero. Teste diferentes cenários de implantação, incluindo implantação inicial, atualizações de configuração e procedimentos de reversão para confirmar se a automação funciona corretamente.
Para obter mais informações, consulte Projetar uma mudança no abastecimento de desenvolvimento de cargas de trabalho e Infraestrutura como código no WAF.
Criar documentação de implantação
Mesmo com a automação, ter uma boa documentação em torno de implantações é crucial para auditoria, para integrar novos membros da equipe e para manutenção futura. A documentação de implantação deve abranger configurações, procedimentos e etapas de reversão no formato legível por humanos.
Documentar configurações e etapas de configuração. Registre todas as configurações específicas do ambiente, cadeias de conexão, pontos de extremidade de serviço e configurações de segurança na documentação acessível. Inclua instruções de implantação passo a passo, requisitos de pré-requisito e etapas de validação pós-implantação. Esta documentação permite implantações consistentes e dá suporte à solução de problemas quando ocorrem problemas. Se um novo engenheiro tivesse que realizar a implantação, ele poderia ler este documento para acompanhar ou entender o resultado do pipeline.
Atualize os procedimentos de reversão e recuperação. Depois de concluir os testes, formalize as etapas para reverter as alterações quando ocorrerem problemas de implantação. Inclua gatilhos de reversão, procedimentos de backup e restauração de dados e etapas de validação de recuperação. Teste os procedimentos de reversão e recuperação regularmente para garantir que eles funcionem corretamente quando necessário. Essa preparação reduz o tempo de inatividade.
Colete toda essa documentação em um local central. Use o SharePoint, o GitHub ou um wiki para armazenar essas informações. Verifique se a equipe e a equipe de suporte sabem onde encontrá-la. Em um incidente de alto estresse, ter documentos claros em mãos é um salva-vidas.