Recomendações para otimizar os custos ambientais

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 funcionamento e a segurança necessários. Os ambientes que não são de produção devem emular o ambiente de produção. Implemente compensações estratégicas em ambientes que não sejam de 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 uma boa relação custo-benefício. É 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 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 um aplicativo pode ficar indisponível após um incidente.
Contrato de nível de serviço (SLA) Um acordo contratual entre o prestador de serviços e o cliente do serviço. O acordo define os objetivos de nível de serviço (SLOs). O incumprimento do acordo pode ter consequências financeiras para o prestador 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 de desastres (DR). Personalize cada ambiente para seu uso específico para economizar dinheiro e usar recursos de forma eficiente. Determine os benefícios de cada ambiente, como eficiência ou satisfação do cliente. Você quer avaliar o retorno sobre o investimento (ROI) para o meio ambiente, mesmo que ele não tenha 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 os objetivos organizacionais abrangentes. Essa avaliação ajuda você a tomar decisões informadas sobre a alocação de recursos e alinhar o custo com as prioridades ambientais. A essência do valor vai além da quantidade de receita que um ambiente gera. 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.

    Quando você entende as necessidades exclusivas dos usuários em cada ambiente, 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 medidas organizacionais de valor: alinhe seus esforços de redução de custos com as prioridades da 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 concentrar na maximização do lucro ou na satisfação dos funcionários, alinhe suas decisões de gastos com essas métricas.

Determinar 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 gestão de custos são fundamentais para obter informações sobre padrões e tendências de gastos em todos os ambientes. Para determinar os custos ambientais, considere estas estratégias:

  • Identificar 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.

  • Avaliar riscos: Avaliar os riscos associados às decisões de gastos e seu efeito potencial sobre o ambiente e as operações de negócios. Considere fatores como segurança de dados, conformidade, desempenho, auditorias e requisitos de SLA.

  • Monitore e ajuste seus gastos: monitore e analise continuamente padrões de gastos, entrega de valor e fatores de risco. Reveja e ajuste regularmente as suas estratégias de otimização de gastos à medida que as necessidades do ambiente e do negócio evoluem.

Otimizar 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. Foco em diferenciar as implantações de produção e atender às necessidades dos usuários. Aqui estão recomendações para otimizar o ambiente de produção:

  • Diferenciar regiões: gaste menos em regiões que atendem menos clientes. Por exemplo, você deve investir mais em uma região que atenda 90% de seus usuários do que em uma região que atenda 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.

  • Diferenciar escala: Implementar estratégias de dimensionamento horizontal e vertical. Dimensione os recursos de forma eficiente 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 inquilinos pagos e gaste menos para inquilinos 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 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 potenciais efeitos de um evento disruptivo. Considere as seguintes estratégias:

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

  • Determinar RTOs e RPOs: Para ajudar a determinar o design do ambiente de DR, defina o tempo de inatividade aceitável e os limites de 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 com interrupções. 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 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 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 é parcialmente ativo e sincroniza 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 custos. Considere uma abordagem fria ou quente para otimizar 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 exatamente a produção. As áreas de redução de custos incluem o uso de recursos de menor custo, a desativação de serviços desnecessários e a aplicação de descontos oferecidos para uso em pré-produção. Considere as seguintes estratégias para otimizar os 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 provisionamento excessivo ou insuficiente de recursos. Para avaliar seus ambientes de pré-produção para sua carga de trabalho, considere as seguintes orientações:

  • Compreender os tipos de ambiente: identifique os tipos de ambientes de pré-produção, como desenvolvimento, teste e preparação, necessários para sua carga de trabalho. Cada ambiente deve ter um papel definido e uma função específica para garantir uma alocação eficiente de recursos.

  • Alinhe-se com os requisitos dos usuários: antes de configurar ambientes de pré-produção, entenda os requisitos e as expectativas dos usuários. Adapte os recursos e especificações com base em suas necessidades para evitar gastos desnecessários de recursos ou recursos.

  • Consolidar o ambiente: determine se você pode combinar ambientes sem comprometer sua funcionalidade. Combine ambientes com funções que não se sobrepõem. 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: seja cauteloso ao combinar ambientes para garantir que não introduza conflitos ou comprometa os processos de teste ou desenvolvimento.

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

Exemplo de ambiente de pré-produção Description
Ambiente de desenvolvimento Os desenvolvedores usam esse ambiente para escrever e testar código. Ele fornece um espaço de área restrita, para que os desenvolvedores possam experimentar, criar e integrar alterações de código.
Ambiente de garantia de qualidade Este ambiente é dedicado a atividades de garantia de qualidade. Ele 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 de 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. Tenha em consideração as seguintes orientações:

  • 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 testes. Alguns serviços têm níveis 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 testes e desenvolvimento.

  • Entenda as SKUs de pré-produção: algumas SKUs são projetadas para ambientes de desenvolvimento. Para otimizar custos, avalie serviços e camadas. Opte por níveis 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 de 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: 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 em requisitos de conformidade e considerações de custo. Evite o registro e a 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 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 que 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 muitas vezes 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 suaves.

  • Restringir o dimensionamento: para otimizar os custos, 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 como 10 no ambiente de produção. Restringir 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 de expediente e fins de semana. Você pode usar ferramentas de automação ou scripts para agendar o desligamento e a inicialização de recursos. Alguns fornecedores fornecem APIs que você pode usar para parar e iniciar os recursos programaticamente. Considere usar o 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 onde 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.

Equilibrar semelhança com 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 o risco. Adaptar o ambiente de pré-produção para atender às suas necessidades pode ajudá-lo a gerenciar riscos e, ao mesmo tempo, 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 que seja econômico, mas permita que você descubra e resolva 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 poupar dinheiro.

  • Reduzir tempos de execução: considere encurtar 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 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 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. 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. Os ambientes de desenvolvimento normalmente 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 ferramentas: avalie regularmente a relação custo-benefício de sua configuração atual de ferramentas, incluindo ambientes de desenvolvimento integrado (IDEs), licenças e ferramentas relacionadas. Considere alternativas gratuitas ou de código aberto que ofereçam funcionalidades semelhantes sem comprometer a qualidade. Reavaliar 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.

  • Otimizar 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ências entre desenvolvedores e oferecer configurações personalizadas. No entanto, o dimensionamento torna-se mais caro à medida que o número de desenvolvedores aumenta. Ambientes compartilhados podem economizar custos, mas preocupações de confiabilidade podem surgir se 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.

  • Limpeza regular: 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 componentes essenciais e ativos. A limpeza regular ajuda a reduzir os custos de armazenamento e garante uma utilização eficiente dos recursos.

  • Implementar dimensionamento de amostra: em vez de dimensionar todos os componentes para sua capacidade máxima, considere uma abordagem de amostra na qual você dimensiona seletivamente componentes vitais. Essa abordagem pode ser econômica e, ao mesmo tempo, minimizar os riscos. Avaliar a relação risco-benefício de não dimensionar determinados elementos e considerar o efeito potencial no 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 final

Você pode otimizar os custos em um ambiente de pré-produção usando emulação de ponto final ou pontos de extremidade simulados, especialmente para recursos caros, como GPUs. Identifique os componentes ou serviços em seu ambiente de pré-produção que são os mais caros ou consomem muitos recursos. Use pontos de extremidade simulados 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 código aberto ou implementações personalizadas.

A emulação e os pontos de extremidade simulados ajudam a economizar custos, mas você deve garantir que eles representem o ambiente de produção em um grau suficiente para testes. Estabeleça 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 em estágios de pré-produção. A emulação pode não representar totalmente o desempenho ou as peculiaridades de 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

Determinar e otimizar os custos do ambiente: o Microsoft Cost Management é 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 gerenciamento de recursos ou faturamento.

O Azure Advisor é uma ferramenta que fornece recomendações de otimização de custos, incluindo a identificação de áreas de uso de máquina virtual que precisam de otimização. Use o Advisor 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 gastos. Você pode usar essas ferramentas para acompanhar e analisar custos em todos os ambientes, definir orçamentos e receber recomendações de otimização de custos.

Aplicando governança: com a Política do Azure, 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 a Política do Azure, você pode definir regras de política que especifiquem os tipos de recursos permitidos. Aplique essas regras às assinaturas ou grupos de recursos relevantes do Azure. A Política do Azure 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 que não são de produção. Você pode alocar mais recursos e orçamento para ambientes críticos de produção, o que otimiza os custos em ambientes que não são de produção. Você também pode usar a oferta de licenciamento do Azure, 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 evoluam 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.