Design para otimização de uso
Maximizar o uso de recursos e operações. Aplique-os aos requisitos funcionais e não funcionais negociados da solução. |
---|
Os serviços e ofertas fornecem vários recursos e níveis de preços. Depois de comprar um conjunto de recursos, evite subutilizá-los. Encontre formas de maximizar o seu investimento no nível. Da mesma forma, avalie continuamente os modelos de faturamento para encontrar aqueles que melhor se alinham ao seu uso, com base nas cargas de trabalho de produção atuais.
Cenário de exemplo
A Universidade Contoso está atualmente hospedando uma solução comercial pronta para uso (COTS) que permite que o corpo docente da universidade crie e atualize cursos para o ano letivo e é o principal portal de registro usado pelos alunos para esses cursos. A solução tem uma integração personalizada com um sistema de gestão educacional de software como serviço (SaaS), para o qual eles esperam migrar todas as suas funções em alguns anos. Enquanto isso, eles querem otimizar os custos nos componentes de integração personalizados.
A solução tecnológica da oferta COTS é geralmente tratada como uma caixa preta, exceto por seu banco de dados que é o Banco de Dados do Azure para MySQL. A integração personalizada é uma Função Durável do Azure, que é executada em um plano de serviço Standard no Serviço de Aplicativo do Azure. Este Serviço de Aplicativo hospedava anteriormente um site da universidade, mas esse não é mais o caso. Essa função durável é um aplicativo Python apoiado por uma conta dedicada de Armazenamento do Azure que executa uma sincronização noturna do banco de dados MySQL para a API do SaaS.
Use preços baseados no consumo quando for prático
Pode haver serviços que oferecem preços baseados no consumo, o que significa que você é cobrado apenas pela utilização do serviço e pode desligar o serviço quando não for necessário parar de incorrer em custos. Se você tiver componentes de carga de trabalho que são utilizados apenas esporadicamente, isso pode ajudar a minimizar os custos desperdiçados em comparação com o pagamento para que o componente seja executado 24 horas por dia, 7 dias por semana, 365 dias por semana.
Ao usar preços baseados no consumo, você paga apenas exatamente pelo que usa. Essa opção é uma boa opção quando não se espera que a computação da carga de trabalho seja utilizada em tempo integral.
O desafio da Contoso
- O trabalho de sincronização geralmente é executado por cerca de uma hora todas as noites, em um horário específico. O seu desempenho tem sido historicamente satisfatório. As avarias são raras e as falhas transitórias são bem tratadas na configuração atual.
- Como a computação necessária para o trabalho de sincronização é utilizada apenas cerca de uma hora por dia, e eles pagam por 24 horas, independentemente da utilização, a equipe de carga de trabalho está interessada em uma alternativa ao design atual.
- A equipe considerou escrever um script para desligar o serviço todas as noites após a sincronização ser executada e reimplantá-lo no dia seguinte, mas essa solução acarretaria um alto grau de risco e complexidade.
Aplicação da abordagem e dos resultados
- A equipe analisa o histórico de trabalho e descobre que o tempo mais longo que a função já executou foi de pouco menos de duas horas. Eles comparam o custo do plano dedicado com o custo do plano de consumo do Azure Functions para o pior cenário e concluem que o plano de consumo será menos dispendioso.
- A equipe executa um teste de desempenho para garantir que o desempenho seja suficiente e eles notam um ligeiro aumento no tempo de execução, mas ainda está dentro de limites aceitáveis.
- O custo total da carga de trabalho é reduzido usando o plano de consumo, pois eles só incorrem em custos quando o trabalho está sendo executado.
Otimize seu projeto de alta disponibilidade
Priorize a implantação de ativo-ativo ou somente ativo sobre modelos ativo-passivo, como parte do seu plano de recuperação, se você já pagou pelos recursos.
Se o seu design usar como padrão modelos ativo-passivo, você pode ter recursos ociosos que poderiam ser usados de outra forma. A conversão para ativo-ativo pode permitir que você atenda aos seus requisitos de nivelamento de carga e dimensionamento sem gastar demais. Se você puder atingir suas metas de recuperação com um modelo somente ativo, os custos desses recursos poderão ser removidos completamente.
O desafio da Contoso
- O aplicativo COTS usa o Banco de Dados do Azure para o Servidor Flexível MySQL configurado para alta disponibilidade na mesma zona, que fornece um servidor em espera na mesma zona de disponibilidade que o servidor primário. Eles também habilitaram backups automáticos.
- O RPO da carga horária é relativamente longo, de 12 horas, e o RTO é de três horas durante o dia letivo.
- Com base em testes de recuperação anteriores, a equipe sabe que pode atingir suas metas de RPO e RTO por meio de failover automático para o servidor em espera. Eles também testaram a recuperação do banco de dados a partir de um backup e podem atingir as metas nesse cenário.
Aplicação da abordagem e dos resultados
- A equipe de carga de trabalho reavalia o benefício do design de alta disponibilidade versus o custo do serviço ser duas vezes maior do que uma única instância.
- A equipe testa a criação de uma nova instância e a recuperação de um banco de dados do backup e está satisfeita de que ainda estará em conformidade com suas metas de recuperação, por isso decide eliminar a instância em espera.
- A equipe atualiza o plano de DR para refletir a nova estratégia de recuperação e realizar a economia de custos por meio da nova configuração.
Mantenha seu ambiente de nuvem limpo de recursos e dados não utilizados
Analise regularmente e rigorosamente as implantações em busca de recursos e dados não utilizados e descomissione-os. Com o tempo, recursos e dados que eram necessários para alguma finalidade no passado, mas não estão mais sendo usados, podem permanecer em seus ambientes de nuvem e acumular custos desnecessariamente. Esteja atento para manter seus ambientes limpos para ajudar a otimizar a eficiência de custos.
Desligar recursos não utilizados e excluir dados quando você não precisa mais reduz o desperdício e libera fundos para que você possa investi-los em outro lugar.
O desafio da Contoso
- A universidade tem historicamente adotado uma abordagem conservadora para soluções de descomissionamento, temendo que elas precisem voltar a uma configuração anterior. Essa cautela levou ao abandono de serviços executados em um ou mais ambientes por meses que foram esquecidos em alguns casos.
- Quando serviços abandonados são descobertos, geralmente é por acidente, pois não há um processo formal para rever o ambiente para tais serviços.
Aplicação da abordagem e dos resultados
- A equipe adiciona o descomissionamento do Serviço de Aplicativo à lista de pendências como parte da migração do Serviço de Aplicativo para a hospedagem de consumo para a Função Durável. Como parte do próximo sprint, eles encerrarão as implantações do Serviço de Aplicativo em todos os ambientes.
- Para ajudar na deteção proativa de recursos abandonados, a equipe configura alertas no Consultor do Azure para notificá-los sobre recursos não utilizados.
- A equipe implementa uma nova política que exige que a equipe faça revisões completas mensais dos ambientes de pré-produção e revisões completas trimestrais do ambiente de produção para identificar recursos abandonados. Quaisquer recursos abandonados encontrados serão adicionados à lista de pendências para desativação.