Recomendações para otimizar os custos do ambiente

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

CO:08 Otimizar os custos do ambiente. Alinhe os gastos para priorizar ambientes de pré-produção, produção, operações e recuperação após desastre. Para cada ambiente, considere a disponibilidade, o licenciamento, o horário de funcionamento e as condições necessários e a segurança. Os ambientes de não produção devem emular o ambiente de produção. Implementar compromissos estratégicos em ambientes de não produção.

Este guia descreve as recomendações para ambientes de carga de trabalho de otimização de custos. Cada ambiente deve ser adaptado para o seu objetivo específico e otimizado para a relação custo/eficácia. É importante fazer compromissos estratégicos e alocar recursos onde são mais importantes, sem comprometer componentes críticos. Ao tratar os ambientes de forma diferente e ao otimizá-los em conformidade, pode alcançar um equilíbrio entre a otimização de custos e cumprir os objetivos necessários.

Definições

Termo Definição
Objetivo de ponto de recuperação (RPO) A duração máxima aceitável da perda de dados durante um incidente.
Objetivo de tempo de recuperação (RTO) O tempo máximo aceitável que uma aplicação pode estar indisponível após um incidente.
Contrato de nível de serviço (SLA) Um contrato contratual entre o fornecedor de serviços e o cliente do serviço. O contrato define os objetivos de nível de serviço (SLOs). O incumprimento do contrato poderá ter consequências financeiras para o fornecedor de serviços.

Principais estratégias de design

O objetivo de otimizar os custos do ambiente é encontrar o equilíbrio certo de valor, custo e risco para cada ambiente, incluindo ambientes de produção, pré-produção e recuperação após desastre (DR). Personalize cada ambiente para a sua utilização específica para poupar dinheiro e utilizar recursos de forma eficiente. Determine os benefícios de cada ambiente, como a eficiência ou a satisfação do cliente. Quer avaliar a rentabilidade do investimento (ROI) para o ambiente, mesmo que não tenha um lucro direto. Gaste mais dinheiro em ambientes de alto risco para reduzir problemas e poupar dinheiro em ambientes de baixo risco. O objetivo é equilibrar o valor, o custo e o risco em cada ambiente.

Avaliar o valor do ambiente

Avaliar o valor de cada ambiente significa compreender o seu efeito mais amplo nas empresas, avaliar a satisfação dos utilizadores e determinar como se alinha com objetivos organizacionais abrangentes. Esta avaliação ajuda-o a tomar decisões informadas sobre a alocação de recursos e a alinhar os custos com as prioridades ambientais. A essência do valor estende-se para além da quantidade de receita gerada por um ambiente. Ao avaliar o valor de um ambiente, tem de priorizar os gastos de uma forma que ressoe com os objetivos da carga de trabalho. Para avaliar o valor de cada ambiente, considere os seguintes fatores:

  • Considere o utilizador: considere quem utiliza cada ambiente e o que precisa do mesmo. Por exemplo, os clientes utilizam o ambiente de produção, que tem de ser fiável e cumprir SLAs específicos para desempenho e tempo de atividade.

    Por outro lado, o ambiente de desenvolvimento destina-se principalmente à equipa de cargas de trabalho, como programadores e testadores. Este ambiente não tem de cumprir os SLAs destinados ao cliente, mas deve ter as ferramentas e os recursos necessários para a equipa trabalhar eficazmente.

    Quando compreender as necessidades exclusivas dos utilizadores em cada ambiente, pode alocar melhor os recursos e evitar custos adicionais. Esta prevenção ajuda a garantir que cada ambiente é funcional e rentável.

  • Alinhar com medidas organizacionais de valor: alinhe os seus esforços de redução de custos com as prioridades da sua organização, como o lucro ou a satisfação dos colaboradores. Para cada ambiente, compreenda como o sucesso é definido, para que possa manter as suas ações no destino. Por exemplo, se a sua organização se concentrar na maximização dos lucros ou na satisfação dos colaboradores, alinhe as suas decisões de gastos com essas métricas.

Determinar os custos do ambiente

Determinar os custos do ambiente tem a ver com conhecer os custos da infraestrutura, dos serviços, das licenças e das despesas operacionais em cada ambiente de carga de trabalho. As ferramentas de gestão de custos são fundamentais para obter informações sobre padrões de gastos e tendências entre ambientes. Para determinar os custos do ambiente, considere estas estratégias:

  • Identificar os controladores de custos: identifique os principais fatores que impulsionam os custos em cada ambiente. Estes fatores podem incluir a utilização de recursos, a utilização do armazenamento, a retenção de dados, a transferência de dados e serviços específicos.

  • Avaliar riscos: avalie os riscos associados às decisões de gastos e o seu potencial efeito no ambiente e nas operações empresariais. Considere fatores como segurança de dados, conformidade, desempenho, auditorias e requisitos de SLA.

  • Monitorizar e ajustar os gastos: monitorize e analise continuamente os padrões de gastos, a entrega de valores e os fatores de risco. Reveja e ajuste regularmente as estratégias de otimização de gastos à medida que as necessidades do ambiente e da empresa evoluem.

Otimizar o ambiente de produção

A otimização dos custos no ambiente de produção envolve a implementação de estratégias para reduzir as despesas desnecessárias e melhorar a eficiência operacional. Concentre-se em diferenciar implementações de produção e satisfazer as necessidades dos utilizadores. Seguem-se recomendações para otimizar o ambiente de produção:

  • Diferenciar regiões: gaste menos em regiões que servem menos clientes. Por exemplo, deve investir mais numa região que sirva 90% dos seus utilizadores do que numa região que sirva 10% dos seus utilizadores. Ajuste a sua estratégia de implementação para cumprir os requisitos de cada região e segmento de utilizador.

  • Diferenciar o dimensionamento: implementar estratégias de dimensionamento horizontal e vertical. Dimensione os recursos de forma eficiente para satisfazer a procura sem sobreaprovisionamento.

  • Diferenciar infraestrutura: selecione soluções de infraestrutura e hardware económicas que satisfaçam o desempenho e escalabilidade necessários. Considere fatores como desempenho, custo, fiabilidade e escalabilidade.

  • Otimizar modelos de inquilino: personalize o ambiente com base no modelo de inquilino. Por exemplo, gaste mais em serviços e funcionalidades para inquilinos pagos e gaste menos para inquilinos que não pagam.

Otimizar o ambiente de DR

Um ambiente de DR refere-se à infraestrutura e aos processos que uma carga de trabalho utiliza para recuperar após um evento disruptivo. Os eventos disruptivos incluem desastres naturais, ciberataques e falhas de hardware. Balancee o custo da manutenção de um ambiente de DR e os potenciais efeitos de um evento disruptivo. Considere as seguintes estratégias:

  • Avaliar a importância dos sistemas e dos dados: avalie a importância dos sistemas e dos dados para determinar o nível necessário de proteção e recursos para cada componente.

  • Determinar RTOs e RPOs: para ajudar a determinar a conceção do ambiente de DR, defina os limites aceitáveis de indisponibilidade e perda de dados para cada sistema ou aplicação.

  • Otimizar um ambiente de DR frio: um ambiente de DR frio tem pouca ou nenhuma infraestrutura ou serviços em execução. Pode utilizar a infraestrutura como código (IaC) para implementar rapidamente a infraestrutura durante um evento disruptivo. As políticas de cópia de segurança e armazenamento têm de cumprir os RPOs e RTOs do ambiente. Certifique-se de que a quantidade e a frequência das cópias de segurança de dados não são mais robustas do que as necessárias.

    Desvantagem: um ambiente de DR frio é uma opção económica, mas poderá ter longos tempos de recuperação.

  • Otimizar um ambiente de DR frequente: todas as infraestruturas e serviços são executados num ambiente de DR frequente. Os dados espelham o site primário em tempo real. Fornece ativação pós-falha quase instantânea e perda mínima de dados se ocorrer um desastre. Considere uma implementação ativa-ativa para otimizar os custos.

  • Otimizar um ambiente de DR quente: uma abordagem de DR quente é um meio termo entre um ambiente de DR frio e um ambiente de DR quente. Um ambiente quente é parcialmente ativo e sincroniza periodicamente com o site primário. Oferece um equilíbrio entre o custo e o tempo de recuperação. No entanto, é a abordagem menos otimizada para custos. Considere uma abordagem fria ou frequente para otimizar os custos.

Otimizar ambientes de pré-produção

A otimização de ambientes de pré-produção envolve a gestão estratégica de recursos nas áreas de desenvolvimento, teste e teste para simular de perto a produção, ao mesmo tempo que reduz os custos desnecessários. Os ambientes de pré-produção não requerem a escala total e a disponibilidade dos ambientes de produção. A maior parte das oportunidades reside na adaptação destes ambientes a necessidades específicas de teste e desenvolvimento sem duplicar exatamente a produção. As áreas de redução de custos incluem a utilização de recursos de baixo custo, a desativação de serviços desnecessários e a aplicação de descontos oferecidos para utilização de pré-produção. Considere as seguintes estratégias para otimizar ambientes de pré-produção:

Avaliar ambientes de pré-produção

A alocação insuficiente ou inadequada de ambientes de pré-produção pode levar ao aprovisionamento excessivo ou ao subaprovisionamento de recursos. Para avaliar os ambientes de pré-produção da carga de trabalho, considere a seguinte documentação de orientação:

  • Compreender os tipos de ambiente: identifique os tipos de ambientes de pré-produção, como desenvolvimento, teste e teste, de que precisa para a carga de trabalho. Cada ambiente deve ter uma função definida e uma função específica para garantir uma alocação de recursos eficiente.

  • Alinhar com os requisitos dos utilizadores: antes de configurar ambientes de pré-produção, compreenda os requisitos e expectativas dos seus utilizadores. Personalize as funcionalidades e especificações com base nas suas necessidades para evitar despesas desnecessárias de funcionalidades ou recursos.

  • Consolidar o ambiente: determine se pode combinar ambientes sem comprometer a respetiva funcionalidade. Combinar ambientes com funções que não se sobrepõem. Por exemplo, pode intercalar um ambiente de aceitação de utilizador com um ambiente de garantia de qualidade. As funções são distintas e, normalmente, um ambiente fica inativo quando o outro está a ser utilizado.

    Risco: tenha cuidado ao combinar ambientes para garantir que não introduz conflitos ou compromete os processos de teste ou desenvolvimento.

A tabela seguinte fornece exemplos de ambientes de pré-produção comuns.

Exemplo de ambiente de pré-produção Description
Ambiente de programação Os programadores utilizam este ambiente para escrever e testar código. Fornece um espaço de sandbox, para que os programadores possam experimentar, compilar e integrar alterações de código.
Ambiente de garantia de qualidade Este ambiente é dedicado a atividades de garantia de qualidade. É para testar para identificar e corrigir erros ou problemas antes de implementar no ambiente de produção.
Ambiente de segurança Este ambiente destina-se a testes de segurança. Destina-se a garantir que uma aplicação está protegida contra ameaças e vulnerabilidades.
Ambiente de teste de aceitação do utilizador Neste ambiente, os utilizadores finais e os intervenientes testam uma aplicação para validar a respetiva funcionalidade e garantir que cumpre os requisitos e expectativas.
Ambiente de teste Este ambiente assemelha-se muito ao ambiente de produção. É para testes finais e validação antes de implementar na produção.

Aplicar governação

A aplicação da governação tem a ver com limitar as opções de implementação em ambientes de pré-produção para controlar as despesas e mitigar os riscos. Na pré-produção, tem flexibilidade para personalizar configurações e implementar recursos. Quanto mais o ambiente de pré-produção se desviar do ambiente de produção, maior será o risco potencial. Utilize a governação para restringir ambientes de pré-produção. Tenha em consideração as seguintes orientações:

  • Limitar escalões de desempenho: avalie os requisitos de desempenho dos seus ambientes de pré-produção. Escolha os escalões de desempenho que equilibram o custo e o desempenho. Um serviço tem frequentemente diferentes escalões de desempenho e alguns destes escalões são mais adequados para testes. Alguns serviços têm escalões que oferecem funcionalidades semelhantes a produção, mas não vêm com um SLA. Estes serviços reduzem os custos, mas continuam a fornecer a funcionalidade necessária para testes e desenvolvimento.

  • Compreender os SKUs de pré-produção: alguns SKUs foram concebidos para ambientes de desenvolvimento. Para otimizar os custos, avalie serviços e escalões. Opte por escalões de baixo desempenho se a carga de trabalho não exigir um elevado desempenho.

  • Controlar o número de instâncias e CPUs: determine o número ideal de instâncias e recursos de CPU de que o ambiente de pré-produção precisa com base nas exigências da carga de trabalho. Evite o aprovisionamento excessivo de recursos para minimizar os custos.

  • Limitar a retenção e o registo: defina políticas de retenção para registos e dados em ambientes de pré-produção. Considere a duração necessária para reter registos e dados com base em requisitos de conformidade e considerações de custos. Evite registos e retenção excessivos para reduzir os custos de armazenamento.

  • Utilizar uma arquitetura de CPU consistente: utilize a mesma arquitetura de CPU na pré-produção e na produção. Por exemplo, as aplicações x86 não são executadas nativamente no Azure Resource Manager e vice-versa. Utilize a mesma arquitetura da CPU que o seu ambiente de produção para garantir a compatibilidade e minimizar potenciais problemas.

  • Utilizar o mesmo sistema operativo: evite alterar o sistema operativo (por exemplo, do Windows para o Linux) ou o kernel em ambientes de pré-produção. Muitas vezes, o software criado para Windows não é executado nativamente no Linux sem uma camada de compatibilidade e vice-versa. Os sistemas de ficheiros e as estruturas de diretórios são diferentes, o que pode causar problemas de aplicação de aplicação. Os ambientes consistentes ajudam a reduzir o risco de problemas de compatibilidade e a garantir implementações suaves.

  • Restringir o dimensionamento: para otimizar os custos, pode restringir a automatização para mitigar a automatização em execução. Por exemplo, defina um limite máximo de dimensionamento em três no ambiente de desenvolvimento e defina-o como 10 no ambiente de produção. Restrinja o dimensionamento para ajudar a controlar a utilização de recursos e o custo de automatização.

  • Desativar recursos desnecessários: desative os recursos quando não são utilizados ativamente, como durante as horas de folga e os fins de semana. Pode utilizar ferramentas de automatização ou scripts para agendar o encerramento e o arranque dos recursos. Alguns fornecedores fornecem APIs que pode utilizar para parar e iniciar programaticamente os recursos. Considere utilizar a IaC para criar ambientes efémeros que pode remover quando já não precisar deles.

  • Restringir as regiões disponíveis: considere o potencial benefício de executar ambientes de pré-produção em diferentes regiões onde os recursos do Azure podem ser mais baratos. Restrinja as implementações de pré-produção a estas regiões para otimizar o custo destes ambientes.

Equilibrar a semelhança com a produção

Muitas vezes, é desnecessário e dispendioso para os ambientes de pré-produção espelhar exatamente o ambiente de produção. O objetivo é garantir que cada ambiente de pré-produção é adequadamente diferente da produção para evitar custos desnecessários. No entanto, quando a pré-produção e a produção são diferentes, existe o risco de implementar um erro na produção. Quanto mais diferentes forem estes ambientes, mais riscos existem. Personalizar o ambiente de pré-produção para satisfazer as suas necessidades pode ajudá-lo a gerir riscos ao otimizar os custos. Para equilibrar a semelhança com a produção, considere as seguintes recomendações:

  • Evitar réplicas exatas: evite tornar o ambiente de pré-produção numa cópia exata da produção. Pode aumentar desnecessariamente os custos. Create um ambiente de pré-produção rentável, mas que lhe permite descobrir e resolver potenciais riscos antes da implementação.

  • Evitar desvios extremos: evite um desvio excessivo da produção, como a utilização de diferentes serviços. Diferentes serviços podem não simular com precisão riscos reais. Determine um limiar de risco e não ultrapasse o limiar apenas para poupar dinheiro.

  • Encurtar runtimes: considere encurtar os runtimes dos processos na fase de pré-produção para poupar dinheiro. Tenha cuidado com novas vulnerabilidades que possam surgir, como fugas de memória não detetadas.

  • Rever licenças: reveja os planos de licenciamento das suas ferramentas de segurança. Se o número de nós variar significativamente entre as configurações de produção e de pré-produção, reavalie as suas necessidades para ajustar os custos sem comprometer a segurança.

Otimizar ambientes de desenvolvimento

Os ambientes de desenvolvimento foram concebidos para fins de desenvolvimento, teste e depuração. Têm ciclos de vida mais curtos e são muitas vezes criados conforme necessário e existem por um curto período de tempo. Normalmente, os ambientes de desenvolvimento têm requisitos mais baixos de fiabilidade, capacidade e segurança em comparação com outros ambientes de pré-produção e produção. Podem ter menos capacidades e podem aceitar uma menor utilização de recursos. Para otimizar o ambiente de desenvolvimento:

  • Avaliar ferramentas: avalie regularmente a relação custo-eficácia da sua configuração de ferramentas atual, incluindo ambientes de desenvolvimento integrados (IDEs), licenças e ferramentas relacionadas. Considere alternativas gratuitas ou open-source que oferecem funcionalidades semelhantes sem comprometer a qualidade. Reavalie continuamente a necessidade e eficiência destas ferramentas à medida que o panorama do desenvolvimento evolui.

  • Considere o hardware: avalie o custo e o desempenho das configurações de hardware atuais. Investir em hardware melhor e mais eficiente pode aumentar a produtividade e reduzir os custos a longo prazo. Em vez de substituições frequentes de hardware, considere atualizar os sistemas existentes para prolongar o seu tempo de vida e melhorar o desempenho.

  • Otimizar o número de ambientes: analise as vantagens e desvantagens dos ambientes de desenvolvimento individualizados em comparação com um ambiente partilhado. Os ambientes individuais podem imitar configurações de produção, impedir interferências entre programadores e oferecer configurações personalizadas. No entanto, o dimensionamento torna-se mais dispendioso à medida que o número de programadores aumenta. Os ambientes partilhados podem poupar custos, mas poderão surgir preocupações de fiabilidade se os problemas afetarem toda a equipa de desenvolvimento em simultâneo. Encontre o equilíbrio certo com base no custo, mitigação de riscos, eficiência e satisfação do programador.

  • Limpeza regular: limpe e otimize regularmente o seu ambiente de desenvolvimento para evitar a acumulação de recursos órfãos, dados não utilizados e experimentações de prova de conceito. Implemente processos de limpeza ou ferramentas automatizadas para identificar e remover recursos não utilizados. Mantenha apenas componentes essenciais e ativos. A limpeza regular ajuda a reduzir os custos de armazenamento e garante uma utilização eficiente dos recursos.

  • Implementar o dimensionamento amostrado: em vez de dimensionar todos os componentes para a capacidade máxima, considere uma abordagem amostrada na qual dimensiona seletivamente componentes vitais. Esta abordagem pode ser rentável ao minimizar os riscos. Avalie a proporção risco-benefício de não dimensionar determinados elementos e considere o efeito potencial no ambiente.

  • Otimizar a gestão de dados: os ambientes de desenvolvimento podem ter poucas necessidades de retenção de dados e frequência de cópia de segurança.

Considerar a emulação do ponto final

Pode otimizar os custos num ambiente de pré-produção com a emulação de pontos finais ou pontos finais fictícios, especialmente para recursos dispendiosos como GPUs. Identifique componentes ou serviços no seu ambiente de pré-produção que sejam os mais caros ou intensivos em termos de recursos. Utilize pontos finais simulados para simular as respostas destes componentes dispendiosos sem os invocar. Para simular respostas de API, pode utilizar ferramentas como o WireMock, o servidor simulado do Postman ou implementações personalizadas.

Os pontos finais de emulação e simulação ajudam a poupar custos, mas tem de garantir que representam o ambiente de produção em grau suficiente para fins de teste. Faça um equilíbrio entre a precisão e o custo para ajudar a evitar problemas futuros na produção. Por exemplo, se as GPUs forem um fator de custo importante, considere a emulação da GPU para tarefas que não requerem poder de processamento de GPU real em fases de pré-produção. A emulação pode não representar totalmente o desempenho ou as peculiaridades das GPUs reais, por isso, utilize-a quando o comportamento exato da GPU não for fundamental para testes de pré-produção.

Facilitação do Azure

Determinar e otimizar os custos do ambiente: o Microsoft Cost Management é um conjunto de ferramentas que ajuda as organizações a monitorizar, alocar e otimizar o custo das cargas de trabalho da Microsoft Cloud. O Cost Management está disponível para qualquer pessoa com acesso a um âmbito de gestão de recursos ou faturação.

O Assistente do Azure é uma ferramenta que fornece recomendações de otimização de custos, incluindo a identificação de áreas de utilização de máquinas virtuais que precisam de otimização. Utilize o Assistente para o ajudar a tomar decisões informadas e otimizar os custos no seu ambiente do Azure. O Azure fornece ferramentas e funcionalidades de gestão de custos que ajudam a priorizar os gastos. Pode utilizar estas ferramentas para controlar e analisar os custos em ambientes, definir orçamentos e receber recomendações de otimização de custos.

Aplicar governação: com Azure Policy, pode limitar tipos de recursos, SKUs e instâncias ao definir regras de política que impõem restrições aos tipos de recursos que pode implementar no seu ambiente do Azure. Pode manter o controlo sobre os recursos aprovisionados e garantir a conformidade com as políticas e as melhores práticas da sua organização.

Para limitar os tipos de recursos com Azure Policy, pode definir regras de política que especifiquem os tipos de recursos permitidos. Aplique essas regras às subscrições ou grupos de recursos do Azure relevantes. Azure Policy impede que os utilizadores implementem recursos que não são permitidos.

Utilize o Azure Resource Manager para definir e gerir recursos de forma declarativa. Pode otimizar os recursos que são alocados a cada ambiente com base nos requisitos específicos. Utilize modelos e parametrize configurações de recursos para otimizar os custos.

Otimizar ambientes de pré-produção: O Azure oferece opções de preços de desenvolvimento/teste que fornecem tarifas com desconto para ambientes de não produção. Pode alocar mais recursos e orçamento a ambientes de produção críticos, o que otimiza os custos em ambientes de não produção. Também pode utilizar a oferta de licenciamento do Azure, Benefício Híbrido do Azure.

Pode utilizar o Azure Gestão de API para simulação de API. Gestão de API funciona como uma fachada para os serviços de back-end, o que permite aos fornecedores de API abstrair implementações de API e evoluir a arquitetura de back-end sem afetar os consumidores de API.

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

Veja o conjunto completo de recomendações.