Compensações de otimização de custos

Quando você projeta uma carga de trabalho para maximizar o retorno sobre o investimento (ROI) sob restrições financeiras, primeiro precisa de requisitos funcionais e não funcionais claramente definidos. Uma estratégia de priorização de trabalho e esforço é essencial. A fundação é uma equipa que tem um forte sentido de responsabilidade financeira. A equipa deve ter uma forte compreensão das tecnologias disponíveis e dos seus modelos de faturação.

Depois de entender o ROI de uma carga de trabalho, você pode começar a melhorá-la. Para melhorar o ROI, considere como as decisões baseadas nos princípios de design da Otimização de Custos e nas recomendações da lista de verificação de revisão de projeto para Otimização de Custos podem influenciar as metas e otimizações de outros pilares do Azure Well-Architected Framework. Para a otimização de custos, é importante evitar focar em uma solução mais barata. As escolhas que se concentram apenas na minimização de gastos podem aumentar o risco de prejudicar os objetivos de negócios e a reputação da sua carga de trabalho. Este artigo descreve exemplos de compensações que uma equipe de carga de trabalho pode encontrar ao considerar a configuração de destino, o design e as operações para otimização de custos.

Compensações de otimização de custos com confiabilidade

O custo de uma interrupção do serviço deve ser medido em relação ao custo de prevenção ou recuperação de um. Se o custo das interrupções exceder o custo do projeto de confiabilidade, você deve investir mais para evitar ou mitigar interrupções. Por outro lado, o custo dos esforços de confiabilidade pode ser maior do que o custo de uma interrupção, incluindo fatores como requisitos de conformidade e reputação. Você deve considerar o desinvestimento estratégico no design de confiabilidade apenas neste cenário.

Compensação: resiliência reduzida. Uma carga de trabalho incorpora medidas de resiliência para tentar evitar e suportar tipos e quantidades específicos de mau funcionamento.

  • Para economizar dinheiro, a equipe de carga de trabalho pode subprovisionar um componente ou restringir demais seu dimensionamento, tornando o componente mais propenso a falhar durante picos repentinos de demanda.

  • A consolidação de recursos de carga de trabalho (densidade crescente) para otimização de custos torna os componentes individuais mais propensos a falhar durante picos de demanda e durante operações de manutenção, como atualizações.

  • A remoção de componentes que suportam padrões de design de resiliência, como um barramento de mensagens, e a criação de uma dependência direta reduzem os recursos de autopreservação.

  • Economizar dinheiro reduzindo a redundância pode limitar a capacidade de uma carga de trabalho de lidar com avarias simultâneas.

  • O uso de SKUs de orçamento pode limitar o SLO (objetivo de nível de serviço) máximo que a carga de trabalho pode alcançar.

  • A definição de limites rígidos de gastos pode impedir que uma carga de trabalho seja dimensionada para atender à demanda legítima.

  • Sem ferramentas ou testes de confiabilidade, a confiabilidade de uma carga de trabalho é desconhecida e é menos provável que atinja as metas de confiabilidade.

Compensação: Estratégia de recuperação limitada. Uma carga de trabalho confiável tem um plano de resposta a incidentes e recuperação testado para cenários de desastre.

  • A redução dos testes ou perfurações do plano de recuperação de desastres de uma carga de trabalho pode afetar a velocidade e a eficácia das operações de recuperação.

  • Criar ou reter menos backups diminui possíveis pontos de recuperação e aumenta a chance de perda de dados.

  • A escolha de um contrato de suporte menos dispendioso com parceiros tecnológicos pode aumentar o tempo de recuperação da carga de trabalho devido a potenciais atrasos na assistência técnica.

Compensação: Maior complexidade. Uma carga de trabalho que usa abordagens diretas e evita complexidade desnecessária ou superprojetada é geralmente mais fácil de gerenciar em termos de confiabilidade.

  • O uso de padrões de nuvem de otimização de custos pode adicionar novos componentes, como uma rede de distribuição de conteúdo (CDN), ou transferir tarefas para dispositivos de borda e clientes para os quais uma carga de trabalho deve fornecer metas de confiabilidade.

  • O dimensionamento baseado em eventos pode ser mais complicado de ajustar e validar do que o dimensionamento baseado em recursos.

  • A redução do volume de dados e a hierarquização dos dados por meio de ações do ciclo de vida dos dados, possivelmente em conjunto com a implementação de pontos de dados agregados antes de um evento do ciclo de vida, introduz fatores de confiabilidade a serem considerados na carga de trabalho.

  • Usar diferentes regiões para otimizar os custos pode dificultar o gerenciamento, a rede e o monitoramento.

Compensações de otimização de custos com segurança

O custo de um compromisso com a confidencialidade, integridade e disponibilidade em uma carga de trabalho deve ser sempre ponderado com o custo do esforço para evitar esse comprometimento. Um incidente de segurança pode ter uma ampla gama de impactos financeiros e legais e prejudicar a reputação de uma empresa. Investir em segurança é uma atividade de mitigação de riscos. O custo de experimentar os riscos deve ser ponderado em relação ao investimento. Como regra, não comprometa a segurança para obter otimizações de custos que estejam abaixo do ponto de mitigação de riscos responsável e acordada. Otimizar os custos de segurança por meio de soluções de direitos é uma prática de otimização importante, mas esteja ciente de compensações como as seguintes ao fazer isso.

Compensação: Controles de segurança reduzidos. Os controles de segurança são estabelecidos em várias camadas, às vezes de forma redundante, para fornecer defesa em profundidade.

Uma tática de otimização de custos é procurar maneiras de remover componentes ou processos que acumulam custos unitários ou operacionais. A remoção de componentes de segurança, como os exemplos a seguir, para economizar dinheiro, afeta a segurança. É necessário realizar cuidadosamente uma análise de risco sobre esse impacto.

  • Reduzir ou simplificar as técnicas de autenticação e autorização compromete o princípio de verificação explícita da arquitetura de confiança zero. Exemplos dessas simplificações incluem o uso de um esquema de autenticação básica, como chaves pré-compartilhadas, em vez de investir tempo para aprender abordagens OAuth do setor, ou o uso de atribuições simplificadas de controle de acesso baseadas em função para reduzir a sobrecarga de gerenciamento.

  • A remoção da criptografia em trânsito ou em repouso para reduzir os custos com certificados e seus processos operacionais expõe os dados a possíveis violações de integridade ou confidencialidade.

  • Remover ou reduzir as ferramentas de verificação ou inspeção de segurança ou os testes de segurança devido ao custo e ao investimento de tempo associados pode afetar diretamente a confidencialidade, a integridade ou a disponibilidade que as ferramentas e os testes se destinam a proteger.

  • A redução da frequência de aplicação de patches de segurança devido ao tempo operacional investido na catalogação e na execução da aplicação de patches afeta a capacidade de uma carga de trabalho de lidar com ameaças em evolução.

  • A remoção de controles de rede, como firewalls, pode levar a uma falha no bloqueio do tráfego mal-intencionado de entrada e saída.

Compensação: aumento da área de superfície da carga de trabalho. O pilar Segurança prioriza uma área de superfície reduzida e contida para minimizar vetores de ataque e o gerenciamento de controles de segurança.

Os padrões de design de nuvem que otimizam os custos às vezes exigem a introdução de componentes adicionais. Esses componentes adicionais aumentam a área de superfície da carga de trabalho. Os componentes e os dados dentro deles devem ser protegidos, possivelmente de maneiras que ainda não são usadas no sistema. Estes componentes e dados estão frequentemente sujeitos a conformidade. Exemplos de padrões que podem introduzir componentes incluem:

  • Usando o padrão de hospedagem de conteúdo estático para descarregar dados para um novo componente CDN.

  • Usando o padrão Valet Key para descarregar o processamento e proteger o acesso aos recursos para a computação do cliente.

  • Usando o padrão de Nivelamento de Carga Baseado em Fila para suavizar os custos introduzindo um barramento de mensagens.

Compensação: Segmentação removida. O pilar Segurança prioriza uma forte segmentação para suportar a aplicação de controles de segurança direcionados e para controlar o raio de explosão.

O compartilhamento de recursos, por exemplo, em situações de multilocação ou a colocalização de vários aplicativos em uma plataforma de aplicativo compartilhada, é uma abordagem para reduzir custos aumentando a densidade e reduzindo a superfície de gerenciamento. Esse aumento da densidade pode levar a preocupações de segurança como estas:

  • O movimento lateral entre componentes que compartilham recursos é mais fácil. Um evento de segurança que compromete a disponibilidade do host da plataforma de aplicativo ou de um aplicativo individual também tem um raio de explosão maior.

  • Os recursos colocalizados podem compartilhar uma identidade de carga de trabalho e ter trilhas de auditoria menos significativas nos logs de acesso.

  • Os controlos de segurança da rede devem ser suficientemente amplos para abranger todos os recursos colocalizados. Esta configuração viola potencialmente o princípio do menor privilégio para alguns recursos.

  • A colocalização de aplicativos ou dados diferentes em um host compartilhado pode levar à extensão dos requisitos de conformidade e controles de segurança para aplicativos ou dados que, de outra forma, estariam fora do escopo. Este alargamento do âmbito de aplicação exige um escrutínio de segurança adicional e um esforço de auditoria sobre os componentes colocalizados.

Compensações de Otimização de Custos com Excelência Operacional

Compensação: capacidades comprometidas do ciclo de vida de desenvolvimento de software (SDLC). O processo SDLC de uma carga de trabalho fornece rigor, consistência, especificidade e priorização para o gerenciamento de alterações em uma carga de trabalho.

  • Reduzir os esforços de teste para economizar tempo e o custo associado ao pessoal, recursos e ferramentas de teste pode resultar em mais bugs na produção.

  • Adiar o pagamento da dívida técnica para concentrar os esforços do pessoal em novos recursos pode levar a ciclos de desenvolvimento mais lentos e agilidade geral reduzida.

  • Despriorizar a documentação para concentrar os esforços do pessoal no desenvolvimento de produtos pode levar a um tempo de integração mais longo para novos funcionários, afetar a eficácia da resposta a incidentes e comprometer os requisitos de conformidade.

  • A falta de investimento em treinamento leva à estagnação de competências, reduzindo a capacidade da equipe de adotar novas tecnologias e práticas.

  • Remover as ferramentas de automação para economizar dinheiro pode resultar em pessoal gastando mais tempo nas tarefas que não são mais automatizadas. Além disso, aumenta o risco de erros e incoerências.

  • Reduzir os esforços de planejamento, como escopo e priorização de atividades, para cortar despesas pode aumentar a probabilidade de retrabalho devido a especificações vagas e implementação deficiente.

  • Evitar ou reduzir atividades de melhoria contínua, como retrospetivas e relatórios pós-incidentes, para manter a equipe de carga de trabalho focada na entrega pode criar oportunidades perdidas para otimizar processos de rotina, não planejados e de emergência.

Compensação: Observabilidade reduzida. A observabilidade é necessária para ajudar a garantir que uma carga de trabalho tenha alertas significativos e resposta bem-sucedida a incidentes.

  • A diminuição do volume de log e métrica para economizar em custos de armazenamento e transferência reduz a observabilidade do sistema e pode levar a:

    • Menos pontos de dados para criar alertas relacionados à confiabilidade, segurança e desempenho.
    • Lacunas de cobertura nas atividades de resposta a incidentes.
    • Observabilidade limitada em interações ou limites relacionados à segurança ou conformidade.
  • Os padrões de projeto de otimização de custos podem adicionar componentes a uma carga de trabalho, aumentando sua complexidade. A estratégia de monitorização da carga de trabalho deve incluir esses novos componentes. Por exemplo, alguns padrões podem introduzir fluxos que abrangem vários componentes ou deslocar processos do servidor para o cliente. Essas alterações podem aumentar a complexidade de correlacionar e rastrear informações.

  • O investimento reduzido em ferramentas de observabilidade e a manutenção de painéis eficazes podem diminuir a capacidade de aprender com a produção, validar escolhas de design e informar o design do produto. Essa redução também pode dificultar as atividades de resposta a incidentes e dificultar o cumprimento do objetivo de tempo de recuperação e SLO.

Compensação: Manutenção diferida. Espera-se que as equipes de carga de trabalho mantenham código, ferramentas, pacotes de software e sistemas operacionais corrigidos e atualizados em tempo hábil e de forma ordenada.

  • Permitir que os contratos de manutenção com fornecedores de ferramentas expirem pode resultar em recursos de otimização perdidos, resoluções de bugs e atualizações de segurança.

  • Aumentar o tempo entre os patches do sistema para economizar tempo pode levar a correções de bugs perdidas ou à falta de proteção contra ameaças de segurança em evolução.

Compensações de otimização de custos com eficiência de desempenho

Os pilares Otimização de Custos e Eficiência de Desempenho priorizam a maximização do valor de uma carga de trabalho. A Eficiência de Desempenho enfatiza o cumprimento de metas de desempenho sem gastar mais do que o necessário. A otimização de custos enfatiza a maximização do valor produzido pelos recursos de uma carga de trabalho sem exceder as metas de desempenho. Como resultado, a Otimização de Custos geralmente melhora a Eficiência de Desempenho. No entanto, existem compensações de Eficiência de Desempenho associadas à Otimização de Custos. Essas compensações podem dificultar o alcance das metas de desempenho e dificultar a otimização contínua do desempenho.

Compensação: recursos subprovisionados ou subdimensionados. Uma carga de trabalho eficiente em termos de desempenho tem recursos suficientes para atender à demanda, mas não tem sobrecarga excessiva não utilizada, mesmo quando os padrões de uso flutuam.

  • A redução de custos através do enxugamento de recursos pode privar os aplicativos de recursos. O aplicativo pode não ser capaz de lidar com flutuações significativas do padrão de uso.

  • Limitar ou atrasar o escalonamento para limitar ou reduzir os custos pode resultar numa oferta insuficiente para satisfazer a procura.

  • As configurações de dimensionamento automático que diminuem agressivamente para reduzir custos podem deixar um serviço despreparado para picos repentinos de demanda ou causar flutuações frequentes de dimensionamento (flapping).

Compensação: Falta de otimização ao longo do tempo. Avaliar os efeitos de mudanças na funcionalidade, mudanças nos padrões de uso, novas tecnologias e diferentes abordagens na carga de trabalho é uma maneira de tentar aumentar a eficiência.

  • Limitar o foco no desenvolvimento de experiência em otimização de desempenho para priorizar a entrega pode causar oportunidades perdidas para melhorar a eficiência do uso de recursos.

  • A remoção de ferramentas de teste ou monitoramento de desempenho de acesso aumenta o risco de problemas de desempenho não detetados. Também limita a capacidade de uma equipe de carga de trabalho executar ciclos de medida/melhoria.

  • Negligenciar áreas propensas à degradação do desempenho, como armazenamentos de dados, pode deteriorar gradualmente o desempenho da consulta e elevar o uso geral do sistema.

Explore as compensações para os outros pilares: