Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
No centro do pilar de Excelência Operacional estão as práticas de DevOps que garantem a qualidade da carga de trabalho por meio de fluxos de trabalho padronizados e coesão da equipe. Este pilar define procedimentos operacionais para práticas de desenvolvimento, observabilidade e gerenciamento de releases. O objetivo é minimizar a variação do processo, as chances de erro humano e a interrupção para os clientes. Para avaliar sua integridade operacional, comece com estas perguntas:
- Executa operações com disciplina?
- Os clientes estão usando a carga de trabalho com a máxima previsibilidade?
- Como você aprende com a experiência e os dados coletados para impulsionar a melhoria contínua?
As operações de carga de trabalho podem se transformar em práticas caóticas quando não há uma propriedade ou liderança claras. Neste tipo de ambiente, as equipas recorrem frequentemente a métodos que são executados com elevado esforço e produzem baixos resultados, o que leva a uma má experiência do utilizador. Estas abordagens atingem apenas objetivos a curto prazo. Os benefícios a longo prazo são realizados através de avaliação contínua e investimentos estratégicos.
Os princípios de design fornecem diretrizes para estratégias operacionais que devem ser consideradas para abordar as causas subjacentes e não apenas tratar os sintomas. Comece com as abordagens recomendadas e, em seguida, observe o que funciona e o que não funciona para identificar áreas de melhoria. Depois de definir sua estratégia, continue a impulsionar a ação usando a lista de verificação de Excelência Operacional.
Os requisitos operacionais de uma carga de trabalho são tão importantes quanto os requisitos de negócios. Processos eficientes garantem que a carga de trabalho alcance resultados de negócios dentro das restrições de conformidade, seja ela organizacional ou externa. A chave é encontrar repetibilidade com consistência.
Os objetivos do pilar Excelência Operacional são fazer a coisa certa, fazê-lo da maneira certa e resolver os problemas certos como uma equipe.
Se você atingir essas metas, as cargas de trabalho serão executadas de forma confiável e previsível, mesmo durante os momentos de mudança. A incapacidade de cumprir os requisitos operacionais pode levar a implantações com falha, experiência do usuário inconsistente e custos adicionais que poderiam ter sido evitados por meio de planejamento adequado e execução simplificada.
Adote a cultura DevOps
|
|
|---|
DevOps é uma comunidade de prática onde a diversidade de perspetivas e habilidades direciona para uma missão. As equipas devem promover um ambiente colaborativo de conhecimento partilhado em vez de aprendizagem isolada. Use funções compartilhadas para se esforçar para superar as restrições de recursos.
Uma boa cultura de DevOps prospera com base na responsabilidade compartilhada. As equipes de desenvolvimento e operações devem alinhar seus objetivos e prioridades com as expectativas de seus clientes e manter o foco no negócio em mente. A equipe de desenvolvimento deve envolver a equipe de operações no ciclo de feedback para que as melhorias sejam impulsionadas a montante e outras equipes se beneficiem igualmente. Por outro lado, as equipes de operações são responsáveis por tornar a equipe de desenvolvimento bem-sucedida em seus resultados de negócios, compartilhando recursos e feedback que são relevantes para a carga de trabalho.
Ao mesmo tempo, as práticas de DevOps aplicam linhas claras de propriedade e responsabilidade a cada equipe. Independentemente de onde o aplicativo é executado, a equipe de carga de trabalho é responsável por esse aplicativo.
O DevOps otimiza as tarefas operacionais para que sejam eficazes, mas não onerosas. Para colher todos os benefícios do DevOps, a cultura deve otimizar processos através da tecnologia e ter processos para que as pessoas da organização promovam uma comunicação transparente.
| Abordagem | Benefícios |
|---|---|
| Use sistemas e ferramentas comuns que promovam um ambiente colaborativo para comunicação e acompanhamento do progresso. | Ferramentas e processos comuns permitem uma comunicação transparente. As equipes de desenvolvimento e operações beneficiam-se da consciência das situações em vários ambientes, problemas comuns de suporte e dos desafios e sucessos gerais. As equipes já estarão familiarizadas com os caminhos de escalonamento existentes se houver um incidente. Uma lista de pendências compartilhada deixa claras as prioridades, como trabalhar em novos recursos ou corrigir bugs. |
| Construa uma mentalidade de aprendizagem e experimentação contínua ao longo do ciclo de desenvolvimento. Ofereça suporte ao compartilhamento de conhecimento entre equipes e mantenha a documentação para reutilização. Realize análises irrepreensíveis e reveja revisões pós-lançamento e/ou pós-incidente. |
Através de mecanismos de experimentação, como testes A/B e desenvolvimento de provas de conceito, você pode incentivar a inovação, mantendo os custos baixos. Partilhe conhecimento através da colaboração que torna a equipa proficiente em abordagens de design, ferramentas e processos. Fazer retrospetivas após um projeto ajuda a identificar áreas de melhoria e a celebrar o sucesso. |
|
Adote práticas ágeis comprovadas do setor que se concentrem na otimização de ações. Procure oportunidades para "mudar para a esquerda" nas operações de processos manuais e automatizados, práticas de implantação e garantia de qualidade e observabilidade. |
As práticas de desenvolvimento ágil levam a ciclos de vida de lançamento mais curtos, que são um indicador de valor comercial. Detetar, resolver e, assim, prevenir problemas mais cedo é muitas vezes menos intrusivo para o processo. |
|
Definir padrões para todos os procedimentos operacionais e de desenvolvimento e revisá-los e validá-los em uma cadência regular. Esses procedimentos incluem tarefas de rotina, processos fora de banda, exercícios e situações de emergência, escolha de ferramentas, procedimentos de monitoramento, planos de qualificação e até mesmo comunicação com as partes interessadas e divulgações ao cliente. Seja intencional e explícito sobre as suas decisões. |
As normas adicionam previsibilidade às operações e tornam os processos e práticas escaláveis. Validar padrões é uma ótima maneira de desenhar pontos de melhoria. Esteja preparado para situações de emergência e recuperação, realizando exercícios regulares. Executar com precisão e permitir a governança para evitar anomalias que levam a riscos. |
| Aproveite as equipes de operações centralizadas com habilidades especializadas e ampla experiência. | Há um custo benefício no uso de recursos compartilhados, tanto para operações quanto para recursos. Embora você seja o proprietário de sua carga de trabalho, a equipe centralizada ajuda você com habilidades multifuncionais, como gerenciamento de incidentes, uma perspetiva proativa sobre monitoramento e terceirização de experiência com confiança. |
Estabelecer padrões de desenvolvimento
|
|
|---|
A equipe de desenvolvimento é responsável por resolver problemas de carga de trabalho antes do lançamento com o mínimo de atrito. Esteja atento à eficiência do desenvolvedor e otimize para ciclos de resposta rápidos, desde a codificação até os resultados dos testes. Implementar processos eficazes e do tamanho certo que planejem e padronizem as atividades técnicas e também gerem consenso dentro da equipe e das partes interessadas.
| Abordagem | Benefícios |
|---|---|
|
Documente as características da carga de trabalho e capture os benefícios para o cliente. Derivar o escopo e os requisitos funcionais e não funcionais detalhados da arquitetura. Crie modelos de estimativa de dimensionamento para relatar o escopo e o custo das tarefas envolvidas. |
Boas especificações reduzem os custos operacionais e as chances de fracasso , apoiando ciclos de desenvolvimento mais produtivos e simplificados. Os desenvolvedores entendem o design técnico, as metas e os critérios de conclusão antes de iniciar o ciclo de codificação. Uma boa documentação facilita a comunicação e a integração repetíveis de novos membros da equipe. |
| Use uma metodologia de desenvolvimento de software padrão do setor que esteja adequadamente ajustada às necessidades de sua carga de trabalho e tamanho da equipe. Mantenha uma lista de pendências compartilhada entre todas as funções. |
A adoção de uma metodologia bem conhecida define o ritmo do projeto. Ele remove ambiguidades de processo, dando aos membros da equipe expectativas claras e responsabilidade. Ao rastrear em relação a uma lista comum, as tarefas podem ser refinadas e priorizadas com práticas padrão. O projeto terá mais chances de ser entregue dentro do prazo. As metodologias normalizadas ajudam na gestão dos riscos. Com revisões granulares de marcos, os desenvolvedores podem resolver possíveis problemas antes que eles se tornem showstoppers. |
|
Use o controle de origem unificado para todos os códigos, scripts, modelos de implantação, definições de pipeline e documentação relacionada. A estratégia de ramificação deve oferecer suporte à liberação sem atrito de recursos independentes e interdependentes, correções de bugs e hotfixes. Use o conhecimento compartilhado em toda a organização para criar sua estratégia de ramificação e processos de implantação. |
O uso adequado do controle do código-fonte é crucial no suporte a alterações e versionamento simultâneos . Mantenha um fluxo de trabalho repetível para liberar alterações de vários tamanhos e riscos, conduza revisões por pares como parte do processo e mantenha uma trilha de auditoria. |
| Ter processos de garantia de qualidade que enfatizem os testes no início do ciclo de vida do desenvolvimento. Inclua todos os artefatos para procedimentos de teste planejados, incluindo componentes de aplicativos, infraestrutura e operações de plano de dados que fazem parte de uma liberação ou atualização de recurso. Trate os artefatos como imutáveis quando são promovidos através de ambientes, ganhando confiança cada vez que passam por um portão de qualidade. Sempre que possível, automatize as verificações de rotina. |
A garantia de qualidade garante que os requisitos funcionais e não funcionais foram atendidos com confiança, o que leva a um impacto positivo no cliente. Ter planos de teste garante qualidade e integridade e leva em consideração possíveis casos de falha. Com portas de qualidade, você pode aplicar as melhores práticas para reduzir os riscos. A imutabilidade traz confiança porque garante que o sistema que você testa é exatamente o que você libera. Os ciclos de teste bloqueiam eficientemente o progresso, a menos que os critérios de qualidade sejam atendidos. |
| Promova a consistência usando guias de estilo e ferramentas, que impõem convenções, e adote uma cadeia de ferramentas comum para desenvolvimento, teste e comunicação com as partes interessadas. Os padrões de tecnologia para desenvolvedores devem exigir a implementação de padrões, design de API, registro, tratamento de exceções e outros processos. |
A consistência no código impulsiona a legibilidade e facilita a manutenção. Ele também reduz a complexidade e permite a reutilização de código. Ferramentas e convenções comuns também ajudam as equipes a otimizar processos sem a necessidade de abordar escolhas pontuais. |
| Insista de forma consistente e deliberada na documentação do desenvolvedor do código como está escrito. | A documentação de código claro garante que a lógica e a funcionalidade sejam facilmente compreendidas quando o código antigo precisa ser revisitado ou quando as equipes de desenvolvimento se alternam. |
| Relatar o progresso e as tendências para medir a eficiência. | Tendências em bugs, atualizações com falha, tempo de implantação, loops de feedback e outras métricas são publicadas, e isso impulsiona melhorias. |
Evolua as operações com observabilidade
|
|
|---|
Crie uma cultura que melhore continuamente a qualidade monitorando a carga de trabalho e levando em consideração todos os pilares do Azure Well-Architected Framework. Permita que a equipe e as partes interessadas tomem decisões de curto e longo prazo em muitas facetas, fornecendo os dados, estatísticas e tendências necessários. Aprenda com os seus dados e promova melhorias.
As operações criadas para fins de observabilidade são fundamentais na manutenção proativa do aplicativo, na garantia de qualidade e segurança, no planejamento de capacidade e no gerenciamento de produtos.
Um aspeto crucial da monitorização é a aplicação usar modelação de saúde para ajudá-lo a antecipar problemas antes que se tornem incidentes e afetem a experiência do cliente. O monitoramento eficiente reduz os ciclos reativos gastos no gerenciamento de incidentes.
| Abordagem | Benefícios |
|---|---|
|
Construa um sistema de monitoramento com sua própria pilha e fluxos. Trate o sistema de monitoramento como uma dimensão da carga de trabalho dissociada de sua utilidade. A pilha deve cobrir todas as camadas, incluindo infraestrutura, integridade do aplicativo e processos de compilação e lançamento. A captura ou amostragem de dados de negócios está fora do escopo para implementações de observabilidade. |
Desacople o monitoramento e as pilhas de carga de trabalho para separar os requisitos funcionais e os requisitos de observabilidade e tornar possível uma evolução independente. As alterações no código não devem afetar o monitoramento e vice-versa. Como os requisitos de observabilidade são separados dos requisitos funcionais, os dados corporativosnão serão interrompidos pelo monitoramento de alterações de configuração ou interrupções. |
|
Aumente a consistência no processo de coleta para cada tipo de fonte de dados. Padronize a instrumentação em código usando padrões do setor para telemetria, coleta de métricas de infraestrutura e ferramentas. |
A consistência evita a variância na deteção e medição porque a familiaridade com recursos semelhantes reduz o tempo gasto correlacionando e analisando dados. Você tem uma perspetiva holística para antecipar problemas. |
| Emita telemetria a partir do código do aplicativo que correlaciona os pontos-chave do fluxo de execução e fornece uma visão de ponta a ponta em diferentes níveis de granularidade. | Priorize ações com base no nível de gravidade e compreenda o contexto dada a sua verbosidade. Essas informações são cruciais para fins de solução de problemas. |
| Assuma a responsabilidade de emitir e coletar dados, mesmo quando os coletores de dados são compartilhados por várias equipes e gerenciados por equipes centrais. | Ao localizar os dados de monitoramento para o ambiente de carga de trabalho, a equipe pode acessar logs e métricas para resolver problemas de carga de trabalho. |
| Colete dados suficientes e guarde-os por tempo suficiente. Considere os compromissos de custo associados ao registo e ao armazenamento de dados. |
A recolha intencional de dados ajuda-o a otimizar os custos financeiros e operacionais associados à recolha de mais dados do que o necessário. Minimize o ruído e evite computação intensiva durante a análise e reduza o custo de armazenamento de dados que você não precisa mais. |
|
Faça uma distinção entre os diferentes sinais de monitoramento: perfis, logs, métricas e rastreamentos. Use cada sinal para o propósito certo. Priorize o uso de métricas para acionar ações que dependem de medições numéricas. Use perfis para obter visibilidade de nível inferior, como alocação de memória, no sistema. Reserve o uso de logs e rastreamentos para fornecer contexto para fluxos e dependências. |
Ao usar os sinais para os fins certos, você pode evitar a implementação ineficiente do sistema de monitoramento. Por exemplo, o uso de logs para ações requer análise. Você pode conseguir atingir os mesmos objetivos mais rapidamente com métricas. |
|
Agregue e visualize dados em painéis para apresentar dados de monitoramento que atendam ao público e mantenham o contexto de negócios em mente. Use painéis situacionais para revelar dados para aumentar a conscientização entre as partes interessadas. Use painéis operacionais e pastas de trabalho com recursos de detalhamento para atividades do operador, como resposta a incidentes. Atualize frequentemente os painéis e forneça dados granulares. |
Com visualizações, você pode analisar tendências, acompanhar metas de negócios e gerenciar incidentes. Painéis adaptados ao interesse do cliente tornam a interpretação relevante e aceleram o tempo de deteção e ação. |
|
Torne os alertas acionáveis notificando as funções responsáveis com descrições padronizadas e níveis de gravidade. Forneça informações que são agrupadas de várias fontes e rastreie desvios de metas de negócios. Acione alertas apenas para incidentes que exijam ação. Esforce-se por conseguir alertas proativos e que despertem reflexão, capazes de iniciar ações antes que um estado degradado se transforme em uma falha. |
Os alertas chamam a atenção para eventos significativos, conforme definido pela organização. Um bom sistema de alerta identifica ações e gravidade e fornece apenas dados suficientes para gerar clareza e propósito. Os operadores podem iniciar a remediação sem demora. |
Automatize para obter eficiência
|
|
|---|
A carga de trabalho pode ter fluxos de trabalho com processos que envolvem membros da equipe fazendo tarefas mundanas, repetitivas e demoradas que realmente não precisam do intelecto humano. Dependendo da frequência, você pode gastar tempo considerável nesses esforços, investindo mais tempo à medida que a carga de trabalho cresce. Além disso, esses processos são muitas vezes propensos a erros devido à entrada humana.
Através da automação, poupa tempo, esforço e dinheiro e evita erros.
| Abordagem | Benefícios |
|---|---|
|
Avalie todos os fluxos de trabalho com base em critérios que estejam no nível certo de complexidade, esforço, frequência, precisão, pontualidade e tempo de vida. Automatize fluxos de trabalho com base nessa avaliação e priorize os fluxos de trabalho com os maiores retornos esperados. Remova fluxos de trabalho redundantes ou acrescente valor para justificar o esforço humano. |
Você pode reinvestir a capacidade da equipe em trabalhos de maior valor e aumentar a produtividade e a consistência. A criação de um inventário de fluxos de trabalho garante que você automatize as tarefas certas. A remoção de tarefas redundantes reduz a complexidade e os erros. |
| Seja explícito sobre sua decisão ao avaliar se deseja criar ferramentas personalizadas ou comprar software. Reserve a automação predial para trabalhos altamente especializados e de alto valor. |
Ao comprar software pronto para uso e aproveitar o contrato de suporte, você economiza nos custos de manutenção. Ao criar software, você tem mais controle e pode atender a casos de uso que são exclusivos para sua equipe e carga de trabalho. No entanto, há um impacto nos custos. A escolha das ferramentas traz um nível de padronização para suas operações. Com o treinamento, você pode alcançar um nível uniforme de prontidão para adoção. |
| Projete seus componentes de carga de trabalho para oferecer suporte aos recursos de automação. | Evite a situação em que a falta de automação no projeto do seu sistema promove o anti-padrão de tarefas repetitivas, desacelera o crescimento e começa a acumular dívidas técnicas. |
| Trate toda a automação como uma dependência crítica da sua carga de trabalho. Adapte-se ao crescimento esperado da carga de trabalho. Suas ferramentas de automação são parte integrante de sua carga de trabalho e devem aderir aos cinco pilares do Well-Architected Framework. |
Projete seu componente de automação para resistir a riscos, como ameaças à segurança. Com as práticas recomendadas aplicadas, você pode evitar a expansão da implementação. A carga de trabalho continuará a operar com uma garantia de alto nível se essa dependência for mantida funcional e segura. |
|
Automatize em escala explorando opções além da sua carga de trabalho. Favoreça um modelo de "projetar uma vez, executar em todos os lugares", fornecendo modelos e estruturas para integrar novos projetos e promover a reutilização de projetos e implementações existentes. |
Utilize métodos testados e comprovados e reduza as chances de fracasso. |
Adote práticas de implantação seguras
|
|
|---|
Crie uma cadeia de suprimentos de carga de trabalho automatizada e modular para garantir implantações consistentes, previsíveis e repetíveis em todos os ambientes. A aplicação precoce de práticas seguras garante a confiança na produção e permite uma recuperação rápida se os problemas chegarem aos clientes.
Todas as alterações, sejam código, configuração ou artefatos, devem ser implantadas com o mesmo nível de rigor. Testes, monitoramento e controle de versão são práticas comuns para obter consistência.
| Abordagem | Benefícios |
|---|---|
|
Use Infrastructure as Code (IaC) para definir o estado desejado de toda a infraestrutura. Use uma abordagem modular e em camadas, mas evite abstrações desnecessárias. Alinhe as camadas com as necessidades do ciclo de vida, mantendo as camadas fundamentais estáveis. |
O IaC permite a automação e a consistência da implantação e serve como autodocumentação que pode ser usada para rastreamento. Os artefatos IaC tornam-se parte do seu ciclo de vida de desenvolvimento de software, o que permite processos de teste e revisão de qualidade. O IaC também ajuda a detetar e mitigar desvios de configuração. |
| Prefira atualizações pequenas e incrementais que são implantadas com frequência. | Atualizações menores simplificam a validação, reduzindo o número de erros simultâneos. Quando várias alterações defeituosas são liberadas simultaneamente, elas podem aumentar significativamente o raio de explosão. |
| Implante todas as alterações de código e infraestrutura usando pipelines automatizados em todos os ambientes. | Métodos de implantação consistentes reduzem erros e variâncias, tornando as implantações confiáveis e repetíveis. O processo de implantação documenta-se a si próprio, e cada execução cria um registo de atividades. |
| Teste atualizações rigorosamente durante todo o ciclo de vida do desenvolvimento, em ambientes de pré-produção e produção. | Os testes iniciais detetam problemas mais cedo, permitem correções iterativas e reduzem os problemas quando a atualização está pronta para produção. Ter vários ambientes de pré-produção permite vários tipos de testes, aumentando a confiança em uma versão de produção bem-sucedida. |
|
Implemente novos recursos usando padrões de implantação que permitem exposição progressiva e adoção gradual pelos usuários. Teste a compatibilidade com versões anteriores e posteriores. |
A distribuição controlada de atualizações reduz o risco de problemas generalizados devido a defeitos. O aumento gradual da exposição ajuda a garantir a compatibilidade e a estabilidade, aumentando a confiança na libertação. |
| Esteja pronto com ações de compensação para recuperar de implantações defeituosas ou defeitos críticos na produção. Use a automação apoiada por testes para implementar correções. Para atualizações de emergência, tenha um processo acelerado pré-aprovado pelas partes interessadas. |
Ter um plano de mitigação reduz a duração do impacto potencial. Você pode implantar rapidamente correções urgentes, como patches de segurança, para que os usuários tenham uma versão segura mais rapidamente. |
Próximos passos
Recomendamos que reveja a lista de verificação de Excelência Operacional para explorar outros conceitos.