Compensações de otimização de custos

Ao projetar uma carga de trabalho para maximizar o retorno sobre o investimento (ROI) sob restrições financeiras, primeiro você 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 equipe que tem um forte senso de responsabilidade financeira. A equipe deve ter uma forte compreensão das tecnologias disponíveis e seus modelos de cobrança.

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 na lista de verificação de revisão de design para Otimização de Custos podem influenciar as metas e otimizações de outros pilares do Azure Well-Architected Framework. Para 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 as metas de negócios e a reputação de 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, o design e as operações de destino para otimização de custos.

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

O custo de uma interrupção de serviço deve ser medido em relação ao custo de prevenção ou recuperação de uma. Se o custo das interrupções exceder o custo do projeto de confiabilidade, você deverá 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 somente neste cenário.

Compensação: resiliência reduzida. Uma carga de trabalho incorpora medidas de resiliência para tentar evitar e resistir a 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 (aumentando a densidade) 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 dão suporte a 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.

  • Definir limites de gastos rígidos pode impedir que uma carga de trabalho seja dimensionada para atender à demanda legítima.

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

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

  • A redução do teste ou da perfuração 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 os possíveis pontos de recuperação e aumenta a chance de perda de dados.

  • A escolha de um contrato de suporte mais barato com parceiros de tecnologia pode aumentar o tempo de recuperação da carga de trabalho devido a possíveis 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 entrega de conteúdo (CDN), ou transferir tarefas para dispositivos de borda e cliente 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 de dados por meio de ações de ciclo de vida de dados, possivelmente em conjunto com a implementação de pontos de dados agregados antes de um evento de ciclo de vida, introduz fatores de confiabilidade a serem considerados na carga de trabalho.

  • O uso de diferentes regiões para otimizar custos pode dificultar o gerenciamento, a rede e o monitoramento.

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

O custo de um comprometimento da confidencialidade, integridade e disponibilidade em uma carga de trabalho deve sempre ser equilibrado 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 equilibrado com o investimento. Como regra, não comprometa a segurança para obter otimizações de custo que estão abaixo do ponto de mitigação de risco responsável e acordada. Otimizar os custos de segurança por meio do dimensionamento correto das soluções é 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. Você precisa 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ásico, como chaves pré-compartilhadas, em vez de investir tempo para aprender as 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 de 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 associado e ao investimento de tempo pode afetar diretamente a confidencialidade, a integridade ou a disponibilidade que as ferramentas e os testes devem proteger.

  • Reduzir a frequência de aplicação de patches de segurança devido ao tempo operacional investido na catalogação e 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 de entrada e saída mal-intencionado.

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 os vetores de ataque e o gerenciamento dos 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. Esses componentes e dados geralmente estão sujeitos à 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 de chave de manobrista para descarregar o processamento e proteger o acesso a 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 apoiar a aplicação de controles de segurança direcionados e 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 aplicativos compartilhada, é uma abordagem para reduzir custos aumentando a densidade e reduzindo a superfície de gerenciamento. Esse aumento de 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 aplicativos 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 controles de segurança de rede devem ser amplos o suficiente para cobrir todos os recursos colocalizados. Essa configuração potencialmente viola o princípio de privilégios mínimos 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. Essa ampliação do escopo exige um esforço adicional de escrutínio e auditoria de segurança nos 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 à equipe de teste, recursos e ferramentas pode resultar em mais bugs na produção.

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

  • Despriorizar a documentação para concentrar os esforços da equipe 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 habilidades, reduzindo a capacidade da equipe de adotar novas tecnologias e práticas.

  • A remoção de ferramentas de automação para economizar dinheiro pode fazer com que o pessoal gaste mais tempo nas tarefas que não são mais automatizadas. Também aumenta o risco de erros e inconsistê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 má implementação.

  • Evitar ou reduzir atividades de melhoria contínua, como retrospectivas e relatórios pós-incidente, 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 a incidentes bem-sucedida.

  • A diminuição do volume de logs e métricas para economizar nos 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 design de otimização de custos podem adicionar componentes a uma carga de trabalho, aumentando sua complexidade. A estratégia de monitoramento da carga de trabalho deve incluir esses novos componentes. Por exemplo, alguns padrões podem introduzir fluxos que abrangem vários componentes ou deslocam 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 do SLO.

Compensação: Manutenção diferida. Espera-se que as equipes de carga de trabalho mantenham o código, as ferramentas, os pacotes de software e os sistemas operacionais corrigidos e atualizados de maneira oportuna e 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 de 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 das 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 do desempenho. No entanto, há 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 com eficiência 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.

  • Reduzir custos por meio da redução 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 dimensionamento para limitar ou reduzir custos pode resultar em oferta insuficiente para atender à demanda.

  • As configurações de dimensionamento automático que reduzem horizontalmente para reduzir custos podem deixar um serviço despreparado para picos repentinos na demanda ou causar flutuações frequentes de dimensionamento (oscilação).

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 conhecimentos 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 detectados. Também limita a capacidade de uma equipe de carga de trabalho de executar ciclos de medição/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: