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.
No núcleo 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 de equipe. Esse pilar define procedimentos operacionais para práticas de desenvolvimento, observabilidade e gerenciamento de lançamento. 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:
- Você executa as operações com disciplina?
- Os clientes estão utilizando a carga de trabalho com o máximo de previsibilidade?
- Como você aprende com a experiência e os dados coletados para promover a melhoria contínua?
As operações de carga de trabalho podem se transformar em práticas caóticas quando não há propriedade ou liderança claras. Nesse tipo de ambiente, as equipes geralmente recorrem a métodos que são executados com muito esforço e produzem poucos resultados, o que leva a uma experiência ruim para o usuário. Essas abordagens atendem apenas a objetivos de curto prazo. Os benefícios de longo prazo são realizados por meio 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 sintomas. Comece com as abordagens recomendadas e observe o que funciona e o que não identifica áreas de melhoria. Depois de definir sua estratégia, continue a conduzir 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 seus requisitos de negócios. Processos eficientes garantem que a carga de trabalho atinja os resultados de negócios dentro das restrições de conformidade, seja ela organizacional ou externa. O segredo é encontrar repetibilidade com consistência.
Os objetivos do pilar de 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 em tempos de alteração. A incapacidade de atender aos requisitos operacionais pode levar a implantações com falha, experiência inconsistente do usuário e custos adicionais que poderiam ter sido evitados por meio de planejamento adequado e execução simplificada.
Adotar a cultura DevOps
|
---|
O DevOps é uma comunidade de práticas cuja diversidade de pontos de vista e de habilidades a impulsiona em direção a uma única missão. O Teams deve promover um ambiente colaborativo de conhecimento compartilhado em vez de aprendizado em silos. Use funções compartilhadas para se empenhar em superar as restrições de recursos.
Uma boa cultura de DevOps prospera com a responsabilidade compartilhada. As equipes de desenvolvimento e operações devem alinhar suas metas e prioridades às expectativas de seus clientes e manter o foco nos negócios. A equipe de desenvolvimento deve envolver a equipe de operações no loop de feedback para que as melhorias sejam impulsionadas upstream e outras equipes se beneficiem igualmente. Por seu lado, ao compartilhar recursos e um feedback que sejam relevantes para a carga de trabalho, as equipes de operações são responsáveis por fazer com que a equipe de desenvolvimento seja bem-sucedida em seus resultados de negócios.
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 sem sobrecarregar a equipe. Para se beneficiar ao máximo do DevOps, a cultura deve otimizar os processos por meio da tecnologia e implementar os processos necessários para que as pessoas na 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 a comunicação transparente. Tanto as equipes de desenvolvimento quanto as de operações se beneficiam de uma conscientização situacional dos vários ambientes, problemas de suporte comuns e desafios e vitórias de modo geral. As equipes já deverão estar familiarizadas com os caminhos de escalonamento existentes, para o caso de ocorrer um incidente. Uma lista de pendências compartilhada torna as prioridades mais claras, como trabalhar em novos recursos ou corrigir bugs. |
Crie uma mentalidade de aprendizado e experimentação contínua ao longo do ciclo de desenvolvimento. Dê suporte ao compartilhamento de conhecimento entre equipes e mantenha a documentação para reutilização. Realizar análises e revisões imparciais após a liberação e/ou após o incidente. |
Por meio de mecanismos de experimentação, como testes A/B e desenvolvimento de provas de conceito, você pode incentivar a inovação e, ao mesmo tempo, manter os custos baixos. Compartilhe conhecimento por meio de uma colaboração que torne a equipe mais experiente em abordagens de design, ferramentas e processos. Fazer retrospectivas após um projeto ajuda a identificar áreas de melhoria e a celebrar o sucesso. |
Adote práticas ágeis comprovadas do setor que se concentram na otimização de ações. Procure oportunidades de "mudança para a esquerda" nas operações para processos manuais e automatizados, práticas de implantação e garantia de qualidade e observabilidade. |
As práticas de desenvolvimento agile levam a ciclos de vida de lançamento mais curtos, que são um indicador de valor de negócios. Detectar, resolver e, assim, evitar problemas anteriormente geralmente é menos intrusivo ao processo. |
Defina padrões para todos os procedimentos operacionais e de desenvolvimento e revise-os e valide-os em uma cadência regular. Esses procedimentos incluem tarefas de rotina, processos fora de banda, simulações e situações de emergência, escolha de ferramentas, procedimentos de monitoramento, planos de reciclagem profissional e até mesmo comunicados para stakeholders e divulgações para os clientes. Seja intencional e explícito sobre suas decisões. |
O uso de padrões adiciona previsibilidade às operações e torna os processos e práticas ampliáveis. Validar padrões é uma ótima maneira de extrair pontos de melhoria. Esteja preparado para situações de emergência e recuperação realizando simulações regulares. Execute com precisão e habilite a governança para evitar anomalias que levam a riscos. |
Aproveite as equipes de operações centralizadas com habilidades especializadas e amplitude de experiência. | Há um benefício de custo para usar recursos compartilhados para operações e recursos. Embora você possua sua carga de trabalho, a equipe centralizada ajuda você com habilidades multifuncionais, como gerenciamento de incidentes, uma perspectiva proativa sobre monitoramento e experiência de terceirização com confiança. |
Estabelecer padrões de desenvolvimento
|
---|
A equipe de desenvolvimento é responsável por resolver os 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 rápidos de desenvolvimento, desde a codificação até os resultados de teste. Implemente processos eficazes e de tamanho adequado que planejem e padronizem as atividades técnicas e também gerem consenso entre a equipe e os stakeholders.
Abordagem | Benefícios |
---|---|
Documente os recursos de carga de trabalho e capture os benefícios do cliente. Derivar escopo e 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 falha , dando suporte a ciclos de desenvolvimento mais produtivos e simplificados. Os desenvolvedores entendem os critérios técnicos de design, metas e conclusão antes de iniciar o ciclo de codificação. Uma boa documentação facilita a comunicação repetível e a integração de novos membros da equipe. |
Use uma metodologia de desenvolvimento de software padrão do setor adequadamente ajustada para as necessidades da carga de trabalho e do tamanho da equipe. Manter um backlog compartilhado entre todas as funções. |
A adoção de uma metodologia conhecida define o ritmo do projeto. Ele remove as ambiguidades do processo, dando aos membros da equipe expectativas claras e responsabilidade. Ao acompanhar uma lista comum, as tarefas podem ser refinadas e priorizadas com práticas padrão. O projeto terá mais chances de ser entregue no prazo. As metodologias padrão ajudam no gerenciamento de riscos. Com as revisões granulares de marcos, os desenvolvedores podem resolver os possíveis problemas antes que eles se tornem obstáculos. |
Use o controle do código-fonte 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 dar suporte à liberação sem atrito de recursos independentes e interdependentes, correções de bug 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 para dar suporte a alterações simultâneas e controle de versão. Mantenha um fluxo de trabalho repetível para liberar alterações de vários tamanhos e riscos, realize revisões por pares como parte do processo e mantenha uma trilha de auditoria. |
Tenha processos de garantia de qualidade que enfatizam os testes no início do ciclo de vida de desenvolvimento. Inclua todos os artefatos para procedimentos de teste planejados, incluindo componentes de aplicativo, infraestrutura e operações de plano de dados que fazem parte de uma versão ou atualização de recursos. Trate os artefatos como imutáveis quando eles forem promovidos pelos ambientes, ganhando confiança cada vez que passarem por um portão de qualidade. Sempre que possível, automatize as verificações de rotina. |
A garantia de qualidade assegura que os requisitos funcionais e não funcionais foram atendidos com confiança, o que leva a um impacto positivo para o cliente. Ter planos de teste garante qualidade e integridade e leva em consideração possíveis casos de falha. Com os portões de qualidade, você pode impor práticas recomendadas para reduzir os riscos. A imutabilidade traz confiança porque garante que o sistema que você testa seja exatamente o que você libera. Os ciclos de teste bloqueiam o progresso com eficiência, a menos que os critérios de qualidade sejam atendidos. |
Impulsione a consistência usando guias de estilo e ferramentas, que impõem convenções e adotam uma cadeia de ferramentas comum para desenvolvimento, teste e comunicação com os stakeholders. Os padrões de tecnologia para desenvolvedores devem exigir a implementação de padrões, design de API, registro em log, tratamento de exceções e outros processos. |
A consistência no código impulsiona a legibilidade e a manutenção mais fácil. Ele também reduz a complexidade e habilita a reutilização de código. As ferramentas e convenções comuns também ajudam as equipes a otimizar processos sem a necessidade de lidar com opções pontuais. |
Insista de forma consistente e deliberada na documentação do código do desenvolvedor como está escrito. | A documentação clara de código 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 rotacionam. |
Relatar o progresso e as tendências para medir a eficiência. | Tendências em bugs, atualizações com falha, tempo de implantação, ciclos de feedback e outras métricas são publicadas, e isso impulsiona melhorias. |
Desenvolver 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. Habilite a equipe e os stakeholders a tomar decisões de curto e longo prazo em muitas facetas fornecendo os dados, estatísticas e tendências necessários. Aprenda com seus dados e promova melhorias.
As operações criadas para fins de observabilidade são fundamentais na manutenção proativa do aplicativo, garantia de qualidade e segurança, planejamento de capacidade e gerenciamento de produtos.
Um aspecto crucial do monitoramento é a aplicação usando modelagem de saúde para ajudar a antecipar problemas antes que eles 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 |
---|---|
Crie um sistema de monitoramento com sua própria pilha e fluxos. Trate o sistema de monitoramento como uma dimensão da carga de trabalho que é separada de sua utilidade. A pilha deve cobrir todas as camadas, incluindo infraestrutura, integridade do aplicativo e processos de construçã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 a 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 monitorando alterações ou interrupções de configuração. |
Garanta consistência no processo de coleta para cada tipo de fonte de dados. Padronizar a instrumentação no código usando padrões do setor para telemetria, coleção de métricas de infraestrutura e ferramentas. |
A consistência impede a variação no sensoriamento e na medida porque a familiaridade entre recursos semelhantes reduz o tempo gasto correlacionando e analisando dados. Você tem uma perspectiva holística para prever problemas. |
Emita telemetria do código do aplicativo que correlaciona os pontos principais 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 entenda o contexto dada a sua verbosidade. Essas informações são cruciais para fins de solução de problemas. |
Possua 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 adaptar os dados de monitoramento ao ambiente de trabalho, a equipe pode acessar logs e métricas para solucionar questões relacionadas ao ambiente de trabalho. |
Colete dados suficientes e mantenha-os por tempo suficiente. Considere as compensações de custos associadas ao registro e armazenamento de dados. |
A coleta intencional de dados ajuda você a otimizar os custos financeiros e operacionais associados à coleta de mais dados do que o necessário. Minimize o ruído e evite a 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 a finalidade certa. Priorize o uso de métricas para disparar ações que dependem de medidas 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. |
Usando os sinais para as finalidades certas, você pode impedir a implementação ineficiente do sistema de monitoramento. Por exemplo, o uso de logs para ações requer análise. Você pode alcançar as mesmas metas mais rapidamente com as métricas. |
Agregar e visualizar dados em dashboards para apresentar dados de monitoramento que atendem a públicos e mantém o contexto empresarial em mente. Use painéis situacionais para exibir dados para promover a conscientização entre as partes interessadas. Use painéis operacionais e cadernos com recursos de detalhamento para atividades operacionais como a resposta a incidentes. Atualize os painéis com frequência e forneça dados granulares. |
Com as visualizações, você pode analisar tendências, acompanhar metas de negócios e gerenciar incidentes. Painéis personalizados para o interesse do cliente tornam a interpretação relevante e aceleram o tempo de detecção e ação. |
Torne os alertas acionáveis notificando os responsáveis com descrições padronizadas e níveis de severidade. Forneça informações que são coletadas de várias fontes e acompanhe as divergências em relação às metas comerciais. Disparar alertas somente para incidentes que exigem ação. Esforce-se por ter alertas proativos e instigantes que iniciem ações antes que o estado de degradação se transforme em 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 dados suficientes para gerar clareza e finalidade. Os operadores podem iniciar a correção sem atraso. |
Automatizar 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 não precisam de intelecto humano. Dependendo da frequência, você pode gastar um tempo considerável nesses esforços, investindo mais tempo à medida que a carga de trabalho aumenta. Além disso, esses processos geralmente são propensos a erros devido à entrada humana.
Por meio da automação, você economiza tempo, esforço e dinheiro e evita erros.
Abordagem | Benefícios |
---|---|
Avalie todos os fluxos de trabalho em relação a critérios que estejam no nível certo de complexidade, esforço, frequência, precisão, pontualidade e vida útil. Automatize os fluxos de trabalho com base nessa avaliação e priorize os fluxos de trabalho com os retornos mais altos esperados. Remova fluxos de trabalho redundantes ou adicione valor para justificar o esforço humano. |
Você pode reinvestir a capacidade da equipe em um trabalho de valor mais alto 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 quando você avaliar se deseja criar ferramentas personalizadas ou comprar software. Reserve a automação de construção para trabalhos altamente especializados e de alto valor. |
Ao comprar software off-the-shelf 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 exclusivos para sua equipe e carga de trabalho. No entanto, há um impacto no custo. A opção de ferramentas traz um nível de padronização para suas operações. Com o treinamento, você pode alcançar um nível uniforme de preparação para a adoção. |
Projete seus componentes de carga de trabalho para dar suporte a recursos de automação. | Evite a situação em que a falta de automação no design do sistema promove o antipadrã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 carga de trabalho. Adapte-se ao crescimento esperado da carga de trabalho. Suas ferramentas de automação são parte integrante da carga de trabalho e devem seguir os cinco pilares da Well-Architected Framework. |
Projete seu componente de automação para suportar 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á operando com uma garantia de alto nível se essa dependência for mantida funcional e segura. |
Automatize em larga escala explorando opções fora do âmbito da tarefa atual. Favoreça um modelo de "design uma vez, executado em todos os lugares", fornecendo modelos e estruturas para integrar novos projetos e promover a reutilização de designs e implementações existentes. |
Empregue métodos comprovados e reduza as chances de falha. |
Adotar práticas de implementação seguras
|
---|
Crie uma cadeia de fornecimento de carga de trabalho automatizada e modular para garantir implantações consistentes, previsíveis e repetíveis em todos os ambientes. A aplicação antecipada de práticas seguras garante a confiança na produção e permite a recuperação rápida se os problemas chegarem aos clientes.
Todas as alterações, seja 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 a IaC (Infraestrutura como Código) 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 habilita a automação e a consistência da implantação e serve como autodocumentação que pode ser usada para rastreamento. Os artefatos de IaC passam a fazer parte do ciclo de vida de desenvolvimento de software, o que permite a realização de testes e processos de revisão da qualidade. A IaC também ajuda a detectar e mitigar o desvio 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 com defeito são liberadas simultaneamente, elas podem aumentar significativamente o raio da explosão. |
Implante cada alteração de código e infraestrutura usando pipelines automatizados em todos os ambientes. | Métodos de implantação consistentes reduzem erros e variação, tornando as implantações confiáveis e repetíveis. O processo de implantação documenta-se e cada execução cria um registro de atividades. |
Teste atualizações rigorosamente em todo o ciclo de vida de desenvolvimento, em ambientes de pré-produção e produção. | O teste antecipado captura problemas mais cedo, permite correções iterativas e reduz problemas quando a atualização está pronta para produção. Ter vários ambientes de pré-produção permite vários tipos de teste, 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 futuras. |
A distribuição controlada de atualizações reduz o risco de problemas generalizados de defeitos. Aumentar gradualmente a exposição ajuda a garantir a compatibilidade e a estabilidade, aumentando a confiança na versão. |
Esteja preparado com ações compensatórias para se 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 rápido pré-aprovado pelos stakeholders. |
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 obter aos usuários uma versão segura mais rapidamente. |
Próximas etapas
Recomendamos que você examine a lista de verificação de Excelência Operacional para explorar outros conceitos.