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 do componente. 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 do componente de carga de trabalho. A otimização dos custos dos componentes refere-se ao processo de avaliar e melhorar a eficiência de custo de elementos individuais dentro de uma carga de trabalho. Ela enfatiza a revisão contínua e a possível remoção ou melhoria de componentes desatualizados, desnecessários ou raramente usados, como funcionalidades de aplicativo, funcionalidades de plataforma e recursos. Ele também aborda 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 aplicativo que permite aos usuários executar tarefas específicas ou acessar informações específicas. |
Recurso da plataforma | Uma funcionalidade ou recurso específico fornecido por uma plataforma. Pode variar dependendo da plataforma, mas geralmente os recursos da plataforma são projetados para aprimorar 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 façam com que você gaste mais do que o necessário. O processo de otimização de custos de componentes garante que você aloque recursos para recursos e componentes que agreguem mais valor, evitando gastos desnecessários.
Otimize os recursos do aplicativo
A otimização de recursos do aplicativo é o processo de remover, reinvestir ou monetizar recursos do aplicativo com base no valor. Ele garante que você aloque recursos para recursos de aplicativos que forneçam o maior valor aos 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 serem considerados incluem:
Necessidades do cliente: avalie o quão bem o recurso atende às necessidades e expectativas dos clientes. O feedback do cliente, as pesquisas e os dados de uso podem ser valiosos para entender o valor percebido.
Metas de negócios: avalie como o recurso se alinha com os 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 no aprimoramento da experiência do usuário e na melhoria da usabilidade ou produtividade.
Diferenciação: Avalie se o recurso fornece 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 alocação e otimização eficazes de recursos. 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 circundantes. Recursos subutilizados geralmente se tornam uma fonte importante de dívida técnica.
Manutenção e suporte: considere os custos contínuos associados à manutenção e suporte do 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 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.
Analise o valor do recurso do aplicativo com as partes interessadas
Revise o valor dos recursos do aplicativo com as partes interessadas, envolvendo o 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 a pena, 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 monetizar qualquer recurso do aplicativo que não forneça retorno sobre o investimento:
Remoção: considere o fim planejado da vida útil de um recurso do aplicativo com base em 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 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.
Risco: 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. Priorize as melhorias identificadas com base em seu valor e viabilidade. Determine o roteiro e o cronograma para implementar as mudanças. Considere fatores como recursos de desenvolvimento, dependências e o efeito potencial no aplicativo.
Monetize: 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 monetizar esses recursos, como oferecê-los como complementos pagos separados ou licenciá-los para outras empresas.
Otimize os recursos de carga de trabalho
A otimização dos recursos da carga de trabalho envolve a remoção de todos os recursos não utilizados 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.
Remova 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 ficar ociosos por muito tempo, ó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.
- Descomissionamento do 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:
Faça um inventário: realize um inventário completo de todos os recursos dentro da carga de trabalho em todos os ambientes.
Localizar recursos órfãos: os recursos podem se tornar órfãos quando não são mais necessários ou quando seus recursos pai são 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.
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 pagando pelo recurso. Considere remover recursos ociosos. Se você precisar dos dados, faça backup deles primeiro e remova o recurso. É melhor reimplantar o recurso e restaurar os dados do que permitir que o recurso permaneça ocioso.
Otimize 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:
Monitore recursos: use ferramentas para monitorar quanta CPU, memória e armazenamento você realmente usa. Escolha o melhor plano que atenda às suas necessidades com base nessas informações.
Analise 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 de uso entre os horários ocupados e lentos.
Dimensionamento correto: verifique se há muitos recursos alocados para recursos que não estão em uso. Nesse caso, ajuste o tamanho para corresponder melhor ao que você realmente precisa.
Escalabilidade automática: use a escalabilidade automática para ajustar os recursos que você usa com base em 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 custos e a otimização do desempenho.
Otimize os recursos de recuperação de desastres. Otimizar ambientes de recuperação de desastres significa garantir que os recursos alocados para recuperação de desastres sejam usados com eficiência. 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 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 desastres, considere como uma abordagem quente (ativo-ativo), frio (ativo-desligado) ou 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 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. Isso pode levar a custos reduzidos em termos de desperdício de recursos ou ociosidade. Uma abordagem quente 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 frio envolve um ambiente em espera que permanece inativo até que um desastre acione a necessidade de failover. Como o ambiente de espera não está em execução ativamente, os custos relacionados às operações de computação, armazenamento e rede são minimizados. Suas despesas giram em torno do armazenamento de backups, imagens de máquina virtual (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 dos recursos da plataforma, como níveis de desempenho e definições de configuração, 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. Esteja ciente do nível específico que você escolheu e dos recursos que cada nível oferece. Por exemplo, se você não precisar de dimensionamento automático ou rede avançada, um plano de nível inferior poderá ser suficiente.
Desative recursos não utilizados: identifique e desative 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 corretas: 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 certas: você pode estar pagando por mais disponibilidade ou desempenho do que precisa. Elimine as garantias de disponibilidade ou desempenho 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 GitHub Actions para criar seu software, não precisará comprar outra ferramenta que crie software. Antes de comprar recursos ou ferramentas, verifique se já existe 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 do desperdício é evitá-lo 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 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, certifique-se de saber o que realmente o está causando. 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 ruins ao banco de dados. 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, facilitando o rastreamento, a exclusão e a prevenção de 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 tags.Documente alterações fora do padrão: documente todas as alterações feitas em sua infraestrutura ou configurações executadas fora do processo normal de controle 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 fazer a triagem de um problema, mas esquecer de reduzi-lo novamente. Faça uma lista de alterações fora do 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 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 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 a serem removidos ou reduzidos. A pasta de trabalho de 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 variedade 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 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. As paradas 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 você não precise provisionar capacidade em excesso. O dimensionamento automático pode ajudá-lo a alocar recursos de forma eficiente e econômica.
De uma perspectiva 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 desastre.
Links relacionados
- Recomendações para otimização contínua do desempenho
- Recomendações para definir metas de confiabilidade
- Recomendações para design multirregional altamente disponível
- Recomendações para otimizar o dimensionamento e o particionamento
- Recomendações para definir proteções de gastos
Lista de verificação de otimização de custos
Consulte o conjunto completo de recomendações.