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 | Otimize os custos do ambiente. Alinhe os gastos para priorizar ambientes de pré-produção, produção, operações e recuperação de desastres. Para cada ambiente, considere a disponibilidade, o licenciamento, o horário e as condições de operação necessários e a segurança. Os ambientes de não produção devem emular o ambiente de produção. Implemente compensações estratégicas 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 sua finalidade específica e otimizado para economia. É importante fazer compensações estratégicas e alocar recursos onde eles são mais importantes, sem comprometer os componentes críticos. Ao tratar os ambientes de forma diferente e otimizá-los de acordo, você pode alcançar um equilíbrio entre a otimização de custos e o cumprimento dos objetivos exigidos.
Definições
Termo | Definição |
---|---|
RPO (Objetivo de Ponto de Recuperação) | A duração máxima aceitável da perda de dados durante um incidente. |
RTO (objetivo de tempo de recuperação) | Tempo máximo aceitável que um aplicativo pode ficar indisponível após um incidente. |
SLA (Contrato de Nível de Serviço) | Um acordo contratual entre o provedor de serviços e o cliente do serviço. O contrato define os SLOs (objetivos de nível de serviço). O não cumprimento do acordo pode ter consequências financeiras para o provedor de serviços. |
Principais estratégias de design
O objetivo de otimizar os custos do ambiente é encontrar o equilíbrio certo entre valor, custo e risco para cada ambiente, incluindo ambientes de produção, pré-produção e recuperação de desastres (DR). Personalize cada ambiente para seu uso específico para economizar dinheiro e usar recursos com eficiência. Determine os benefícios de cada ambiente, como eficiência ou satisfação do cliente. Você deseja avaliar o retorno sobre o investimento (ROI) para o meio ambiente, mesmo que não gere lucro direto. Gaste mais dinheiro em ambientes de alto risco para reduzir problemas e economizar dinheiro em ambientes de baixo risco. Procure equilibrar valor, custo e risco em cada ambiente.
Avalie o valor do ambiente
Avaliar o valor de cada ambiente significa entender seu efeito mais amplo nos negócios, avaliar a satisfação do usuário e determinar como ele se alinha com as metas organizacionais abrangentes. Essa avaliação ajuda você 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 vai além da quantidade de receita gerada por um ambiente. Ao avaliar o valor de um ambiente, você precisa priorizar os gastos de uma maneira que ressoe com os objetivos da carga de trabalho. Para avaliar o valor de cada ambiente, considere os seguintes fatores:
Considere o usuário: considere quem usa cada ambiente e o que eles precisam dele. Por exemplo, os clientes usam o ambiente de produção, que deve ser confiável e atender a SLAs específicos para desempenho e tempo de atividade.
Por outro lado, o ambiente de desenvolvimento é principalmente para a equipe de carga de trabalho, como desenvolvedores e testadores. Esse ambiente não precisa atender aos SLAs voltados para o cliente, mas deve ter as ferramentas e os recursos necessários para que a equipe trabalhe de forma eficaz.
Ao entender as necessidades exclusivas dos usuários em cada ambiente, você pode alocar melhor os recursos e evitar custos extras. Essa prevenção ajuda a garantir que cada ambiente seja funcional e econômico.
Alinhe-se com as medidas organizacionais de valor: alinhe seus esforços de corte de custos com as prioridades de sua organização, como lucro ou satisfação dos funcionários. Para cada ambiente, entenda como o sucesso é definido, para que você possa manter suas ações no alvo. Por exemplo, se sua organização se concentra na maximização do lucro ou na satisfação dos funcionários, alinhe suas decisões de gastos com essas métricas.
Determine os custos ambientais
Determinar os custos do ambiente é conhecer os custos de infraestrutura, serviços, licenças e despesas operacionais em cada ambiente de carga de trabalho. As ferramentas de gerenciamento de custos são essenciais para obter insights sobre padrões e tendências de gastos em todos os ambientes. Para determinar os custos ambientais, considere estas estratégias:
Identifique os fatores de custo: identifique os principais fatores que impulsionam os custos em cada ambiente. Esses fatores podem incluir utilização de recursos, uso de armazenamento, retenção de dados, transferência de dados e serviços específicos.
Avalie os riscos: Avalie os riscos associados às decisões de gastos e seu efeito potencial no meio ambiente e nas operações comerciais. Considere fatores como segurança de dados, conformidade, desempenho, auditorias e requisitos de SLA.
Monitore e ajuste seus gastos: monitore e analise continuamente os padrões de gastos, a entrega de valor e os fatores de risco. Revise e ajuste regularmente suas estratégias de otimização de gastos à medida que as necessidades do ambiente e dos negócios evoluem.
Otimize o ambiente de produção
A otimização de custos no ambiente de produção envolve a implementação de estratégias para reduzir despesas desnecessárias e melhorar a eficiência operacional. Concentre-se em diferenciar implantações de produção e atender às necessidades dos usuários. Aqui estão as recomendações para otimizar o ambiente de produção:
Diferencie regiões: gaste menos em regiões que atendem a menos clientes. Por exemplo, você deve investir mais em uma região que atenda a 90% de seus usuários do que em uma região que atenda a 10% de seus usuários. Ajuste sua estratégia de implantação para atender aos requisitos de cada região e segmento de usuário.
Diferencie o dimensionamento: implemente estratégias de dimensionamento horizontal e vertical. Dimensione os recursos com eficiência para atender à demanda sem provisionamento excessivo.
Diferencie a infraestrutura: escolha soluções econômicas de hardware e infraestrutura que atendam ao desempenho e à escalabilidade necessários. Considere fatores como desempenho, custo, confiabilidade e escalabilidade.
Ajustar modelos de locatário: personalize o ambiente com base no modelo de locatário. Por exemplo, gaste mais em serviços e recursos para locatários pagos e gaste menos para locatários não pagantes.
Otimize os ambientes de recuperação de desastres
Um ambiente de DR refere-se à infraestrutura e aos processos que uma carga de trabalho usa para se recuperar após um evento de interrupção. Os eventos disruptivos incluem desastres naturais, ataques cibernéticos e falhas de hardware. Equilibre o custo de manutenção de um ambiente de DR e os possíveis efeitos de um evento disruptivo. Considere as seguintes estratégias:
Avalie a criticidade dos sistemas e dados: Avalie a importância dos sistemas e dados para determinar o nível necessário de proteção e recursos para cada componente.
Determine RTOs e RPOs: para ajudar a determinar o design do ambiente de DR, defina os limites aceitáveis de tempo de inatividade e perda de dados para cada sistema ou aplicativo.
Otimize um ambiente de DR frio: um ambiente de DR frio tem pouca ou nenhuma infraestrutura ou serviços em execução. Você pode usar a infraestrutura como código (IaC) para implantar rapidamente a infraestrutura durante um evento disruptivo. Suas políticas de backup e armazenamento precisam atender aos RPOs e RTOs do ambiente. Certifique-se de que a quantidade e a frequência dos backups de dados não sejam mais robustas do que o necessário.
Compensação: um ambiente de DR frio é uma opção econômica, mas você pode ter longos tempos de recuperação.
Otimize um ambiente de DR quente: toda a infraestrutura e os serviços são executados em um ambiente de DR quente. Os dados espelham o site principal em tempo real. Ele fornece failover quase instantâneo e perda mínima de dados se houver um desastre. Considere uma implantação ativa-ativa para otimizar os custos.
Otimize 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 está parcialmente ativo e é sincronizado periodicamente com o site primário. Oferece um equilíbrio entre custo e tempo de recuperação. No entanto, é a abordagem menos otimizada em termos de custo. Considere uma abordagem fria ou quente para otimizar os custos.
Otimize os ambientes de pré-produção
A otimização de ambientes de pré-produção envolve o gerenciamento estratégico de recursos nas áreas de desenvolvimento, teste e preparação para simular de perto a produção e, ao mesmo tempo, reduzir custos desnecessários. Os ambientes de pré-produção não exigem a escala total e a disponibilidade dos ambientes de produção. A maioria das oportunidades está em adaptar esses ambientes às necessidades específicas de teste e desenvolvimento sem duplicar a produção exatamente. As áreas de redução de custos incluem o uso de recursos de baixo custo, a desativação de serviços desnecessários e a aplicação de descontos oferecidos para uso de pré-produção. Considere as seguintes estratégias para otimizar ambientes de pré-produção:
Avalie ambientes de pré-produção
A alocação insuficiente ou inadequada de ambientes de pré-produção pode levar ao provisionamento excessivo ou insuficiente de recursos. Para avaliar seus ambientes de pré-produção para sua carga de trabalho, considere as seguintes diretrizes:
Entenda os tipos de ambiente: identifique os tipos de ambientes de pré-produção, como desenvolvimento, teste e preparo, necessários para sua carga de trabalho. Cada ambiente deve ter uma função definida e uma função específica para garantir a alocação eficiente de recursos.
Alinhe-se aos requisitos dos usuários: antes de configurar ambientes de pré-produção, entenda os requisitos e as expectativas de seus usuários. Adapte os recursos e especificações com base em suas necessidades para evitar gastos desnecessários de recursos ou recursos.
Consolide o ambiente: determine se você pode combinar ambientes sem comprometer sua funcionalidade. Combine ambientes que tenham funções que não se sobreponham. Por exemplo, você pode mesclar um ambiente de aceitação do usuário com um ambiente de garantia de qualidade. As funções são distintas e um ambiente geralmente fica ocioso quando o outro está em uso.
Risco: tenha cuidado ao combinar ambientes para garantir que você não introduza conflitos ou comprometa os processos de teste ou desenvolvimento.
A tabela a seguir fornece exemplos de ambientes de pré-produção comuns.
Exemplo de ambiente de pré-produção | Descrição |
---|---|
Ambiente de desenvolvimento | Os desenvolvedores usam esse ambiente para escrever e testar código. Ele fornece um espaço de sandbox, para que os desenvolvedores possam experimentar, criar e integrar alterações de código. |
Ambiente de garantia de qualidade | Este ambiente é dedicado às atividades de garantia de qualidade. É para testes para identificar e corrigir bugs ou problemas antes de implantar no ambiente de produção. |
Ambiente de segurança | Este ambiente é para testes de segurança. É para garantir que um aplicativo esteja seguro contra ameaças e vulnerabilidades. |
Ambiente de teste de aceitação do usuário | Nesse ambiente, os usuários finais e as partes interessadas testam um aplicativo para validar sua funcionalidade e garantir que ele atenda aos requisitos e expectativas. |
Ambiente de preparo | Esse ambiente se assemelha muito ao ambiente de produção. É para teste final e validação antes de implantar na produção. |
Aplicar governança
A aplicação da governança consiste em limitar as opções de implantação em ambientes de pré-produção para controlar despesas e mitigar riscos. Na pré-produção, você tem flexibilidade para personalizar configurações e implantar recursos. Quanto mais o ambiente de pré-produção se desviar do ambiente de produção, maior será o risco potencial. Use a governança para restringir ambientes de pré-produção. Considere as seguintes diretrizes:
Limitar níveis de desempenho: avalie os requisitos de desempenho de seus ambientes de pré-produção. Escolha níveis de desempenho que equilibrem custo e desempenho. Um serviço geralmente tem diferentes níveis de desempenho, e alguns desses níveis são mais adequados para teste. Alguns serviços têm camadas que oferecem recursos semelhantes aos de produção, mas não vêm com um SLA. Esses serviços reduzem custos, mas ainda fornecem a funcionalidade necessária para teste e desenvolvimento.
Entender os SKUs de pré-produção: alguns SKUs são projetados para ambientes de desenvolvimento. Para otimizar custos, avalie serviços e níveis. Opte por camadas de baixo desempenho se a carga de trabalho não exigir alto desempenho.
Controle o número de instâncias e CPUs: determine o número ideal de instâncias e recursos de CPU que seu ambiente de pré-produção precisa com base nas demandas de carga de trabalho. Evite o provisionamento excessivo de recursos para minimizar os custos.
Limitar a retenção e o registro em log: defina políticas de retenção para logs e dados em ambientes de pré-produção. Considere a duração necessária para reter logs e dados com base nos requisitos de conformidade e considerações de custo. Evite registro e retenção excessivos para reduzir os custos de armazenamento.
Use uma arquitetura de CPU consistente: use a mesma arquitetura de CPU na pré-produção e na produção. Por exemplo, os aplicativos x86 não são executados nativamente no Azure Resource Manager e vice-versa. Use a mesma arquitetura de CPU do seu ambiente de produção para garantir a compatibilidade e minimizar possíveis problemas.
Use o mesmo sistema operacional: evite alterar o sistema operacional (por exemplo, do Windows para o Linux) ou o kernel em ambientes de pré-produção. O software criado para Windows geralmente não é executado nativamente no Linux sem uma camada de compatibilidade e vice-versa. Os sistemas de arquivos e as estruturas de diretórios são diferentes, o que pode causar problemas de aplicação de patches. Ambientes consistentes ajudam a reduzir o risco de problemas de compatibilidade e garantem implantações tranquilas.
Restringir o dimensionamento: para otimizar o custo, você pode restringir a automação para mitigar a automação descontrolada. Por exemplo, defina um limite máximo de dimensionamento em três no ambiente de desenvolvimento e defina-o em 10 no ambiente de produção. Restrinja o dimensionamento para ajudar a controlar o uso de recursos e o custo de automação.
Desativar recursos desnecessários: desative os recursos quando eles não forem usados ativamente, como fora do horário comercial e nos fins de semana. Você pode usar ferramentas ou scripts de automação para agendar o desligamento e a inicialização de recursos. Alguns fornecedores fornecem APIs que você pode usar para interromper e iniciar programaticamente os recursos. Considere usar a IaC para criar ambientes efêmeros que você pode remover quando não precisar mais deles.
Restringir regiões disponíveis: considere o benefício potencial de executar ambientes de pré-produção em diferentes regiões em que os recursos do Azure podem ser mais baratos. Restrinja as implantações de pré-produção a essas regiões para otimizar o custo desses ambientes.
Equilibre a similaridade com a produção
Muitas vezes, é desnecessário e caro que os ambientes de pré-produção espelhem exatamente o ambiente de produção. O objetivo é garantir que cada ambiente de pré-produção seja adequadamente diferente da produção para evitar custos desnecessários. No entanto, quando a pré-produção e a produção são diferentes, há o risco de implantar um bug na produção. Quanto mais diferentes forem esses ambientes, maior será o risco. Adaptar o ambiente de pré-produção para atender às suas necessidades pode ajudá-lo a gerenciar riscos e otimizar custos. Para equilibrar a semelhança com a produção, considere as seguintes recomendações:
Evite réplicas exatas: evite tornar o ambiente de pré-produção uma cópia exata da produção. Pode aumentar desnecessariamente os custos. Crie um ambiente de pré-produção econômico, mas que permita descobrir e lidar com riscos potenciais antes da implantação.
Evite desvios extremos: Evite desvios excessivos da produção, como o uso de diferentes serviços. Serviços diferentes podem não simular com precisão os riscos do mundo real. Determine um limite de risco e não ultrapasse o limite apenas para economizar dinheiro.
Reduza os tempos de execução: considere reduzir os tempos de execução dos processos no estágio de pré-produção para economizar dinheiro. Tenha cuidado com novas vulnerabilidades que possam surgir, como vazamentos de memória não detectados.
Revisar licenças: revise os planos de licenciamento para suas ferramentas de segurança. Se o número de nós variar significativamente entre suas configurações de produção e pré-produção, reavalie suas necessidades para ajustar os custos sem comprometer a segurança.
Otimize os ambientes de desenvolvimento
Os ambientes de desenvolvimento são projetados para fins de desenvolvimento, teste e depuração. Eles têm ciclos de vida mais curtos e geralmente são criados conforme necessário e existem por um curto período de tempo. Os ambientes de desenvolvimento geralmente têm requisitos mais baixos de confiabilidade, capacidade e segurança em comparação com outros ambientes de pré-produção e produção. Eles podem ter menos recursos e podem aceitar menor utilização de recursos. Para otimizar seu ambiente de desenvolvimento:
Avalie as ferramentas: Avalie regularmente a relação custo-benefício de sua configuração de ferramentas atual, incluindo ambientes de desenvolvimento integrados (IDEs), licenças e ferramentas relacionadas. Considere alternativas gratuitas ou de código aberto que ofereçam funcionalidade semelhante sem comprometer a qualidade. Reavalie continuamente a necessidade e a eficiência dessas ferramentas à medida que o cenário de desenvolvimento evolui.
Considere o hardware: Avalie o custo e o desempenho de suas 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 sua vida útil e melhorar o desempenho.
Otimize o número de ambientes: analise as vantagens e desvantagens de ambientes de desenvolvimento individualizados versus um ambiente compartilhado. Ambientes individuais podem imitar configurações de produção, evitar interferência entre desenvolvedores e oferecer configurações personalizadas. No entanto, o dimensionamento se torna mais caro à medida que o número de desenvolvedores aumenta. Ambientes compartilhados podem economizar custos, mas podem surgir preocupações com a confiabilidade se os problemas afetarem toda a equipe de desenvolvimento simultaneamente. Encontre o equilíbrio certo com base em custo, mitigação de riscos, eficiência e satisfação do desenvolvedor.
Limpe regularmente: limpe e otimize rotineiramente seu ambiente de desenvolvimento para evitar o acúmulo de recursos órfãos, dados não utilizados e experimentos de prova de conceito. Implemente processos de limpeza ou ferramentas automatizadas para identificar e remover recursos não utilizados. Mantenha apenas os componentes essenciais e ativos. A limpeza regular ajuda a reduzir os custos de armazenamento e garante a utilização eficiente dos recursos.
Implemente o dimensionamento amostrado: em vez de dimensionar todos os componentes para sua capacidade máxima, considere uma abordagem amostrada na qual você dimensiona seletivamente componentes vitais. Essa abordagem pode ser econômica e minimizar os riscos. Avalie a relação risco-benefício de não escalar certos elementos e considere o efeito potencial no meio ambiente.
Otimize o gerenciamento de dados: os ambientes de desenvolvimento podem ter baixas necessidades de retenção de dados e frequência de backup.
Considere a emulação de ponto de extremidade
Você pode otimizar os custos em um ambiente de pré-produção usando emulação de ponto de extremidade ou pontos de extremidade fictícios, especialmente para recursos caros, como GPUs. Identifique componentes ou serviços em seu ambiente de pré-produção que são os mais caros ou que consomem muitos recursos. Use pontos de extremidade fictícios para simular as respostas desses componentes caros sem invocá-los. Para simular respostas de API, você pode usar servidores de simulação de API comerciais ou de software livre ou implementações personalizadas.
A emulação e os pontos de extremidade fictícios ajudam a economizar custos, mas você deve garantir que eles representem o ambiente de produção em um grau suficiente para teste. Encontre um equilíbrio entre precisão e 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 de GPU para tarefas que não exigem poder de processamento real da GPU nos estágios de pré-produção. A emulação pode não representar totalmente o desempenho ou as peculiaridades das GPUs reais, portanto, use-a quando o comportamento exato da GPU não for crítico para testes de pré-produção.
Facilitação do Azure
Determinando e otimizando os custos do ambiente: o Gerenciamento de Custos da Microsoft é um conjunto de ferramentas que ajudam as organizações a monitorar, alocar e otimizar o custo de suas cargas de trabalho do Microsoft Cloud. O Gerenciamento de Custos está disponível para qualquer pessoa com acesso a um escopo de cobrança ou gerenciamento de recursos.
O Assistente do Azure é uma ferramenta que fornece recomendações de otimização de custos, incluindo a identificação de áreas de uso da máquina virtual que precisam de otimização. Use o Assistente para ajudá-lo a tomar decisões informadas e otimizar custos em seu ambiente do Azure. O Azure fornece ferramentas e recursos de gerenciamento de custos que ajudam a priorizar os gastos. Você pode usar essas ferramentas para rastrear e analisar custos em ambientes, definir orçamentos e receber recomendações de otimização de custos.
Aplicando governança: com o Azure Policy, você pode limitar tipos de recursos, SKUs e instâncias definindo regras de política que impõem restrições aos tipos de recursos que você pode implantar em seu ambiente do Azure. Você pode manter o controle sobre os recursos provisionados e garantir a conformidade com as políticas e práticas recomendadas da sua organização.
Para limitar os tipos de recursos usando o Azure Policy, você pode definir regras de política que especificam os tipos de recursos permitidos. Aplique essas regras às assinaturas ou grupos de recursos relevantes do Azure. O Azure Policy impede que os usuários implantem recursos que não são permitidos.
Use o Azure Resource Manager para definir e gerenciar recursos de maneira declarativa. Você pode ajustar os recursos alocados para cada ambiente com base em seus requisitos específicos. Use modelos e parametrize configurações de recursos para otimizar custos.
Otimizando ambientes de pré-produção: o Azure oferece opções de preços de desenvolvimento/teste que fornecem taxas com desconto para ambientes de não produção. Você pode alocar mais recursos e orçamento para ambientes de produção críticos, o que otimiza os custos em ambientes de não produção. Você também pode usar a oferta de licenciamento do Azure, o Benefício Híbrido do Azure.
Você pode usar o Gerenciamento de API do Azure para simulação de API. O Gerenciamento de API atua como uma fachada para serviços de back-end, o que permite que os provedores de API abstraiam implementações de API e desenvolvam a arquitetura de back-end sem afetar os consumidores de API.
Lista de verificação de otimização de custos
Consulte o conjunto completo de recomendações.