Recomendações para otimizar os custos dos componentes

Aplica-se a esta recomendação de lista de verificação de otimização de custos do Azure Well-Architected Framework:

CO:07 Otimize os custos dos componentes. Remova ou otimize regularmente componentes de carga de trabalho legados, desnecessários e subutilizados, incluindo recursos de aplicativos, recursos de plataforma e recursos.

Este guia descreve as recomendações para otimizar os custos dos componentes da carga de trabalho. A otimização dos custos dos componentes refere-se ao processo de avaliar e melhorar a eficiência de custos de elementos individuais dentro de uma carga de trabalho. Ele enfatiza a revisão contínua e a possível remoção ou melhoria de componentes desatualizados, desnecessários ou raramente usados, como recursos de aplicativos, recursos de plataforma e recursos. Ele também cobre a otimização de custos de ambientes de recuperação de desastres e como evitar a introdução de componentes não otimizados. As diretrizes neste artigo se aplicam a cargas de trabalho existentes que não estão na fase de design. Negligenciar a otimização regular de componentes pode levar a custos inflacionados, desperdício de recursos e cargas de trabalho ineficientes que drenam tempo e dinheiro.

Definições

Termo Definição
Recurso do aplicativo Um recurso distinto dentro do software de aplicativo que permite que os usuários executem tarefas específicas ou acessem informações específicas.
Funcionalidade da plataforma Uma funcionalidade ou capacidade específica fornecida por uma plataforma. Pode variar dependendo da plataforma, mas, geralmente, os recursos da plataforma são projetados para melhorar a experiência do usuário, melhorar a produtividade ou permitir tarefas ou ações específicas.
Recurso Uma única entidade ou componente que você pode criar, configurar e utilizar em um provedor de serviços de nuvem.

Principais estratégias de design

A otimização dos componentes da carga de trabalho consiste em refinar os vários elementos de uma carga de trabalho, incluindo recursos de aplicativos, recursos de plataforma e recursos. O objetivo é garantir que a carga de trabalho use todos os componentes de forma eficiente e econômica. As estratégias incluem remover, modificar e evitar componentes que fazem com que você gaste mais do que precisa. O processo de otimização de custos de componentes garante que você aloque recursos para recursos e componentes que oferecem mais valor, evitando gastos desnecessários.

Otimize os recursos do aplicativo

A otimização dos recursos do aplicativo é o processo de remover, reinvestir ou monetizar os recursos do aplicativo com base no valor. Ele garante que você aloque recursos para recursos de aplicativos que fornecem o maior valor para os clientes. A otimização dos recursos do aplicativo ajuda a evitar o investimento em recursos que contribuem para a dívida técnica ou não geram retorno suficiente sobre o investimento.

Avaliar o valor do recurso do aplicativo

Para determinar o valor de um recurso, considere seus efeitos no aplicativo geral e o valor que ele fornece aos clientes. Alguns fatores a considerar incluem:

  • Necessidades do cliente: avalie o quão bem o recurso atende às necessidades e expectativas dos clientes. O feedback dos clientes, pesquisas e dados de uso podem ser valiosos para entender o valor percebido.

  • Objetivos de negócio: Avalie como o recurso se alinha com os objetivos estratégicos do negócio. Considere como os recursos suportam a geração de receita, a satisfação do cliente ou a vantagem competitiva.

  • Efeito na experiência do usuário: determine o efeito que o recurso tem na melhoria da experiência do usuário e na melhoria da usabilidade ou produtividade.

  • Diferenciação: Avalie se o recurso oferece um ponto de venda exclusivo ou vantagem competitiva em comparação com outros aplicativos no mercado.

Avalie o custo do recurso do aplicativo

É essencial que você entenda o custo associado a cada recurso para uma alocação e otimização de recursos eficazes. Considere vários aspetos ao avaliar custos, tais como:

  • Esforço de desenvolvimento: avalie o tempo, os recursos e a experiência necessários para desenvolver e manter o recurso ou os recursos circundantes. Recursos subutilizados muitas vezes se tornam uma fonte chave de dívida técnica.

  • Manutenção e suporte: considere os custos contínuos associados à manutenção e suporte ao recurso, incluindo correções de bugs, atualizações de segurança e solução de problemas.

  • Utilização de infraestrutura e recursos: avalie o efeito do recurso nos requisitos de infraestrutura, incluindo recursos do servidor, armazenamento e largura de banda.

  • Complexidade da integração: avalie a complexidade e o custo da integração do recurso com outros sistemas ou serviços de terceiros.

  • Considerações de desempenho: avalie o efeito do recurso no desempenho do aplicativo, incluindo escalabilidade, tempo de resposta e uso de recursos.

Analise o valor do recurso do aplicativo com as partes interessadas

Analise o valor dos recursos do aplicativo com as partes interessadas envolvendo pessoal-chave, como gerentes de produto, desenvolvedores de software e analistas de negócios, para avaliar o valor de recursos específicos nos objetivos de negócios. Essa colaboração é essencial para a otimização de custos, pois fornece informações sobre os esforços de manutenção e identifica recursos que podem prejudicar a produtividade ou prejudicar o desenvolvimento de recursos novos e valiosos. Sua equipe de desenvolvimento pode fornecer informações importantes sobre quanto trabalho é necessário para manter determinados recursos. Incentive-os a falar sobre recursos que podem ser mais problemáticos do que valem, especialmente se esses recursos distraírem a equipe de criar novos.

Determinar o futuro do recurso

Com base em sua análise e avaliação, determine o futuro dos recursos do aplicativo. Remover, reinvestir ou rentabilizar qualquer funcionalidade de aplicação que não proporcione um retorno sobre o investimento:

  • Remoção: considere o fim da vida útil planejado de um recurso de aplicativo com base em dados. As razões para a remoção de recursos podem incluir baixa demanda do cliente, altos custos de manutenção, complexidade ou redundância que não vale a pena o esforço para corrigir. Crie um plano para a remoção, que pode envolver a refatoração do código, a atualização de dependências ou a reorganização da interface do usuário.

    Ícone de riscoRisco: Você pode remover inadvertidamente recursos que são críticos para determinados usuários ou cenários e podem afetar negativamente o desempenho, as operações e a segurança em seu aplicativo.

  • Reinvestir: alguns recursos do aplicativo podem não agregar valor suficiente em seu estado atual, mas podem agregar valor se você reinvestir neles. Reinvestimento significa retrabalhar ou promover o recurso do aplicativo. Priorizar as melhorias identificadas com base no seu valor e viabilidade. Determine o roteiro e o cronograma para a implementação das alterações. Considere fatores como recursos de desenvolvimento, dependências e o efeito potencial no aplicativo.

  • Monetizar: transforme os recursos do aplicativo em uma oportunidade de geração de receita por meio da monetização. Às vezes, os recursos agregam valor aos usuários, mas não valem o investimento atual. Explore oportunidades para rentabilizar estas funcionalidades, tais como oferecê-las como suplementos pagos separados ou licenciá-las a outras empresas.

Otimize os recursos da carga de trabalho

A otimização de recursos de carga de trabalho envolve a remoção de quaisquer recursos não utilizados e a otimização de quaisquer recursos subutilizados de que a carga de trabalho precisa. Esse esforço pode economizar dinheiro, evitar desperdícios e garantir que a carga de trabalho use apenas os recursos que agregam valor.

Remova os recursos de carga de trabalho não utilizados. Os recursos não utilizados são serviços implantados que sua carga de trabalho ou processos de operações não usam. Esses recursos podem estar ociosos a longo prazo, órfãos ou esquecidos. Eles não fornecem retorno sobre o investimento, e você deve removê-los. As causas comuns de recursos não utilizados incluem:

  • Alertas.
  • Compilações de demonstração.
  • Desmantelamento ambiental.
  • Descomissionamento de recursos.
  • Endereços IP.
  • Firewalls de rede.
  • Prova de conceito.
  • Instantâneos.
  • Contas de armazenamento.
  • Ambientes de teste temporários.
  • Triagem temporária de ambientes.

Para remover recursos não utilizados em uma carga de trabalho, considere estas etapas:

  1. Faça um inventário: realize um inventário completo de todos os recursos dentro da carga de trabalho em todos os ambientes.

  2. Encontrar recursos órfãos: os recursos podem ficar órfãos quando não forem mais necessários ou quando os recursos pai forem removidos. Por exemplo, você pode remover uma máquina virtual, mas sua conta de armazenamento associada não é removida. Revise sua carga de trabalho para identificar recursos desnecessários ou órfãos.

  3. Remover componentes ociosos: normalmente há um custo associado a um recurso implantado. Mesmo que o recurso permita que você pare ou realoque, você pode continuar a pagar pelo recurso. Considere a remoção de recursos ociosos. Se precisar dos dados, faça backup deles primeiro e, em seguida, remova o recurso. É melhor reimplantar o recurso e restaurar os dados do que permitir que o recurso permaneça ocioso.

Otimizar recursos subutilizados. Recursos subutilizados representam despesas desperdiçadas à medida que você paga pela capacidade de recursos que não é totalmente utilizada. Identifique e otimize esses recursos para reduzir custos e alocar recursos de forma mais eficaz. Para avaliar e otimizar o custo de recursos subutilizados, siga estas etapas:

  1. Monitorar recursos: use ferramentas para monitorar a quantidade de CPU, memória e armazenamento que você realmente usa. Escolha o melhor plano que corresponda às suas necessidades com base nessas informações.

  2. Analise a utilização: Observe os dados para descobrir quais recursos você não usa. Preste atenção aos recursos que têm baixo uso ao longo do tempo ou grandes diferenças no uso entre tempos ocupados e lentos.

  3. Dimensionamento correto: verifique se há muitos recursos alocados para recursos que não estão em uso. Em caso afirmativo, ajuste o seu tamanho para corresponder melhor ao que realmente precisa.

  4. Dimensionamento automático: use o dimensionamento automático para ajustar os recursos que você usa com base em quão ocupado você está. Certifique-se de definir um limite máximo de escala para evitar picos repentinos que podem ser caros e desnecessários.

Depois de fazer esses ajustes, teste para se certificar de que tudo ainda funciona como deveria. Monitore continuamente a utilização de recursos e ajuste a alocação de recursos à medida que as demandas de carga de trabalho mudam ao longo do tempo. Analise e otimize regularmente a utilização de recursos para manter a eficiência de custos e a otimização do desempenho.

Otimize os recursos de recuperação de desastres. A otimização de ambientes de recuperação de desastres visa garantir que os recursos alocados para a recuperação de desastres sejam usados de forma eficiente. Uma estratégia de recuperação de desastres quente (ativo-passivo) é uma fonte comum de subutilização. Em uma estratégia de recuperação de desastres quente, um ambiente recebe toda a carga, enquanto o outro ambiente fica ocioso até que haja um cenário de desastre. Para otimizar um ambiente de recuperação de desastres, considere como uma abordagem quente (ativo-ativo), frio (ativo-desativado) ou ativo-reimplantação pode ajudar a evitar recursos subutilizados. Aqui está uma visão geral dessas três abordagens de recuperação de desastres:

  • Planos quentes: Os ambientes primário e secundário atendem ao tráfego simultaneamente. Sua carga de trabalho pode equilibrar cargas entre esses ambientes e responder às demandas em tempo real. Distribuir a carga entre dois ambientes ativos permite que você use recursos mais baratos, reduza gargalos de ponto único e utilize as capacidades ao máximo. Pode conduzir a custos reduzidos em termos de desperdício de recursos ou de marcha lenta sem carga. Uma abordagem ativa pode exigir mais investimento em sincronização e manutenção da paridade entre os dois ambientes.

  • Planos frios: um modelo de recuperação de desastres a frio envolve um ambiente de espera que permanece inativo até que um desastre desencadeie a necessidade de failover. Como o ambiente de espera não está em execução ativa, os custos relacionados a operações de computação, armazenamento e rede são minimizados. Suas despesas giram em torno do armazenamento de backups, imagens de máquinas virtuais (VM) ou modelos. O failover no modelo frio pode levar mais tempo porque os recursos precisam ser inicializados e os dados podem precisar ser restaurados. Certifique-se de que o tempo de recuperação esteja alinhado com os objetivos de tempo de recuperação (RTO) da sua empresa antes de se comprometer com essa abordagem.

  • Reimplantação ativa: essa estratégia usa a infraestrutura como código. Quando ocorre um evento de failover, você implanta o ambiente secundário, usando modelos e scripts predefinidos. Sem recursos de computação pré-implantados no ambiente de recuperação de desastres, você economiza nos custos associados à manutenção de recursos ociosos. Você só incorre em custos durante a implantação real em um cenário de failover. Como a abordagem fria, esse modelo pode introduzir tempos de recuperação mais longos, especialmente se a complexidade da infraestrutura for alta. Você deve testar e medir o tempo de recuperação para garantir que ele atenda ao seu objetivo de tempo de recuperação.

Otimize os recursos da plataforma

A otimização dos recursos da plataforma envolve a eliminação ou atualização de recursos da plataforma, como camadas de desempenho e definições de configuração, para otimizar custos. Ele ajuda a alinhar os gastos com os requisitos da carga de trabalho e evita gastos desnecessários em recursos desnecessários. Aqui estão algumas dicas para otimizar o custo dos recursos da plataforma:

  • Conheça os recursos das coisas que você compra: antes de poder otimizar, você precisa de um inventário claro dos serviços e seus recursos em suas plataformas de nuvem. Entenda os recursos e funcionalidades das plataformas ou serviços em sua carga de trabalho. Esteja ciente da camada específica que você escolheu e dos recursos que cada camada oferece. Por exemplo, se você não precisar de dimensionamento automático ou rede avançada, um plano de camada inferior pode ser suficiente.

  • Desativar recursos não utilizados: identifique e desative os recursos da plataforma que custam dinheiro. Você pode ter snapshots de armazenamento desnecessários, discos não utilizados, recursos de segurança redundantes ou recursos de rede subutilizados.

  • Use as versões certas: as versões mais recentes de um serviço podem fornecer desempenho semelhante pelo mesmo preço. Por exemplo, uma máquina virtual com hardware mais recente geralmente pode fornecer o mesmo desempenho por menos dinheiro.

  • Use as configurações corretas: você pode estar pagando por mais disponibilidade ou desempenho do que precisa. Eliminar a disponibilidade ou o desempenho garante que a carga de trabalho não precisa.

  • Elimine a automação desnecessária: avalie seus processos de automação e elimine qualquer automação não utilizada que possa incorrer em custos extras.

  • Elimine a redundância de ferramentas: Livre-se de ferramentas que você não precisa ou ferramentas que fornecem a mesma função. Avalie a redundância potencial nas ferramentas que você usa para criar software, escrever código, segurança e monitoramento. Por exemplo, se você usar o GitHub Actions para criar seu software, não precisará comprar outra ferramenta que crie software. Antes de comprar recursos ou ferramentas, verifique se já há uma ferramenta em sua carga de trabalho que possa fazer o trabalho. Elimine a redundância de ferramentas para evitar o desperdício de dinheiro e aproveitar ao máximo o que você já tem.

Seja metódico nos esforços de otimização

Evitar componentes não otimizados é garantir proativamente que os componentes sejam essenciais e otimizados antes de adicionar ou modificar. A melhor maneira de se livrar dos resíduos é evitá-los em primeiro lugar. Use estratégias que evitem despesas desnecessárias, abordando ineficiências na raiz, garantindo que uma carga de trabalho seja executada de forma rentável desde o início. Para ajudar a prevenir o desperdício, considere estas estratégias:

  • Encontre a causa raiz antes de alterar as soluções: Antes de corrigir um problema, certifique-se de que sabe o que realmente o está a causar. Por exemplo, se o seu site estiver lento, não mude imediatamente para um novo sistema. Primeiro, descubra por que é lento. Você pode descobrir que o problema real é outra coisa, como consultas de banco de dados ruins. Corrija o problema real para economizar tempo e dinheiro.

  • Aplicar metadados: aplique metadados para organizar e controlar recursos. Você pode usar metadados para categorizar e agrupar recursos, facilitando o rastreamento, a exclusão e a prevenção de recursos órfãos. Crie uma estratégia de metadados consistente entre recursos. Considere adicionar proprietários, a duração prevista do recurso (por exemplo, sunset-30d) ou outras tags.

  • Documente alterações não padrão: documente quaisquer alterações feitas em sua infraestrutura ou configurações realizadas fora do processo de controle normal de sua carga de trabalho para reduzir custos inesperados. Por exemplo, você pode aumentar as capacidades de dimensionamento (para cima ou para fora) de um recurso para atender a uma demanda de curto prazo ou triar um problema, mas esquecer de reduzi-lo. Faça uma lista de alterações não padrão e use-a como um lembrete para reverter as alterações quando elas não forem mais necessárias.

  • Simplifique: simplifique sua infraestrutura e minimize a complexidade para ajudar a reduzir custos. Use apenas os recursos e serviços necessários que atendam às suas necessidades.

Facilitação do Azure

Otimizando recursos do aplicativo: você pode usar o Azure Monitor e o Application Insights para monitorar o uso do seu aplicativo e identificar áreas que são ou não usadas. Com base nos insights coletados, você pode tomar decisões informadas para remover ou otimizar recursos não utilizados ou subutilizados.

Otimizando recursos de carga de trabalho e recursos da plataforma: o Azure Advisor fornece recomendações de custo, fornece recomendações para identificar e eliminar recursos não utilizados. Você pode usar o Advisor para analisar o uso de recursos e receber sugestões sobre recursos a serem removidos ou reduzidos. A pasta de trabalho de Otimização de Custos no Azure Advisor serve como um hub centralizado para algumas das ferramentas mais usadas que podem ajudá-lo a impulsionar as metas de utilização e eficiência. Ele oferece uma variedade de recomendações, incluindo recomendações de custos do Azure Advisor. Ele também ajuda a identificar recursos ociosos e gerenciar máquinas virtuais desalocadas indevidamente.

O Azure Monitor dá suporte a pastas de trabalho. Com pastas de trabalho do Azure Monitor, você pode localizar ou criar uma pasta de trabalho que localiza e relata recursos órfãos em um escopo definido. Você pode usar a Automação do Azure para desligar máquinas virtuais durante períodos de inatividade. Os desligamentos de recursos ajudam a reduzir custos, minimizando o uso de recursos ociosos.

Você pode usar o recurso de dimensionamento automático no Azure para dimensionar automaticamente seu aplicativo com base em condições predefinidas, para que não seja necessário provisionar capacidade excessiva. O dimensionamento automático pode ajudá-lo a alocar recursos de forma eficiente e econômica.

De uma perspetiva de design, os balanceadores de carga do Azure podem distribuir cargas entre zonas de disponibilidade e regiões. Esses balanceadores de carga podem ajudar a eliminar recursos ociosos, por exemplo, em abordagens de recuperação de desastres.

Lista de verificação de otimização de custos

Consulte o conjunto completo de recomendações.