Recomendações para otimizar os custos do componente

Aplica-se a esta recomendação de lista de verificação da Otimização de Custos do Azure Well-Architected Framework:

CO:07 Otimizar os custos do componente. Remova ou otimize regularmente componentes de carga de trabalho herdados, desnecessários e subutilizados, incluindo recursos de aplicativo, recursos de plataforma e recursos.

Este guia descreve as recomendações para otimizar os custos do componente de carga de trabalho. Otimizar os custos do componente refere-se ao processo de avaliação e melhoria da eficiência de custo de elementos individuais em 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 aplicativo, recursos de plataforma e recursos. Ele também aborda a otimização de custos de ambientes de recuperação de desastre 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 inflados, desperdício de recursos e cargas de trabalho ineficientes que drenam tempo e dinheiro.

Definições

Termo Definição
Recurso de aplicativo Uma funcionalidade distinta dentro do software de aplicativo que permite que os usuários executem tarefas específicas ou acessem informações específicas.
Recurso da plataforma Uma funcionalidade ou funcionalidade específica fornecida por uma plataforma. Ele pode variar dependendo da plataforma, mas, em geral, os recursos da plataforma são projetados para aprimorar a experiência do usuário, melhorar a produtividade ou habilitar 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

Otimizar componentes de carga de trabalho é refinar os vários elementos de uma carga de trabalho, incluindo recursos de aplicativo, recursos de plataforma e recurso. A meta é 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 custo do componente garante que você aloque recursos para recursos e componentes que oferecem mais valor, evitando despesas desnecessárias.

Otimizar recursos do aplicativo

Otimizar recursos de aplicativo é o processo de remover, reinvestir ou monetizar recursos de aplicativo com base no valor. Ele garante que você aloque recursos para recursos de aplicativo que fornecem o maior valor para os clientes. Otimizar recursos de aplicativos ajuda a evitar investir 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. Comentários dos clientes, pesquisas e dados de uso podem ser valiosos para entender o valor percebido.

  • Metas de negócios: avalie como o recurso se alinha aos objetivos estratégicos do negócio. Considere como os recursos dão suporte à geração de receita, à satisfação do cliente ou à vantagem competitiva.

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

  • Diferenciação: avalie se o recurso fornece um ponto de venda exclusivo ou uma vantagem competitiva em comparação com outras aplicações no mercado.

Avaliar o custo do recurso do aplicativo

É essencial que você entenda o custo associado a cada recurso para alocação e otimização de recursos eficazes. Considere vários aspectos ao avaliar os custos, 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 ao redor. Recursos subutilizados geralmente 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.

  • Infraestrutura e utilização de recursos: avalie o efeito do recurso nos requisitos de infraestrutura, incluindo recursos de 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.

Examinar o valor do recurso de aplicativo com os stakeholders

Examine o valor dos recursos de aplicativo com os stakeholders ao envolver a equipe-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 insights sobre os esforços de manutenção e identifica recursos que podem dificultar 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 distrairem 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. Remova, reinvesta ou monetize qualquer recurso de aplicativo que não forneça um retorno sobre o investimento:

  • Remoção: considere o fim da vida útil planejado de um recurso de aplicativo com base nos dados. Os motivos 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, 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 críticos para determinados usuários ou cenários e pode afetar negativamente o desempenho, as operações e a segurança em seu aplicativo.

  • Reinvestir: alguns recursos de aplicativo podem não adicionar valor suficiente em seu estado atual, mas podem agregar valor se você reinvestir neles. Reinvestimento significa retrabalho ou promoção do recurso de aplicativo. Priorize as melhorias identificadas com base em seu valor e viabilidade. Determine o roteiro e o linha do tempo para implementar as 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 fornecem valor aos usuários, mas não valem o investimento atual. Explore oportunidades para monetizar esses recursos, como oferecê-los como complementos pagos separados ou licenciar para outras empresas.

Otimizar recursos de carga de trabalho

A otimização de recursos de carga de trabalho envolve a remoção de todos os recursos que não foram usados e a otimização de todos os 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.

Remover recursos de carga de trabalho não utilizados. Recursos não utilizados são serviços implantados que seus processos de carga de trabalho ou operações não usam. Esses recursos podem estar ociosos, órfãos ou esquecidos a longo prazo. 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.
  • Descomissionamento de ambiente.
  • Descomissionamento de recursos.
  • Endereços IP.
  • Firewalls de rede.
  • Prova de conceito.
  • Instantâneos.
  • Contas de armazenamento.
  • Ambientes de teste temporários.
  • Ambientes de triagem temporária.

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 entre ambientes.

  2. Localizar recursos órfãos: os recursos podem ficar órfãos quando não forem mais necessários ou quando seus recursos pai forem removidos. Por exemplo, você pode remover uma máquina virtual, mas sua conta de armazenamento associada não é removida. Examine 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 realloque, você poderá continuar pagando pelo recurso. Considere remover recursos ociosos. Se você precisar dos dados, faça backup primeiro e remova o recurso. É melhor reimplantar o recurso e restaurar os dados do que permitir que o recurso permaneça ocioso.

Otimizar recursos subutilizados. Os recursos subutilizados representam despesas desperdiçadas à medida que você paga pela capacidade de recurso que não é totalmente utilizada. Identifique e otimize esses recursos para reduzir custos e alocar recursos com mais eficiência. 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. Analisar a utilização: examine 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. Nesse caso, ajuste seu tamanho para corresponder melhor ao que você realmente precisa.

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

Depois de fazer esses ajustes, teste para garantir que tudo ainda funcione 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. Revise e otimize regularmente a utilização de recursos para manter a eficiência de custo e a otimização de desempenho.

Otimizar recursos de recuperação de desastre. Otimizar ambientes de recuperação de desastre é garantir que os recursos alocados para recuperação de desastre sejam usados com eficiência. Uma estratégia de recuperação de desastre quente (ativo-passivo) é uma fonte comum de subutilização. Em uma estratégia de recuperação de desastre 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 desastre, considere como uma abordagem ativa (ativa-ativa), fria (ativa-off) ou de reimplantação ativa pode ajudar a evitar recursos subutilizados. Aqui está uma visão geral dessas três abordagens de recuperação de desastre:

  • Planos frequentes: 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 usar recursos mais baratos, reduzir gargalos de ponto único e utilizar capacidades ao máximo. Isso pode levar a custos reduzidos em termos de desperdício de recursos ou idling. Uma abordagem dinâmica pode exigir mais investimento em sincronização e manutenção da paridade entre os dois ambientes.

  • Planos frios: um modelo de recuperação de desastre frio envolve um ambiente em espera que permanece inativo até que um desastre dispare a necessidade de failover. Como o ambiente em espera não está sendo executado ativamente, os custos relacionados à computação, armazenamento e operações de rede são minimizados. Suas despesas giram em torno do armazenamento de backups, imagens de VM (máquina virtual) ou modelos. O failover no modelo frio pode levar mais tempo porque os recursos precisam ser inicializados e os dados podem precisar ser restaurados. Verifique se o tempo de recuperação está alinhado com os RTO (objetivos de tempo de recuperação) 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é-reimplantados no ambiente de recuperação de desastre, 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. Assim como a abordagem a frio, 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.

Otimizar recursos da plataforma

Otimizar recursos da plataforma envolve eliminar ou atualizar recursos da plataforma, como camadas de desempenho e configurações, para otimizar os custos. Ele ajuda a alinhar os gastos com os requisitos da carga de trabalho e evita despesas desnecessárias com 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 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. Lembre-se 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 poderá ser suficiente.

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

  • Use as versões certas: versões mais recentes de um serviço podem fornecer um 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 certas: 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 precise.

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

  • Eliminar redundância de ferramentas: livre-se das 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 GitHub Actions para criar seu software, não precisará comprar outra ferramenta que crie software. Antes de comprar recursos ou ferramentas, marcar se já houver uma ferramenta em sua carga de trabalho que possa fazer o trabalho. Elimine a redundância de ferramentas para evitar desperdício de dinheiro e aproveite ao máximo o que você já tem.

Impedir componentes não otimizados

Impedir componentes não otimizados é garantir proativamente que os componentes sejam essenciais e otimizados antes de adicionar ou modificar. A melhor maneira de se livrar do desperdício é evitá-lo em primeiro lugar. Use estratégias que impeçam despesas desnecessárias abordando ineficiências na raiz, garantindo que uma carga de trabalho seja executada de maneira econômica desde o início. Para ajudar a evitar o desperdício, considere estas estratégias:

  • Encontre a causa raiz antes de alterar as soluções: antes de corrigir um problema, verifique se você sabe o que está realmente causando isso. Por exemplo, se o site estiver lento, não alterne 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 rastrear recursos. Você pode usar metadados para categorizar e agrupar recursos, tornando mais fácil rastrear, excluir e evitar recursos órfãos. Crie uma estratégia de metadados consistente entre os recursos. Considere adicionar proprietários, a duração prevista do recurso (por exemplo, sunset-30d) ou outras marcas.

  • Documentar alterações não padrão: documente todas as alterações feitas em sua infraestrutura ou configurações executadas fora do processo de controle normal da 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 fazer triagem de 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.

  • Mantenha as coisas simples: simplifique sua infraestrutura e minimize a complexidade para ajudar a reduzir os custos. Use apenas os recursos e serviços necessários que atendam aos seus requisitos.

Facilitação do Azure

Otimizando os recursos do aplicativo: você pode usar o Azure Monitor e o Application Insights para monitorar o uso do 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 de plataforma: o Assistente do Azure fornece recomendações de custo para identificar e eliminar recursos não utilizados. Você pode usar o Assistente para analisar o uso de recursos e receber sugestões sobre recursos para remover ou reduzir verticalmente. A pasta de trabalho otimização de custos no Assistente do Azure 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 série de recomendações, incluindo recomendações de custo do Assistente do Azure. Ele também ajuda a identificar recursos ociosos e gerenciar máquinas virtuais desalocadas incorretamente.

O Azure Monitor dá suporte a pastas de trabalho. Com as pastas de trabalho do Azure Monitor, você pode encontrar ou criar uma pasta de trabalho que localiza e relata recursos órfãos em um escopo definido. Você pode usar Automação do Azure para desligar máquinas virtuais durante períodos de inatividade. Os desligamentos de recursos ajudam a reduzir os 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 você não precise sobreprovisionar a capacidade. O dimensionamento automático pode ajudá-lo a alocar recursos de forma eficiente e econômica.

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

Lista de verificação de Otimização de Custos

Consulte o conjunto completo de recomendações.