Share via


Recomendações para otimizar os custos de fluxo

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

CO:09 Otimizar os custos de fluxo. Alinhe o custo de cada fluxo com a prioridade de 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 comprometimentos 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 estrategicamente recursos para minimizar as despesas, mantendo o desempenho. Essa otimização é crucial porque garante uma utilização eficiente dos recursos investidos, reduz os gastos desnecessários e melhora o retorno geral do investimento para a infraestrutura. Se você não otimizar o custo dos fluxos em uma carga de trabalho, corre o risco de gastar demais em recursos, o que resulta em custos operacionais inflados e redução da rentabilidade.

Definições

Termo Definição
Dissociar 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 componentes da carga de trabalho.
Fluxo do sistema O fluxo de informações e processos em 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 tomam em um aplicativo ou sistema.

Principais estratégias de design

Invista mais em fluxos de alta prioridade do que em fluxos de prioridade mais baixa. Alinhar a prioridade de fluxo e os gastos pode envolver a 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, embora tenham necessidades de recursos diferentes. Para otimizar os custos e o desempenho, você pode separar fluxos ou combinar fluxos:

  • Fluxos separados. Por exemplo, você pode desacoplar o fluxo de registro do usuário das outras pessoas e movê-lo para um servidor dedicado e de menor custo. Esse fluxo é importante, mas não com uso intensivo de recursos, portanto, ele é um bom candidato para um servidor menos caro.

  • Combinar 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 as necessidades com uso intensivo de recursos de ambos os fluxos. Ele 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. Otimizar fluxos do sistema envolve simplificar a comunicação e a interação entre componentes do sistema, minimizar gargalos e garantir a utilização eficiente de recursos.

  • Fluxos de usuário. Otimizar fluxos de usuário envolve melhorar a experiência do usuário, reduzir pontos de atrito e garantir uma navegação suave e interação dentro do aplicativo ou sistema.

Criar um inventário de fluxos

Um inventário de fluxo é uma lista e uma 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 se alinhem com a prioridade dos fluxos. Você só deve otimizar os fluxos quando entender completamente suas finalidades e dependências. Estas sã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, acompanhe ou estime o volume de solicitações ao longo do tempo.

  2. Visualizar 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 componentes. Considere usar uma ferramenta como o Visio para ajudá-lo com as visualizações.

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

Priorizar fluxos

A priorização do fluxo é o processo de classificação de fluxos com base em sua influência nos resultados de negócios, nas implicações na experiência do usuário e nos recursos que eles 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 fluxos, você pode alinhar melhor os gastos à prioridade de fluxo. Para priorizar fluxos, considere as seguintes etapas:

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

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

  • Considere as métricas de fluxo. Se você estiver lutando para priorizar seus fluxos, considere as metas de disponibilidade e recuperação atribuídas 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.

Otimizar fluxos independentes

Às vezes, seus fluxos já estão em execução 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 simplicá-los. Para otimizar fluxos independentes, você pode seguir estas etapas:

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

  • Reprojete o fluxo. Considere reprojetar 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 recurso. Escolha 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 apresentar demanda variável, considere implementar o dimensionamento automático para ajustar dinamicamente os recursos de acordo com as necessidades em tempo real, otimizando os custos.

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

Separar fluxos diferentes

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, confidencialidade de 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 as despesas desnecessárias e garante a máxima eficiência.

Considere separar fluxos diferentes que estão combinados no momento. 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ê coloca 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 diminuir a velocidade do mecanismo de dados. Quando você desacopla fluxos, o mecanismo de dados pode dimensionar cada componente ou serviço de forma independente com base na demanda de carga de trabalho. Essa desacoplamento 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 o uso mais eficiente de recursos, levando a uma economia de custos significativa. Tipos semelhantes de fluxos compartilham atributos semelhantes. Você pode considerar os mesmos atributos que observa ao separar fluxos diferentes: requisitos computacionais, dependências de dados, operações de E/S, sensibilidade de 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 ao serviço relevante. Isso facilita o gerenciamento e também reduz os custos.

  • Processamento de log. 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 compartilhado. Essa abordagem minimiza o número de instâncias ativas, o que se traduz em economia direta de custos.

  • 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 SSO (logon único) ou um serviço de autenticação comum reduz essa duplicação e otimiza o uso de recursos, o que reduz os custos.

Risco: não se engane por coincidência com design. Dois fluxos semelhantes não necessariamente servem à mesma finalidade. Você precisa entender a função e o design de cada fluxo antes de mesclá-los ou alterá-los. Interpretar incorretamente um fluxo concentrando-se apenas em sua aparência pode levar a consequências não intencionais e interromper o serviço ou processo ao qual ele dá suporte. Se vários fluxos atenderem à mesma função e não houver diferenças perceptíveis em seu design ou intenção, considere consolidá-los.

Monitorar fluxos continuamente

A natureza dos fluxos e das cargas de trabalho pode mudar ao longo do tempo, portanto, você precisa examinar os gastos de fluxo para garantir que os custos se alinhem às 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 em que os recursos são subutilizados. Essa análise ajuda você a identificar oportunidades de otimização de custos. Aqui estão algumas considerações a serem consideradas ao examinar a utilização do fluxo:

  • Analisar 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 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 excesso de provisionamento.

  • Monitorar métricas relevantes. Determine as métricas que podem ajudá-lo a avaliar a eficiência e 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 volume de 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 da manutenção, especialmente quando você usa soluções de infraestrutura como serviço, como máquinas virtuais. Você precisa considerar atividades como aplicação de patch, atualizações, backups, monitoramento e segurança.

Durante sua análise, identifique quaisquer ineficiências ou áreas em que os recursos não são utilizados efetivamente. 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 de Usuário no Application Insights fornece uma representação visual da navegação do usuário nas páginas e recursos do seu site. Essa ferramenta ajuda a identificar áreas em que os usuários frequentemente saem, repetem ações ou seguem caminhos específicos. Comparando 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 propriedade personalizada 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 seus logs de aplicativo e infraestrutura, identificar tendências e otimizar os 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.