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 Otimizar os custos dos componentes. Remova ou otimize regularmente componentes de carga de trabalho legados, desnecessários e subutilizados, incluindo funcionalidades da aplicação, funcionalidades da plataforma e recursos.

Este guia descreve as recomendações para otimizar os custos dos componentes da carga de trabalho. Otimizar os custos dos componentes refere-se ao processo de avaliação e melhoria da eficiência de custos de elementos individuais numa carga de trabalho. Realça a revisão contínua e a possível remoção ou melhoria de componentes desatualizados, desnecessários ou raramente utilizados, como funcionalidades de aplicações, funcionalidades de plataforma e recursos. Abrange também a otimização de custos de ambientes de recuperação após desastre e como evitar a introdução de componentes não otimizados. A documentação de orientação neste artigo aplica-se a cargas de trabalho existentes que não estão na fase de conceção. Negligenciar a otimização regular de componentes pode levar a custos inflacionados, desperdício de recursos e cargas de trabalho ineficientes que drenam tanto o tempo como o dinheiro.

Definições

Termo Definição
Funcionalidade da aplicação Uma capacidade distinta no software de aplicação que permite aos utilizadores executar tarefas específicas ou aceder a informações específicas.
Funcionalidade de plataforma Uma funcionalidade ou capacidade específica fornecida por uma plataforma. Pode variar consoante a plataforma, mas, geralmente, as funcionalidades da plataforma foram concebidas para melhorar a experiência do utilizador, melhorar a produtividade ou ativar tarefas ou ações específicas.
Recurso Uma única entidade ou componente que pode criar, configurar e utilizar num fornecedor de serviços cloud.

Principais estratégias de design

Otimizar componentes de cargas de trabalho tem a ver com refinar os vários elementos de uma carga de trabalho, incluindo funcionalidades de aplicação, capacidades de plataforma e recursos. O objetivo é garantir que a carga de trabalho utiliza todos os componentes de forma eficiente e económica. As estratégias incluem remover, modificar e evitar componentes que fazem com que gaste mais do que precisa. O processo de otimização de custos do componente garante que aloca recursos a funcionalidades e componentes que fornecem mais valor, evitando despesas desnecessárias.

Otimizar as funcionalidades da aplicação

Otimizar as funcionalidades da aplicação é o processo de remover, reinvestir ou rentabilizar as funcionalidades da aplicação com base no valor. Garante que aloca recursos às funcionalidades da aplicação que fornecem mais valor aos clientes. Otimizar as funcionalidades da aplicação ajuda a evitar investir em funcionalidades que contribuem para a dívida técnica ou que não produzem retorno suficiente sobre o investimento.

Avaliar o valor da funcionalidade da aplicação

Para determinar o valor de uma funcionalidade, considere os respetivos efeitos na aplicação geral e o valor que fornece aos clientes. Alguns fatores a considerar incluem:

  • Necessidades do cliente: avalie o quão bem a funcionalidade satisfaz as necessidades e expectativas dos clientes. Os comentários, inquéritos e dados de utilização dos clientes podem ser valiosos na compreensão do valor percepcionado.

  • Objetivos empresariais: avalie a forma como a funcionalidade se alinha com os objetivos estratégicos do negócio. Considere como as funcionalidades suportam a geração de receitas, a satisfação do cliente ou a vantagem competitiva.

  • Efeito na experiência do utilizador: determine o efeito que a funcionalidade tem para melhorar a experiência do utilizador e melhorar a usabilidade ou produtividade.

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

Avaliar o custo da funcionalidade da aplicação

É essencial que compreenda o custo associado a cada funcionalidade para alocação e otimização eficazes de recursos. Considere vários aspetos ao avaliar os custos, tais como:

  • Esforço de desenvolvimento: avalie o tempo, os recursos e os conhecimentos necessários para desenvolver e manter a funcionalidade ou as funcionalidades circundantes. As características subutilizadas tornam-se muitas vezes uma fonte chave de dívida técnica.

  • Manutenção e suporte: considere os custos contínuos associados à manutenção e suporte da funcionalidade, incluindo correções de erros, atualizações de segurança e resolução de problemas.

  • Infraestrutura e utilização de recursos: avalie o efeito da funcionalidade 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 da funcionalidade com outros sistemas ou serviços de terceiros.

  • Considerações de desempenho: avalie o efeito da funcionalidade no desempenho da aplicação, incluindo escalabilidade, tempo de resposta e utilização de recursos.

Rever o valor da funcionalidade da aplicação com os intervenientes

Reveja o valor das funcionalidades da aplicação com os intervenientes ao contactar pessoal chave, como gestores de produtos, programadores de software e analistas empresariais, para avaliar o valor de funcionalidades específicas em objetivos empresariais. Esta colaboração é essencial para a otimização de custos, uma vez que fornece informações sobre os esforços de manutenção e identifica funcionalidades que podem dificultar a produtividade ou impedir o desenvolvimento de novas funcionalidades valiosas. A sua equipa de desenvolvimento pode fornecer-lhe informações importantes sobre o trabalho necessário para manter determinadas funcionalidades. Incentive-os a falar sobre funcionalidades que podem ser mais problemáticas do que valem, especialmente se estas funcionalidades distrairem a equipa de criar novas funcionalidades.

Determinar o futuro da funcionalidade

Com base na sua análise e avaliação, determine o futuro das funcionalidades da aplicação. Remover, reinvestir ou rentabilizar qualquer funcionalidade de aplicação que não forneça um retorno sobre o investimento:

  • Remoção: considere o fim de vida planeado de uma funcionalidade de aplicação com base em dados. Os motivos para a remoção de funcionalidades podem incluir baixa procura de clientes, custos de manutenção elevados, complexidade ou redundância que não valem a pena o esforço para corrigir. Crie um plano para a remoção, que pode envolver a refatorização do código, a atualização de dependências ou a reorganização da IU.

    Ícone riscoRisco: pode remover inadvertidamente funcionalidades que são essenciais para determinados utilizadores ou cenários e podem afetar negativamente o desempenho, as operações e a segurança na sua aplicação.

  • Reinvestir: algumas funcionalidades da aplicação podem não adicionar valor suficiente no respetivo estado atual, mas podem acrescentar valor se reinvestir nas mesmas. Reinvestimento significa reformular ou promover a funcionalidade da aplicação. Priorize as melhorias identificadas com base no respetivo valor e viabilidade. Determine o mapa e a linha cronológica para implementar as alterações. Considere fatores como recursos de desenvolvimento, dependências e o potencial efeito na aplicação.

  • Monetize: transforme as funcionalidades da aplicação numa oportunidade geradora de receitas através da rentabilização. Por vezes, as funcionalidades fornecem valor aos utilizadores, mas não valem o investimento atual. Explore oportunidades para rentabilizar estas funcionalidades, como oferecer-lhes suplementos pagos separados ou licenciá-los a outras empresas.

Otimizar recursos de carga de trabalho

A otimização dos recursos de carga de trabalho envolve remover todos os recursos que não foram utilizados e otimizar quaisquer recursos subutilizados de que a carga de trabalho necessite. Este esforço pode poupar dinheiro, evitar o desperdício e garantir que a carga de trabalho utiliza apenas os recursos que acrescentam valor.

Remover recursos de carga de trabalho não utilizados. Os recursos não utilizados são serviços implementados que a carga de trabalho ou os processos de operações não utilizam. Estes recursos podem estar inativos, órfãos ou esquecidos a longo prazo. Não fornecem retorno sobre o investimento e deve removê-los. As causas comuns dos recursos não utilizados incluem:

  • Alertas.
  • Compilações de demonstração.
  • Desativação do ambiente.
  • Desativação de funcionalidades.
  • Endereços IP.
  • Firewalls de rede.
  • Prova de conceito.
  • Instantâneos.
  • Contas de armazenamento.
  • Ambientes de teste temporários.
  • Ambientes de triagem temporários.

Para remover recursos não utilizados numa carga de trabalho, considere estes passos:

  1. Efetuar um inventário: efetue um inventário completo de todos os recursos na carga de trabalho em ambientes.

  2. Localizar recursos órfãos: os recursos podem ficar órfãos quando já não são necessários ou quando os recursos principais são removidos. Por exemplo, pode remover uma máquina virtual, mas a respetiva conta de armazenamento associada não é removida. Reveja a carga de trabalho para identificar recursos desnecessários ou órfãos.

  3. Remover componentes inativos: normalmente, existe um custo associado a um recurso implementado. Mesmo que o recurso lhe permita parar ou realocar, poderá continuar a pagar pelo recurso. Considere remover recursos inativos. Se precisar dos dados, crie uma cópia de segurança primeiro e, em seguida, remova o recurso. É melhor reimplementar o recurso e restaurar os dados do que permitir que o recurso permaneça inativo.

Otimizar recursos subutilizados. Os recursos subutilizados representam despesas desperdiçadas à medida que paga a capacidade de recursos que não está totalmente utilizada. Identifique e otimize estes recursos para reduzir os custos e alocar recursos de forma mais eficaz. Para avaliar e otimizar o custo dos recursos subutilizados, siga estes passos:

  1. Monitorizar recursos: utilize ferramentas para monitorizar a quantidade de CPU, memória e armazenamento que realmente utiliza. Escolha o melhor plano que corresponda às suas necessidades com base nestas informações.

  2. Analisar a utilização: veja os dados para saber quais os recursos que não utiliza. Preste atenção aos recursos que têm baixa utilização ao longo do tempo ou grandes diferenças de utilização entre tempos ocupados e lentos.

  3. Dimensionamento correto: verifique se existem demasiados recursos alocados a funcionalidades que não estão a ser utilizadas. Se for o caso, ajuste o tamanho para corresponder melhor ao que realmente precisa.

  4. Dimensionamento automático: utilize o dimensionamento automático para ajustar os recursos que utiliza com base na sua disponibilidade. Certifique-se de que define um limite máximo de dimensionamento para evitar picos repentinos que podem ser dispendiosos e desnecessários.

Depois de efetuar estes ajustes, teste para se certificar de que tudo ainda funciona como deveria. Monitorize continuamente a utilização de recursos e ajuste a alocação de recursos à medida que as exigências da 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.

Otimizar os recursos de recuperação após desastre. Otimizar ambientes de recuperação após desastre consiste em garantir que os recursos alocados para a recuperação após desastre são utilizados de forma eficiente. Uma estratégia de recuperação após desastre morna (ativa-passiva) é uma fonte comum de subutilização. Numa estratégia de recuperação após desastre quente, um ambiente recebe toda a carga enquanto o outro ambiente está inativo até existir um cenário de desastre. Para otimizar um ambiente de recuperação após desastre, considere como uma abordagem frequente (ativo-ativo), frio (ativo-off) ou de reimplementação ativa pode ajudar a evitar recursos subutilizados. Eis uma descrição geral destas três abordagens de recuperação após desastre:

  • Planos frequentes: tanto os ambientes primários como secundários servem o tráfego em simultâneo. A carga de trabalho pode equilibrar cargas entre estes ambientes e responder às exigências em tempo real. Distribuir a carga entre dois ambientes ativos permite-lhe utilizar recursos mais baratos, reduzir estrangulamentos de ponto único e utilizar as capacidades ao máximo. Pode levar a custos reduzidos em termos de desperdício de recursos ou idling. Uma abordagem frequente pode exigir mais investimento na sincronização e manter a paridade entre os dois ambientes.

  • Planos a frio: um modelo de recuperação após desastre a frio envolve um ambiente de reserva que permanece inativo até que um desastre acione a necessidade de ativação pós-falha. Uma vez que o ambiente de reserva não está a funcionar ativamente, os custos relacionados com operações de computação, armazenamento e rede são minimizados. As suas despesas giram em torno do armazenamento de cópias de segurança, imagens de máquinas virtuais (VMs) ou modelos. A ativação pós-falha no modelo a frio pode demorar mais tempo porque os recursos precisam de ser arrancados e os dados podem ter de ser restaurados. Certifique-se de que o tempo de recuperação está alinhado com os objetivos de tempo de recuperação (RTO) da sua empresa antes de se comprometer com esta abordagem.

  • Implementação ativa: esta estratégia utiliza a infraestrutura como código. Quando ocorre um evento de ativação pós-falha, implementa o ambiente secundário com modelos e scripts predefinidos. Sem recursos de computação pré-configurados no ambiente de recuperação após desastre, poupa nos custos associados à manutenção de recursos inativos. Apenas incorre em custos durante a implementação real num cenário de ativação pós-falha. Tal como a abordagem fria, este modelo pode introduzir tempos de recuperação mais longos, especialmente se a complexidade da infraestrutura for elevada. Deve testar e medir o tempo de recuperação para garantir que cumpre o objetivo de tempo de recuperação.

Otimizar as funcionalidades da plataforma

A otimização das funcionalidades da plataforma envolve eliminar ou atualizar funcionalidades da plataforma, como camadas de desempenho e definições de configuração, para otimizar os custos. Ajuda a alinhar os gastos com os requisitos da carga de trabalho e evita despesas desnecessárias em funcionalidades desnecessárias. Seguem-se algumas sugestões para otimizar o custo das funcionalidades da plataforma:

  • Conheça as capacidades do que compra: antes de poder otimizar, precisa de um inventário claro dos serviços e das respetivas funcionalidades nas suas plataformas na cloud. Compreenda as funcionalidades das plataformas ou serviços na sua carga de trabalho. Tenha em atenção o escalão específico que escolheu e as funcionalidades que cada escalão oferece. Por exemplo, se não precisar de dimensionamento automático ou redes avançadas, poderá ser suficiente um plano de escalão inferior.

  • Desativar funcionalidades não utilizadas: identifique e desative as funcionalidades da plataforma que custam dinheiro. Poderá ter instantâneos de armazenamento desnecessários, discos não utilizados, funcionalidades de segurança redundantes ou capacidades de rede subutilizadas.

  • Utilize as versões corretas: as 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 pode, muitas vezes, fornecer o mesmo desempenho por menos dinheiro.

  • Utilize as configurações corretas: pode estar a pagar por mais disponibilidade ou desempenho do que o necessário. Elimine a disponibilidade ou as garantias de desempenho de que a carga de trabalho não precisa.

  • Eliminar automatização desnecessária: avalie os processos de automatização e elimine qualquer automatização não utilizada que possa incorrer em custos adicionais.

  • Eliminar redundância de ferramentas: elimine as ferramentas de que não precisa ou as ferramentas que fornecem a mesma função. Avalie a redundância potencial nas ferramentas que utiliza para criar software, escrever código, segurança e monitorização. Por exemplo, se utilizar GitHub Actions para criar o software, não precisa de comprar outra ferramenta que crie software. Antes de comprar funcionalidades ou ferramentas, verifique se já existe uma ferramenta na sua carga de trabalho que possa fazer o trabalho. Elimine a redundância de ferramentas para evitar perder dinheiro e tire o máximo partido do que já tem.

Impedir componentes não otimizados

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

  • Encontrar a causa principal antes de alterar as soluções: antes de corrigir um problema, certifique-se de que sabe o que está realmente a causar o problema. Por exemplo, se o seu site estiver lento, não mude imediatamente para um novo sistema. Primeiro, descubra por que é lento. Poderá descobrir que o problema real é outra coisa, como consultas de base de dados incorretas. Corrija o problema real para poupar tempo e dinheiro.

  • Aplicar metadados: aplique metadados para organizar e controlar recursos. Pode utilizar metadados para categorizar e agrupar recursos, tornando mais fácil controlar, eliminar e evitar 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 etiquetas.

  • Documentar alterações não padrão: documente as alterações efetuadas à sua infraestrutura ou configurações efetuadas fora do processo de controlo normal da carga de trabalho para reduzir custos inesperados. Por exemplo, pode aumentar as capacidades de dimensionamento (para cima ou para fora) de um recurso para satisfazer uma procura ou triagem de curto prazo, mas não se esqueça de a reduzir verticalmente. Faça uma lista de alterações não padrão e utilize-a como um lembrete para reverter as alterações quando já não forem necessárias.

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

Facilitação do Azure

Otimizar as funcionalidades da aplicação: pode utilizar o Azure Monitor e o Application Insights para monitorizar a utilização da sua aplicação e identificar áreas que são ou não utilizadas. Com base nas informações recolhidas, pode tomar decisões informadas para remover ou otimizar funcionalidades não utilizadas ou subutilizadas.

Otimizar recursos de carga de trabalho e funcionalidades de plataforma: o Assistente do Azure fornece recomendações de custos para identificar e eliminar recursos não utilizados. Pode utilizar o Assistente para analisar a utilização de recursos e receber sugestões sobre recursos para remover ou reduzir verticalmente. O livro Otimização de Custos no Assistente do Azure serve como um hub centralizado para algumas das ferramentas mais utilizadas que o podem ajudar a impulsionar os objetivos de utilização e eficiência. Oferece uma série de recomendações, incluindo recomendações de custos do Assistente do Azure. Também ajuda a identificar recursos inativos e a gerir máquinas virtuais desalocadas incorretamente.

O Azure Monitor suporta livros. Com os livros do Azure Monitor, pode encontrar ou criar um livro que localiza e reporta recursos órfãos num âmbito definido. Pode utilizar Automatização do Azure para encerrar máquinas virtuais durante períodos de inatividade. Os encerramentos de recursos ajudam a reduzir os custos ao minimizar a utilização de recursos inativos.

Pode utilizar a funcionalidade de dimensionamento automático no Azure para dimensionar automaticamente a sua aplicação com base em condições predefinidas, para que não tenha de sobreaprovisionar a capacidade. O dimensionamento automático pode ajudá-lo a alocar recursos de forma eficiente e económica.

Do ponto de vista da conceção, os balanceadores de carga do Azure podem distribuir cargas entre zonas e regiões de disponibilidade. Estes balanceadores de carga podem ajudar a eliminar recursos inativos, por exemplo, em abordagens de recuperação após desastre.

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

Veja o conjunto completo de recomendações.