Lista de verificação de DevOpsDevOps Checklist

DevOps é a integração do desenvolvimento, garantia de qualidade e operações de TI em uma cultura unificada e um conjunto de processos para entrega de software.DevOps is the integration of development, quality assurance, and IT operations into a unified culture and set of processes for delivering software. Use esta lista de verificação como um ponto de partida para avaliar seu processo e cultura de DevOps.Use this checklist as a starting point to assess your DevOps culture and process.

CulturaCulture

Assegure o alinhamento de negócios entre organizações e equipes.Ensure business alignment across organizations and teams. Conflitos por recursos, finalidade, metas e prioridades dentro de uma organização podem ser um risco para operações bem-sucedidas.Conflicts over resources, purpose, goals, and priorities within an organization can be a risk to successful operations. Verifique se as equipes de negócios, desenvolvimento e operações estão todas alinhadas.Ensure that the business, development, and operations teams are all aligned.

Verifique se toda a equipe compreende o ciclo de vida do software.Ensure the entire team understands the software lifecycle. Sua equipe precisa entender o ciclo de vida geral do aplicativo e em qual parte do ciclo de vida o aplicativo está no momento.Your team needs to understand the overall lifecycle of the application, and which part of the lifecycle the application is currently in. Isso ajuda a todos os membros da equipe a saber o que devem estar fazendo agora e para o que eles devem se planejar e se preparar no futuro.This helps all team members know what they should be doing now, and what they should be planning and preparing for in the future.

Reduza o tempo do ciclo.Reduce cycle time. Busque minimizar o tempo que leva para mover de ideias para software desenvolvido utilizável.Aim to minimize the time it takes to move from ideas to usable developed software. Limite o tamanho e o escopo dos lançamentos individuais para manter a carga de teste baixa.Limit the size and scope of individual releases to keep the test burden low. Automatize os processos de build, teste, configuração e implantação sempre que possível.Automate the build, test, configuration, and deployment processes whenever possible. Elimine quaisquer obstáculos para comunicação entre os desenvolvedores, bem como aqueles entre os desenvolvedores e as operações.Clear any obstacles to communication among developers, and between developers and operations.

Examine e aprimore os processos.Review and improve processes. Seus processos e procedimentos, automatizados e manuais, nunca são finais.Your processes and procedures, both automated and manual, are never final. Agende revisões regulares dos fluxos de trabalho, procedimentos e documentação atuais, com a meta de aperfeiçoamento contínuo.Set up regular reviews of current workflows, procedures, and documentation, with a goal of continual improvement.

Faça planejamento proativo.Do proactive planning. Planeje-se proativamente para falhas.Proactively plan for failure. Estabeleça processos para identificar rapidamente problemas quando eles ocorrem, escalone para os membros da equipe corretos para corrigi-los e confirme a resolução.Have processes in place to quickly identify issues when they occur, escalate to the correct team members to fix, and confirm resolution.

Aprenda com as falhas.Learn from failures. As falhas são inevitáveis, mas é importante aprender com as falhas para evitar repeti-las.Failures are inevitable, but it's important to learn from failures to avoid repeating them. Se uma falha operacional ocorrer, faça a triagem do problema, documente a causa e a solução e compartilhe as lições que foram aprendidas.If an operational failure occurs, triage the issue, document the cause and solution, and share any lessons that were learned. Sempre que possível, atualize os processos de build para detectar automaticamente esse tipo de falha no futuro.Whenever possible, update your build processes to automatically detect that kind of failure in the future.

Otimize para velocidade e colete dados.Optimize for speed and collect data. Todo aprimoramento planejado é uma hipótese.Every planned improvement is a hypothesis. Trabalhe com os menores incrementos possíveis.Work in the smallest increments possible. Trate novas ideias como experimentos.Treat new ideas as experiments. Instrumente os experimentos de forma que você possa coletar dados de produção para avaliar a eficiência deles.Instrument the experiments so that you can collect production data to assess their effectiveness. Esteja preparado para falhar rapidamente se a hipótese estiver errada.Be prepared to fail fast if the hypothesis is wrong.

Reserve tempo para o aprendizado.Allow time for learning. Tanto êxitos quanto falhas fornecem boas oportunidades de aprendizado.Both failures and successes provide good opportunities for learning. Antes de passar para novos projetos, reserve tempo suficiente para reunir as lições importantes e verifique se as lições são absorvidas pela sua equipe.Before moving on to new projects, allow enough time to gather the important lessons, and make sure those lessons are absorbed by your team. Dê também à equipe tempo para desenvolverem suas habilidades, experimentarem e aprenderem sobre novas ferramentas e técnicas.Also give the team the time to build skills, experiment, and learn about new tools and techniques.

Documente as operações.Document operations. Documente todas as ferramentas, processos e tarefas automatizadas com o mesmo nível de qualidade que seu código de produto.Document all tools, processes, and automated tasks with the same level of quality as your product code. Documente a arquitetura e o design atual dos sistemas aos quais você dá suporte, juntamente com processos de recuperação e outros procedimentos de manutenção.Document the current design and architecture of any systems you support, along with recovery processes and other maintenance procedures. Concentre-se nas etapas que você realmente executa e não em processos teoricamente ideais.Focus on the steps you actually perform, not theoretically optimal processes. Examine e atualize a documentação regularmente.Regularly review and update the documentation. Para o código, verifique se os comentários significativos são incluídos, especialmente em APIs públicas e use ferramentas para gerar automaticamente a documentação de código sempre que possível.For code, make sure that meaningful comments are included, especially in public APIs, and use tools to automatically generate code documentation whenever possible.

Compartilhe conhecimento.Share knowledge. A documentação é útil apenas se as pessoas sabem que ela existe e se podem encontrá-la.Documentation is only useful if people know that it exists and can find it. Verifique se a documentação está organizada e se pode ser encontrada com facilidade.Ensure the documentation is organized and easily discoverable. Seja criativo: Use falas (apresentações informais), vídeos ou boletins informativos para compartilhar conhecimento.Be creative: Use brown bags (informal presentations), videos, or newsletters to share knowledge.

DesenvolvimentoDevelopment

Fornece ambientes semelhantes aos de produção aos desenvolvedores.Provide developers with production-like environments. Se os ambientes de desenvolvimento e teste não corresponderem ao ambiente de produção, será difícil testar e diagnosticar problemas.If development and test environments don't match the production environment, it is hard to test and diagnose problems. Portanto, mantenha os ambientes de desenvolvimento e teste o mais próximos possível do ambiente de produção.Therefore, keep development and test environments as close to the production environment as possible. Verifique se os dados de teste são consistentes com os dados usados em produção, mesmo que se tratem de dados de exemplo e não de dados reais de produção (por motivos de conformidade ou de privacidade).Make sure that test data is consistent with the data used in production, even if it's sample data and not real production data (for privacy or compliance reasons). Planeje gerar dados de teste de exemplo e torná-los anônimos.Plan to generate and anonymize sample test data.

Verifique se todos os membros da equipe autorizada podem provisionar a infraestrutura e implantar o aplicativo.Ensure that all authorized team members can provision infrastructure and deploy the application. A configuração de recursos de produção e a implantação do aplicativo não devem envolver tarefas manuais complicadas ou conhecimento técnico detalhado do sistema.Setting up production-like resources and deploying the application should not involve complicated manual tasks or detailed technical knowledge of the system. Qualquer pessoa com as permissões corretas deve ser capaz de criar ou implantar recursos de produção sem precisar da equipe de operações.Anyone with the right permissions should be able to create or deploy production-like resources without going to the operations team.

Essa recomendação não implica que qualquer pessoa pode enviar atualizações dinâmicas por push para a implantação de produção.This recommendation doesn't imply that anyone can push live updates to the production deployment. Ela se trata de reduzir o atrito entre as equipes de desenvolvimento de garantia de qualidade para criar ambientes semelhantes aos de produção.It's about reducing friction for the development and QA teams to create production-like environments.

Instrumente o aplicativo para insight.Instrument the application for insight. Para entender a integridade do seu aplicativo, você precisa saber como ele está desempenhando e se está enfrentando erros ou problemas.To understand the health of your application, you need to know how it's performing and whether it's experiencing any errors or problems. Sempre inclua a instrumentação como um requisito de design e compile a instrumentação no aplicativo desde o início.Always include instrumentation as a design requirement, and build the instrumentation into the application from the start. A instrumentação deve incluir o log de eventos para análise da causa raiz, mas também a telemetria e as métricas para monitorar a integridade geral e o uso do aplicativo.Instrumentation must include event logging for root cause analysis, but also telemetry and metrics to monitor the overall health and usage of the application.

Acompanhe a dívida técnica.Track your technical debt. Em muitos projetos, os cronogramas de lançamento podem ser priorizados sobre a qualidade do código em algum grau.In many projects, release schedules can get prioritized over code quality to one degree or another. Sempre acompanhe quando isso ocorre.Always keep track when this occurs. Documente quaisquer atalhos ou outras implementações não ideais e agende um horário no futuro para revisitar esses problemas.Document any shortcuts or other nonoptimal implementations, and schedule time in the future to revisit these issues.

Considere a possibilidade de enviar atualizações por push diretamente para a produção.Consider pushing updates directly to production. Para reduzir o tempo do ciclo de lançamento geral, considere a possibilidade de enviar por push confirmações de código adequadamente testadas diretamente para a produção.To reduce the overall release cycle time, consider pushing properly tested code commits directly to production. Use alternâncias de recursos para controlar quais recursos estão habilitados.Use feature toggles to control which features are enabled. Isso permite que você se mova do desenvolvimento para o lançamento rapidamente, usando os botões para habilitar ou desabilitar os recursos.This allows you to move from development to release quickly, using the toggles to enable or disable features. As alternâncias também são úteis para executar testes como lançamentos canário, em que um recurso específico é implantado em um subconjunto do ambiente de produção.Toggles are also useful when performing tests such as canary releases, where a particular feature is deployed to a subset of the production environment.

TestesTesting

Automatize o teste.Automate testing. Testar manualmente o software é entediante e suscetível a erros.Manually testing software is tedious and susceptible to error. Automatize tarefas comuns de teste e integre os testes em seus processos de build.Automate common testing tasks and integrate the tests into your build processes. Testes automatizados garantem cobertura e reprodutibilidade de teste consistentes.Automated testing ensures consistent test coverage and reproducibility. Testes de interface do usuário integrados também devem ser executados por uma ferramenta automatizada.Integrated UI tests should also be performed by an automated tool. O Azure oferece recursos de desenvolvimento e teste que podem lhe ajudar a configurar e executar testes.Azure offers development and test resources that can help you configure and execute testing. Para obter mais informações, consulte Desenvolvimento e teste.For more information, see Development and test.

Teste em busca de falhas.Test for failures. Se um sistema não pode se conectar a um serviço, como ele responde?If a system can't connect to a service, how does it respond? Ele pode se recuperar depois que o serviço está disponível novamente?Can it recover once the service is available again? Torne o teste de injeção de falha uma parte padrão da análise em ambientes de preparo e de teste.Make fault injection testing a standard part of review on test and staging environments. Quando as práticas e o processo de teste estiverem maduros, considere a execução desses testes em produção.When your test process and practices are mature, consider running these tests in production.

Teste em produção.Test in production. O processo de lançamento não termina com a implantação na produção.The release process doesn't end with deployment to production. Estabeleça testes para garantir que o código implantado funciona conforme o esperado.Have tests in place to ensure that deployed code works as expected. Para implantações que raramente são atualizadas, agende o teste em produção como parte comum da manutenção.For deployments that are infrequently updated, schedule production testing as a regular part of maintenance.

Automatize testes de desempenho para identificar problemas de desempenho com antecedência.Automate performance testing to identify performance issues early. O impacto de um problema de desempenho sério pode ser tão grave quanto um bug no código.The impact of a serious performance issue can be as severe as a bug in the code. Embora testes funcionais automatizados possam impedir erros de aplicativo, eles podem não detectar problemas de desempenho.While automated functional tests can prevent application bugs, they might not detect performance problems. Defina metas de desempenho aceitáveis para métricas como latência, tempos de carregamento e uso de recursos.Define acceptable performance goals for metrics like latency, load times, and resource usage. Inclua testes de desempenho automatizados em seu pipeline de lançamento para verificar se o aplicativo satisfaz essas metas.Include automated performance tests in your release pipeline, to make sure the application meets those goals.

Execute testes de capacidade.Perform capacity testing. Um aplicativo pode funcionar bem em condições de teste e, em seguida, ter problemas em produção devido a limitações de escala ou de recurso.An application might work fine under test conditions, and then have problems in production due to scale or resource limitations. Sempre defina os limites de capacidade e de uso máximos esperados.Always define the maximum expected capacity and usage limits. Teste para verificar se o aplicativo pode lidar com esses limites, mas também teste o que acontece quando esses limites são excedidos.Test to make sure the application can handle those limits, but also test what happens when those limits are exceeded. O teste de capacidade deve ser executado em intervalos regulares.Capacity testing should be performed at regular intervals.

Após o lançamento inicial, você deve executar testes de capacidade e de desempenho sempre que atualizações são feitas ao código de produção.After the initial release, you should run performance and capacity tests whenever updates are made to production code. Use dados históricos para ajustar testes e para determinar quais tipos de testes precisam ser executadas.Use historical data to fine-tune tests and to determine what types of tests need to be performed.

Execute testes de penetração de segurança automatizados.Perform automated security penetration testing. Verificar se seu aplicativo é seguro é tão importante quanto testar qualquer outra funcionalidade.Ensuring your application is secure is as important as testing any other functionality. Torne os testes de penetração automatizados uma parte padrão do processo de build e de implantação.Make automated penetration testing a standard part of the build and deployment process. Agende testes de segurança e verificações de vulnerabilidade regulares em aplicativos implantados, monitorando em busca de ataques e de portas e pontos de extremidade abertos.Schedule regular security tests and vulnerability scanning on deployed applications, monitoring for open ports, endpoints, and attacks. Testes automatizados não removem a necessidade de exames de segurança detalhados em intervalos regulares.Automated testing does not remove the need for in-depth security reviews at regular intervals.

Realize o teste de continuidade de negócios automatizado.Perform automated business continuity testing. Desenvolva testes para continuidade de negócios de grande escala, incluindo failover e recuperação de backup.Develop tests for large-scale business continuity, including backup recovery and failover. Configure processos automatizados para executar esses testes regularmente.Set up automated processes to perform these tests regularly.

VersãoRelease

Automatize as implantações.Automate deployments. Automatize a implantação do aplicativo para ambientes de teste, de preparo e de produção.Automate deploying the application to test, staging, and production environments. A automação permite implantações mais rápidas e confiáveis e garante implantações consistentes em qualquer ambiente compatível.Automation enables faster and more reliable deployments, and ensures consistent deployments to any supported environment. Ela remove o risco de erro humano causado por implantações manuais.It removes the risk of human error caused by manual deployments. Ela também facilita o agendamento de lançamentos em horários adequados, para reduzir os efeitos de um potencial tempo de inatividade.It also makes it easy to schedule releases for convenient times, to minimize any effects of potential downtime.

Use a integração contínua.Use continuous integration. A CI (integração contínua) é a prática de mesclar todo o código de desenvolvedor em uma base de código central em um agendamento regular e, em seguida, executar automaticamente processos padrão de build e de teste.Continuous integration (CI) is the practice of merging all developer code into a central codebase on a regular schedule, and then automatically performing standard build and test processes. A CI garante que toda a equipe possa trabalhar em uma base de código simultaneamente, sem conflitos.CI ensures that an entire team can work on a codebase at the same time without having conflicts. Ela também garante que defeitos de código sejam encontrados o mais cedo possível.It also ensures that code defects are found as early as possible. De preferência, o processo de CI deve ser executado toda vez que o código é confirmado ou que o check-in dele é feito.Preferably, the CI process should run every time that code is committed or checked in. Na pior das hipóteses, ele deve ser executado uma vez por dia.At the very least, it should run once per day.

Considerar a adoção um modelo de desenvolvimento com base em tronco.Consider adopting a trunk based development model. Nesse modelo, os desenvolvedores são confirmados para um único branch (o tronco).In this model, developers commit to a single branch (the trunk). Há um requisito que confirmações nunca interrompam o build.There is a requirement that commits never break the build. Este modelo facilita CI, porque todo o trabalho de recurso é feito no tronco e conflitos de mesclagem são resolvidos quando a confirmação ocorre.This model facilitates CI, because all feature work is done in the trunk, and any merge conflicts are resolved when the commit happens.

Considere usar a entrega contínua.Consider using continuous delivery. A CD (entrega contínua) é a prática de garantir que o código esteja sempre pronto para implantar ao se compilar, testar e implantar automaticamente o código em ambientes semelhantes ao de produção.Continuous delivery (CD) is the practice of ensuring that code is always ready to deploy, by automatically building, testing, and deploying code to production-like environments. Adicionar a entrega contínua para criar um pipeline de CI/CD completo ajudará você a detectar defeitos no código assim que possível e garantirá que atualizações testadas corretamente possam ser lançadas em um período muito curto.Adding continuous delivery to create a full CI/CD pipeline will help you detect code defects as soon as possible, and ensures that properly tested updates can be released in a very short time.

A implantação contínua é mais um processo que pega automaticamente quaisquer atualizações que tenham passado pelo pipeline de CI/CD e as implanta na produção.Continuous deployment is an additional process that automatically takes any updates that have passed through the CI/CD pipeline and deploys them into production. A implantação contínua requer testes automáticos robustos e planejamento de processo avançado e pode não ser apropriada para todas as equipes.Continuous deployment requires robust automatic testing and advanced process planning, and may not be appropriate for all teams.

Faça alterações em incrementos pequenos.Make small incremental changes. Alterações de código grandes tem um maior potencial para introduzir bugs.Large code changes have a greater potential to introduce bugs. Sempre que possível, mantenha as alterações pequenas.Whenever possible, keep changes small. Isso limita os possíveis efeitos de cada alteração e torna mais fácil de entender e depurar eventuais problemas.This limits the potential effects of each change, and makes it easier to understand and debug any issues.

Controle a exposição a alterações.Control exposure to changes. Verifique se você está no controle de quando as atualizações estão visíveis para os usuários finais.Make sure you're in control of when updates are visible to your end users. Considere o uso de alternâncias de recurso para controlar quando os recursos são habilitados para os usuários finais.Consider using feature toggles to control when features are enabled for end users.

Implemente estratégias de gerenciamento de versão para reduzir o risco de implantação.Implement release management strategies to reduce deployment risk. Implantar uma atualização de aplicativo para produção sempre envolve algum risco.Deploying an application update to production always entails some risk. Para minimizar esse risco, use estratégias como o uso de lançamentos canário ou implantações de tipo azul/verde para implantar atualizações para um subconjunto de usuários.To minimize this risk, use strategies such as canary releases or blue-green deployments to deploy updates to a subset of users. Verifique se a atualização funciona conforme o esperado e, em seguida, distribua a atualização para o restante do sistema.Confirm the update works as expected, and then roll the update out to the rest of the system.

Documente todas as alterações.Document all changes. Atualizações secundárias e alterações de configuração podem ser uma fonte de confusão e de conflito no controle de versão.Minor updates and configuration changes can be a source of confusion and versioning conflict. Mantenha sempre um registro claro das alterações, independentemente de quão pequenas.Always keep a clear record of any changes, no matter how small. Registre em log tudo que for alterado, incluindo patches aplicados, alterações de política e alterações de configuração.Log everything that changes, including patches applied, policy changes, and configuration changes. (Não inclua dados confidenciais nesses logs.(Don't include sensitive data in these logs. Por exemplo, registre em log que uma credencial foi atualizada e quem fez a alteração, mas não registre as credenciais atualizadas.) O registro das alterações deve estar visível para toda a equipe.For example, log that a credential was updated, and who made the change, but don't record the updated credentials.) The record of the changes should be visible to the entire team.

Automatize as Implantações.Automate Deployments. Automatize todas as implantações e estabeleça sistemas para detectar eventuais problemas durante a distribuição.Automate all deployments, and have systems in place to detect any problems during rollout. Tenha um processo de mitigação para preservar o código existente e os dados de produção, antes que a atualização substitua-os em todas as instâncias de produção.Have a mitigation process for preserving the existing code and data in production, before the update replaces them in all production instances. Tenha uma forma automatizada de efetuar roll forward das correções ou de reverter as alterações.Have an automated way to roll forward fixes or roll back changes.

Considere tornar a infraestrutura imutável.Consider making infrastructure immutable. Infraestrutura imutável é o princípio segundo o qual não se deve modificar a infraestrutura após sua implantação para produção.Immutable infrastructure is the principle that you shouldn’t modify infrastructure after it’s deployed to production. Caso contrário, você pode entrar em um estado em que foram aplicadas alterações ad hoc, tornando difícil saber exatamente o que foi alterado.Otherwise, you can get into a state where ad hoc changes have been applied, making it hard to know exactly what changed. A infraestrutura imutável funciona substituindo-se servidores inteiros como parte de qualquer nova implantação.Immutable infrastructure works by replacing entire servers as part of any new deployment. Isso permite que o código e o ambiente de hospedagem sejam testado e implantados como um bloco.This allows the code and the hosting environment to be tested and deployed as a block. Uma vez implantados, os componentes da infraestrutura não são modificados até o próximo ciclo de build de implantação.Once deployed, infrastructure components aren't modified until the next build and deploy cycle.

MonitoramentoMonitoring

Torne os sistemas observáveis.Make systems observable. A equipe de operações deve ter sempre visibilidade clara da integridade e do status de um sistema ou serviço.The operations team should always have clear visibility into the health and status of a system or service. Configure pontos de extremidade de integridade externos para monitorar o status e verifique se os aplicativos estão codificados para instrumentar as métricas de operações.Set up external health endpoints to monitor status, and ensure that applications are coded to instrument the operations metrics. Use um esquema comum e consistente que ajuda a correlacionar eventos entre sistemas.Use a common and consistent schema that helps you correlate events across systems. Diagnóstico do Azure e Application Insights são o método padrão de acompanhamento da integridade e do status de recursos do Azure.Azure Diagnostics and Application Insights are the standard method of tracking the health and status of Azure resources. O Microsoft Operation Management Suite também fornece monitoramento centralizado e gerenciamento de soluções de nuvem ou híbridas.Microsoft Operation Management Suite also provides centralized monitoring and management for cloud or hybrid solutions.

Agregue e correlacione os logs e métricas.Aggregate and correlate logs and metrics. Um sistema de telemetria corretamente instrumentado fornecerá uma grande quantidade de dados de desempenho brutos e logs de eventos.A properly instrumented telemetry system will provide a large amount of raw performance data and event logs. Verifique se os dados de telemetria e de log são processados e correlacionados em um curto período de tempo, para que a equipe de operações sempre tenha uma imagem atualizada da integridade do sistema.Make sure that telemetry and log data is processed and correlated in a short period of time, so that operations staff always have an up-to-date picture of system health. Organize e exiba dados de maneiras que proporcionem uma exibição coesa de eventuais problemas para que, sempre que possível, fique claro quando os eventos estão correlacionados.Organize and display data in ways that give a cohesive view of any issues, so that whenever possible it's clear when events are related to one another.

Consulte sua política de retenção da empresa para requisitos de como os dados são processados e por quanto tempo eles devem ser armazenados.Consult your corporate retention policy for requirements on how data is processed and how long it should be stored.

Implemente notificações e alertas automatizados.Implement automated alerts and notifications. Configure ferramentas de monitoramento como Azure Monitor para detectar padrões ou condições que indicam problemas potenciais ou atuais e envie alertas para os membros da equipe que podem solucioná-los.Set up monitoring tools like Azure Monitor to detect patterns or conditions that indicate potential or current issues, and send alerts to the team members who can address the issues. Ajuste os alertas para evitar falsos positivos.Tune the alerts to avoid false positives.

Monitore ativos e recursos quanto à expiração.Monitor assets and resources for expirations. Alguns recursos e ativos como certificados expiram após um determinado período de tempo.Some resources and assets, such as certificates, expire after a given amount of time. Verifique se você está controlando quais ativos expiraram, quando eles expiram e quais serviços ou recursos dependem deles.Make sure to track which assets expire, when they expire, and what services or features depend on them. Use processos automatizados para monitorar esses ativos.Use automated processes to monitor these assets. Notifique a equipe de operações antes da expiração de um ativo e escale se a expiração ameaça interromper o aplicativo.Notify the operations team before an asset expires, and escalate if expiration threatens to disrupt the application.

GerenciamentoManagement

Automatize as tarefas de operações.Automate operations tasks. Manipular processos de operações repetitivas manualmente é propenso a erros.Manually handling repetitive operations processes is error-prone. Automatize essas tarefas sempre que possível para garantir qualidade e uma execução consistente.Automate these tasks whenever possible to ensure consistent execution and quality. O código que implementa a automação deve ter controle de versão no controle do código-fonte.Code that implements the automation should be versioned in source control. Assim como acontece com qualquer outro código, ferramentas de automação devem ser testadas.As with any other code, automation tools must be tested.

Adote uma abordagem de infraestrutura como código para provisionamento.Take an infrastructure-as-code approach to provisioning. Minimize a quantidade de configuração manual necessária para provisionar recursos.Minimize the amount of manual configuration needed to provision resources. Em vez disso, use scripts e modelos do Azure Resource Manager.Instead, use scripts and Azure Resource Manager templates. Mantenha os scripts e modelos no controle do código-fonte, bem como qualquer outro código que você mantenha.Keep the scripts and templates in source control, like any other code you maintain.

Considere o uso de contêineres.Consider using containers. Contêineres fornecem uma interface baseada em pacote padrão para implantar aplicativos.Containers provide a standard package-based interface for deploying applications. Usando contêineres, um aplicativo é implantado usando pacotes independentes que incluem qualquer software, dependências e arquivos necessários para executar o aplicativo, o que simplifica o processo de implantação.Using containers, an application is deployed using self-contained packages that include any software, dependencies, and files needed to run the application, which greatly simplifies the deployment process.

Contêineres também criam uma camada de abstração entre o aplicativo e o sistema operacional subjacente, o que proporciona consistência entre ambientes.Containers also create an abstraction layer between the application and the underlying operating system, which provides consistency across environments. Essa abstração também pode isolar um contêiner de outros processos ou aplicativos em execução em um host.This abstraction can also isolate a container from other processes or applications running on a host.

Implemente resiliência e autorrecuperação.Implement resiliency and self-healing. A resiliência é a capacidade de um aplicativo se recuperar de falhas.Resiliency is the ability of an application to recover from failures. Estratégias para garantir resiliência incluem fazer novas tentativas em caso de falhas transitórias e fazer failover para uma instância secundária ou até mesmo outra região.Strategies for resiliency include retrying transient failures, and failing over to a secondary instance or even another region. Para obter mais informações, consulte desenvolvendo aplicativos do Azure confiáveis .For more information, see Designing reliable Azure applications . Instrumente seus aplicativos para que os problemas sejam reportados imediatamente e você possa gerenciar interrupções ou outras falhas de sistema.Instrument your applications so that issues are reported immediately and you can manage outages or other system failures.

Tenha um manual de operações.Have an operations manual. Um manual de operações ou runbook documenta os procedimentos e as informações de gerenciamento necessárias para a equipe de operações manter um sistema.An operations manual or runbook documents the procedures and management information needed for operations staff to maintain a system. Documente também quaisquer cenários de operações e planos de mitigação que possam surgir durante uma falha ou outra interrupção do seu serviço.Also document any operations scenarios and mitigation plans that might come into play during a failure or other disruption to your service. Crie essa documentação durante o processo de desenvolvimento e mantenha-a atualizada daí em diante.Create this documentation during the development process, and keep it up to date afterwards. Este é um documento dinâmico e deve ser revisado, testado e aprimorado regularmente.This is a living document, and should be reviewed, tested, and improved regularly.

Documentação compartilhada é algo essencial.Shared documentation is critical. Incentivamos que os membros da equipe contribuam e compartilhem conhecimento.Encourage team members to contribute and share knowledge. A equipe inteira deve ter acesso a documentos.The entire team should have access to documents. Torna mais fácil para qualquer pessoa da equipe ajudar a manter os documentos atualizados.Make it easy for anyone on the team to help keep documents updated.

Documente procedimentos de permanência.Document on-call procedures. Verifique se procedimentos, agendas e tarefas de permanência são documentados e compartilhados com todos os membros da equipe.Make sure on-call duties, schedules, and procedures are documented and shared to all team members. Mantenha essas informações atualizadas em todos os momentos.Keep this information up-to-date at all times.

Documente procedimentos de escalonamento para dependências de terceiros.Document escalation procedures for third-party dependencies. Se seu aplicativo depende de serviços de terceiros externos que você não controla diretamente, você deve ter um plano para lidar com interrupções.If your application depends on external third-party services that you don't directly control, you must have a plan to deal with outages. Crie documentação para seus processos de mitigação planejados.Create documentation for your planned mitigation processes. Inclua contatos de suporte e caminhos de escalonamento.Include support contacts and escalation paths.

Use gerenciamento de configuração.Use configuration management. Alterações de configuração devem ser planejadas, visíveis para as operações e registradas.Configuration changes should be planned, visible to operations, and recorded. Isso pode assumir a forma de um banco de dados de gerenciamento de configuração ou uma abordagem de configuração como código.This could take the form of a configuration management database, or a configuration-as-code approach. A configuração deve ser examinada regularmente para garantir que o que é esperado esteja realmente em vigor.Configuration should be audited regularly to ensure that what's expected is actually in place.

Obtenha um plano de suporte do Azure e entenda o processo.Get an Azure support plan and understand the process. O Azure oferece um número de planos de suporte.Azure offers a number of support plans. Determinar o plano certo para suas necessidades e verifique se toda a equipe sabe como usá-lo.Determine the right plan for your needs, and make sure the entire team knows how to use it. Os membros da equipe devem entender os detalhes do plano, como funciona o processo de suporte e como abrir um tíquete de suporte com o Azure.Team members should understand the details of the plan, how the support process works, and how to open a support ticket with Azure. Se você estiver prevendo um evento de grande escala, o suporte do Azure pode ajudar a aumentar os limites do serviço.If you are anticipating a high-scale event, Azure support can assist you with increasing your service limits. Para obter mais informações, consulte as Perguntas Frequentes do Suporte do Azure.For more information, see the Azure Support FAQs.

Siga os princípios de privilégios mínimos ao conceder acesso aos recursos.Follow least-privilege principles when granting access to resources. Gerencie o acesso aos recursos cuidadosamente.Carefully manage access to resources. O acesso deve ser negado por padrão, a menos que um usuário receba acesso a um recurso explicitamente.Access should be denied by default, unless a user is explicitly given access to a resource. Conceda a um usuário apenas o acesso ao que ele precisa para concluir suas tarefas.Only grant a user access to what they need to complete their tasks. Acompanhe as permissões de usuário e realize auditorias de segurança frequentes.Track user permissions and perform regular security audits.

Use o controle de acesso baseado em função.Use role-based access control. Atribuir contas de usuário e o acesso a recursos não deve ser um processo manual.Assigning user accounts and access to resources should not be a manual process. Use [controle de acesso baseado em função] rbac (RBAC) conceder acesso com base na [Azure Active Directory] azure-ad identidades e grupos.Use role-based access control (RBAC) grant access based on Azure Active Directory identities and groups.

Use um sistema de acompanhamento de bugs para acompanhar problemas.Use a bug tracking system to track issues. Sem uma boa maneira de acompanhar problemas, é fácil deixar itens passarem despercebidos, duplicar o trabalho ou introduzir problemas adicionais.Without a good way to track issues, it's easy to miss items, duplicate work, or introduce additional problems. Não confie na comunicação informal para acompanhar o status de bugs.Don't rely on informal person-to-person communication to track the status of bugs. Use uma ferramenta de acompanhamento de bugs para registrar detalhes sobre problemas, atribuir recursos para solucioná-los e fornecer um log de auditoria de progresso e status.Use a bug tracking tool to record details about problems, assign resources to address them, and provide an audit trail of progress and status.

Gerencie todos os recursos em um sistema de gerenciamento de alterações.Manage all resources in a change management system. Todos os aspectos do processo de DevOps devem ser incluídos em um sistema de gerenciamento e de controle de versão para que as alterações possam ser facilmente acompanhadas e auditadas.All aspects of your DevOps process should be included in a management and versioning system, so that changes can be easily tracked and audited. Isso inclui código, infraestrutura, configuração, documentação e scripts.This includes code, infrastructure, configuration, documentation, and scripts. Trate todos esses tipos de recursos como código durante o processo de build/teste/análise.Treat all these types of resources as code throughout the test/build/review process.

Use listas de verificação.Use checklists. Crie listas de verificação de operações para garantir que os processos sejam seguidos.Create operations checklists to ensure processes are followed. É comum ignorar alguma coisa em um manual grande, mas seguir uma lista de verificação pode forçar a atenção a detalhes que poderiam, caso contrário, passar despercebidos.It’s common to miss something in a large manual, and following a checklist can force attention to details that might otherwise be overlooked. Mantenha as listas de verificação e procure continuamente maneiras de automatizar tarefas e simplificar processos.Maintain the checklists, and continually look for ways to automate tasks and streamline processes.

Para obter mais informações sobre DevOps, consulte Quais as novidades no DevOps? no site do Visual Studio.For more about DevOps, see What is DevOps? on the Visual Studio site.