Recomendações para otimizar os custos de fluxo

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

CO:09 Otimize os custos de fluxo. Alinhe o custo de cada fluxo com a prioridade do fluxo. Ao priorizar fluxos, considere os recursos, a funcionalidade e os requisitos não funcionais de cada fluxo. A otimização dos gastos de fluxo geralmente requer compromissos estratégicos.

Este guia descreve as recomendações para otimizar o custo de cada um dos fluxos em sua carga de trabalho. A otimização de custos dos fluxos em uma carga de trabalho envolve alocar e gerenciar recursos estrategicamente para minimizar as despesas e manter o desempenho. Essa otimização é crucial porque garante a utilização eficiente dos recursos investidos, reduz gastos desnecessários e melhora o retorno geral do investimento para a infraestrutura. Se você não otimizar os custos dos fluxos em uma carga de trabalho, corre o risco de gastar demais com recursos, o que resulta em custos operacionais inflacionados e lucratividade reduzida.

Definições

Termo Definição
Desacoplar A estratégia de remover um fluxo de um recurso que contém vários fluxos e colocá-lo em um recurso separado.
Flow Em uma carga de trabalho, a sequência de ações que executa uma função específica. Um fluxo envolve a movimentação de dados e a execução de processos entre os componentes da carga de trabalho.
Fluxo do sistema O fluxo de informações e processos dentro de um sistema. O sistema segue automaticamente esse fluxo para habilitar fluxos de usuário ou funcionalidade de carga de trabalho.
Fluxo de usuário Os caminhos ou sequências de ações que os usuários executam em um aplicativo ou sistema.

Principais estratégias de design

Invista mais em fluxos de alta prioridade do que em fluxos de baixa prioridade. O alinhamento da prioridade do fluxo e dos gastos pode envolver o desacoplamento de fluxos que atualmente compartilham o mesmo recurso. Também pode envolver a combinação de fluxos que têm requisitos semelhantes, mas são executados em recursos separados. Por exemplo, suponha que você tenha um aplicativo Web que inclua vários fluxos, como registro de usuário, entrada e processamento de dados. Esses fluxos são executados em um único servidor, mesmo que tenham necessidades de recursos diferentes. Para otimizar os custos e o desempenho, você pode separar ou combinar fluxos:

  • Fluxos separados. Por exemplo, você pode desacoplar o fluxo de registro do usuário dos outros e movê-lo para um servidor dedicado e de baixo custo. Esse fluxo é importante, mas não consome muitos recursos, portanto, é um bom candidato para um servidor mais barato.

  • Combine fluxos. Por exemplo, você pode combinar os fluxos de entrada e processamento de dados, que têm requisitos de recursos mais altos, e executá-los juntos em um servidor de alto desempenho. A combinação desses fluxos permite que o servidor lide com eficiência com as necessidades de uso intensivo de recursos de ambos os fluxos. Otimiza o desempenho e os custos.

Em uma carga de trabalho, pode haver diferentes tipos de fluxos ou caminhos que você precisa considerar. Este guia se concentra nos seguintes tipos de fluxo:

  • Fluxos do sistema. A otimização dos fluxos do sistema envolve simplificar a comunicação e a interação entre os componentes do sistema, minimizar gargalos e garantir a utilização eficiente dos recursos.

  • Fluxos de usuário. A otimização dos fluxos de usuários envolve melhorar a experiência do usuário, reduzir os pontos de atrito e garantir uma navegação e interação suaves dentro do aplicativo ou sistema.

Criar um inventário de fluxos

Um inventário de fluxo é uma lista e descrição abrangentes de todas as sequências de ações, transições de dados e interações do sistema dentro de uma carga de trabalho. Um inventário de fluxo é a primeira etapa para garantir que os investimentos estejam alinhados com a prioridade dos fluxos. Você só deve otimizar os fluxos quando entender completamente sua finalidade e dependências. Aqui estão as etapas para criar um inventário de fluxos de carga de trabalho:

  1. Fluxos de documentos. Comece documentando e listando todos os fluxos existentes em sua carga de trabalho para entender o estado abrangente do sistema. Inclua todas as sequências de ações, transições de dados e interações do sistema. Familiarize-se com todos os componentes, como serviços externos, bancos de dados, middleware e integrações de terceiros. Além disso, rastreie ou estime o volume de solicitações ao longo do tempo.

  2. Visualize fluxos. Para obter uma perspectiva mais clara, represente suas descobertas visualmente, possivelmente em fluxogramas ou diagramas. As visualizações ajudam você a ver as interdependências entre os componentes. Considere usar uma ferramenta como o Visio para ajudá-lo com as visualizações.

  3. Categorize os fluxos. Agrupe fluxos semelhantes, levando em conta atributos como sua funcionalidade (por exemplo, autenticação, recuperação de dados e processamento de transações), criticidade para os negócios ou os recursos que eles usam (CPU, memória ou largura de banda).

Priorize fluxos

A priorização de fluxo é o processo de classificação de fluxos com base em sua influência nos resultados de negócios, implicações na experiência do usuário e nos recursos que consomem. Os fluxos críticos geralmente exigem níveis mais altos de disponibilidade, tempos de recuperação mais rápidos e melhor desempenho para atender aos objetivos da carga de trabalho. Ao priorizar os fluxos, você pode alinhar melhor os gastos à prioridade do fluxo. Para priorizar fluxos, considere as seguintes etapas:

  • Identifique o valor do fluxo. Ao otimizar os custos do fluxo de carga de trabalho, você precisa identificar o fluxo que fornece mais valor. Você não quer gastar mais do que vale um fluxo. Em vez de simplesmente cortar custos, considere transferir os custos para priorizar os fluxos mais valiosos. Por exemplo, seu fluxo de checkout é crítico para os negócios, mas o histórico de compras não. Você deve alocar mais recursos e orçamento para o fluxo de checkout.

    Os fluxos de baixa prioridade têm expectativas mais baixas de disponibilidade, recuperação e desempenho. Você pode reduzir custos usando configurações mais baratas para reduzir os gastos com desempenho, disponibilidade ou continuidade de negócios.

  • Considere as métricas de fluxo. Se você estiver com dificuldades para priorizar seus fluxos, considere as metas de disponibilidade e recuperação que você atribuiu a eles. Os fluxos críticos geralmente têm requisitos de alta disponibilidade e SLAs (contratos de nível de serviço). Os fluxos associados a um RPO e RTO mais baixos são mais importantes do que os fluxos que têm um RPO e RTO mais altos.

Otimize fluxos independentes

Às vezes, seus fluxos já estão sendo executados em recursos diferentes. Nesses casos, você pode avaliar e otimizar os gastos com mais facilidade. Avalie os componentes e processos envolvidos em cada fluxo independente para determinar se há maneiras de otimizá-los ou simplificá-los. Para otimizar fluxos independentes, você pode seguir estas etapas:

  • Elimine componentes desnecessários. Remova quaisquer elementos irrelevantes que não contribuam para a funcionalidade principal do fluxo, reduzindo assim a complexidade e o custo.

  • Redesenhe o fluxo. Considere redesenhar a arquitetura do fluxo para aumentar sua eficiência. Você pode alterar a sequência de operações, reduzir a latência ou melhorar as velocidades de transferência de dados, por exemplo.

  • Escolha uma camada de desempenho apropriada. Fluxos diferentes podem ter demandas variadas em termos de velocidade de processamento, memória ou outras métricas de recursos. Certifique-se de escolher uma camada de recurso que se alinhe bem com os requisitos específicos de cada fluxo.

  • Ajuste as configurações de dimensionamento. Se um fluxo tiver demanda variável, considere implementar o dimensionamento automático para ajustar dinamicamente os recursos de acordo com as necessidades em tempo real, otimizando assim os custos.

  • Ajuste as configurações. Ajuste outras configurações, como opções de rede ou armazenamento de dados, para se alinhar melhor aos requisitos de desempenho e orçamento do fluxo.

Fluxos diferentes separados

Separar fluxos diferentes em diferentes recursos é um processo de alocação de tarefas distintas com necessidades computacionais variadas para recursos dedicados. Fluxos diferentes são fluxos que têm atributos diferentes. Esses atributos podem incluir requisitos computacionais, dependências de dados, operações de E/S, sensibilidade à latência, necessidades de segurança e requisitos de conformidade. Geralmente, é mais econômico executar diferentes tipos de fluxos em recursos separados. Isso permite a alocação precisa de recursos para cada fluxo, o que reduz gastos desnecessários e garante a máxima eficiência.

Considere separar fluxos diferentes que estão atualmente combinados. Essa separação aumenta a escalabilidade, a tolerância a falhas e a adaptabilidade e também simplifica os custos. Ao garantir que cada fluxo opere de forma independente, você reduz os riscos de interferência e pode alocar recursos de forma mais econômica com base na prioridade de cada fluxo. Por exemplo, suponha que você coloque o CRM (fluxo de usuário) com um mecanismo de dados (fluxo de dados). O tráfego do usuário para o sistema CRM durante o horário comercial pode tornar o mecanismo de dados mais lento. Quando você desacopla fluxos, o mecanismo de dados pode dimensionar cada componente ou serviço de forma independente com base na demanda da carga de trabalho. Essa dissociação otimiza a alocação de recursos e reduz os custos.

Combinar fluxos semelhantes

Combinar fluxos semelhantes em um único recurso é um processo de consolidação de tarefas ou processos com atributos comparáveis e uso de recursos compartilhados para eles. Essa estratégia elimina redundâncias e garante um uso mais eficiente dos recursos, levando a uma economia de custos significativa. Tipos semelhantes de fluxos compartilham atributos semelhantes. Você pode considerar os mesmos atributos que você examina ao separar fluxos diferentes: requisitos computacionais, dependências de dados, operações de E/S, sensibilidade à latência, necessidades de segurança e requisitos de conformidade. Aqui estão alguns exemplos em que a combinação de fluxos de carga de trabalho semelhantes para usar o mesmo recurso pode levar a economias substanciais:

  • Servidores Web. Em vez de dedicar servidores Web separados para cada aplicativo, considere consolidá-los, especialmente se o tráfego não for consistentemente alto. Um servidor web compartilhado, emparelhado com um proxy reverso, pode gerenciar e rotear efetivamente o tráfego para vários aplicativos.

  • Gateways de API. Em vez de manter gateways de API individuais para microsserviços ou aplicativos separados, você pode usar um gateway de API centralizado para simplificar as solicitações e direcioná-las para o serviço relevante. Isso facilita o gerenciamento e também reduz os custos.

  • Processamento de logs. Em vez de ter vários aplicativos ou serviços que operam suas próprias instâncias de processamento de log, considere direcioná-los todos para uma ferramenta de processamento de log compartilhada. Essa abordagem minimiza o número de instâncias ativas, o que se traduz em economia de custos diretos.

  • Serviços de autenticação. Se vários aplicativos implantarem seus próprios mecanismos de autenticação distintos, a redundância será introduzida. A integração de uma solução de logon único (SSO) ou um serviço de autenticação comunitária reduz essa duplicação e otimiza o uso de recursos, o que reduz os custos.

Risco: Não confunda coincidência com design. Dois fluxos que parecem semelhantes não servem necessariamente ao mesmo propósito. Você precisa entender a função e o design de cada fluxo antes de mesclá-los ou alterá-los. Interpretar mal um fluxo concentrando-se apenas em sua aparência pode levar a consequências não intencionais e interromper o serviço ou processo que ele suporta. Se vários fluxos tiverem a mesma função e não houver diferenças perceptíveis em seu design ou intenção, considere consolidá-los.

Monitore fluxos continuamente

A natureza dos fluxos e cargas de trabalho pode mudar ao longo do tempo, portanto, você precisa revisar os gastos com fluxo para garantir que os custos estejam alinhados com as prioridades. Avalie a utilização de recursos de cada fluxo analisando a computação, o armazenamento e o uso da rede associados a cada fluxo. Identifique quaisquer ineficiências ou áreas onde os recursos são subutilizados. Essa análise ajuda a identificar oportunidades de otimização de custos. Aqui estão algumas considerações a serem levadas em conta ao revisar a utilização do fluxo:

  • Analise os padrões de uso. Analise os padrões de uso dos fluxos. Alguns fluxos podem ser mais ativos durante determinados horários do dia ou do mês, enquanto outros podem ter uma carga consistente. Ao entender esses padrões, você pode prever as necessidades de recursos e ajustar a alocação para evitar gargalos e superprovisionamento.

  • Monitore métricas relevantes. Determine as métricas que podem ajudá-lo a avaliar a eficiência e a relação custo-benefício de cada fluxo. Considere a utilização da CPU, os custos de transferência de dados, os custos de transação e o espaço ocupado pelo armazenamento. Use ferramentas de monitoramento para coletar métricas detalhadas sobre o uso e o desempenho de recursos.

  • Considere a manutenção contínua. Considere o custo de manutenção, especialmente quando você usa soluções de infraestrutura como serviço, como máquinas virtuais. Você precisa levar em conta atividades como aplicação de patches, upgrades, backups, monitoramento e segurança.

Durante sua análise, identifique quaisquer ineficiências ou áreas em que os recursos não são utilizados de forma eficaz. Considere instâncias de computação ociosas, dados não utilizados e baixa largura de banda de rede. Essas ineficiências podem indicar oportunidades de otimização de custos.

Facilitação do Azure

Priorizando, otimizando e monitorando fluxos: a ferramenta Fluxo do Usuário no Application Insights fornece uma representação visual da navegação do usuário nas páginas e nos recursos do site. Essa ferramenta ajuda a identificar áreas onde os usuários saem com frequência, repetem ações ou seguem caminhos específicos. Ao comparar o comportamento real do usuário com seus resultados e objetivos previstos, você pode identificar fluxos críticos. Ele também permite otimizar possíveis problemas, como altas taxas de rotatividade, ações repetitivas ou falhas de design. A ferramenta também permite a filtragem de propriedades personalizadas por meio de dimensões, oferecendo uma análise mais personalizada.

O Azure Monitor ajuda você a obter insights sobre o desempenho e a integridade de seus aplicativos. Ele fornece recursos de monitoramento e diagnóstico. Esses recursos permitem identificar gargalos de desempenho, otimizar a utilização de recursos e detectar e solucionar problemas que podem afetar os custos.

O Log Analytics é uma ferramenta que permite coletar, analisar e visualizar dados de log de várias fontes. Usando o Log Analytics, você pode obter insights sobre os logs de aplicativo e infraestrutura, identificar tendências e otimizar custos gerenciando o uso e a retenção de dados. Considere colocar logs e usar soluções dedicadas em vez de compartilhadas para gerenciar melhor os custos.

Lista de verificação de otimização de custos

Consulte o conjunto completo de recomendações.