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 com fluxo muitas vezes 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, ao mesmo tempo, manter o desempenho. Essa otimização é crucial porque garante uma 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 fluxos de uma carga de trabalho, corre o risco de gastar demais com recursos, o que resulta em custos operacionais inflacionados e lucratividade diminuída.
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. |
Fluxo | 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 permitir fluxos de usuário ou funcionalidade de carga de trabalho. |
Fluxo de utilizador | Os caminhos ou sequências de ações que os usuários executam dentro de um aplicativo ou sistema. |
Principais estratégias de design
Investir mais em fluxos de alta prioridade do que em fluxos de baixa prioridade. O alinhamento da prioridade dos fluxos com as despesas pode implicar a dissociação dos fluxos que atualmente partilham 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 fluxos ou combinar fluxos:
Fluxos separados. Por exemplo, você pode separar 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, por isso é 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 intensivas 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 concentra-se nos seguintes tipos de fluxo:
Fluxos do sistema. A otimização dos fluxos do sistema envolve a simplificação da comunicação e interação entre os componentes do sistema, minimizando gargalos e garantindo a utilização eficiente dos recursos.
Fluxos de usuários. 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 abrangente e uma descrição 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 fluxos é o primeiro passo para garantir que os investimentos estejam alinhados com a prioridade dos fluxos. Você só deve otimizar os fluxos quando entender completamente seu propósito e dependências. Aqui estão as etapas para criar um inventário de fluxos de carga de trabalho:
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.
Visualize fluxos. Para obter uma perspetiva mais clara, represente suas descobertas visualmente, possivelmente em fluxogramas ou diagramas. As visualizações ajudam a ver as interdependências entre os componentes. Considere usar uma ferramenta como o Visio para ajudá-lo com as visualizações.
Categorizar fluxos. Agrupe fluxos semelhantes, levando em consideração 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).
Priorizar 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 os 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 do fluxo. Para priorizar fluxos, considere as seguintes etapas:
Identifique 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 a pena. Em vez de simplesmente cortar custos, considere mudar 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 o desempenho, a disponibilidade ou os gastos com 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 atribuídas a eles. Os fluxos críticos geralmente têm requisitos de alta disponibilidade e SLAs (Service Level Agreements, 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 estranhos 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 melhorar 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 recursos que se alinhe bem com os requisitos específicos de cada fluxo.
Ajuste as configurações de dimensionamento. Se um fluxo tiver uma demanda variável, considere a implementação do 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 melhor se alinhar com os requisitos de desempenho e orçamento do fluxo.
Fluxos diferentes separados
Separar fluxos diferentes em recursos diferentes é um processo de alocação de tarefas distintas com necessidades computacionais variáveis 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. Muitas vezes, é mais eficiente em termos de custos executar diferentes tipos de fluxos em recursos separados. Isso permite uma 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ê colocalize o CRM (fluxo de usuário) com um mecanismo de dados (fluxo de dados). O tráfego de usuários para o sistema CRM durante o horário de expediente 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 de 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 usar recursos compartilhados para eles. Esta estratégia elimina redundâncias e garante uma utilização mais eficiente dos recursos, conduzindo a poupanças de custos significativas. Tipos semelhantes de fluxos compartilham atributos semelhantes. Você pode considerar os mesmos atributos que você observa quando separa 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 partilhado, emparelhado com um proxy reverso, pode gerir e encaminhar eficazmente o tráfego para várias aplicações.
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 a gestão e também reduz 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 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 logon único (SSO) ou de 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 confunda coincidência com design. Dois fluxos que parecem semelhantes não servem necessariamente o mesmo propósito. Você precisa entender a função e o design de cada fluxo antes de fundi-los ou alterá-los. Interpretar mal um fluxo concentrando-se apenas na 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 servirem a mesma função e não houver diferenças discerníveis em seu design ou intenção, considere consolidá-los.
Monitore os fluxos continuamente
A natureza dos fluxos e cargas de trabalho pode mudar ao longo do tempo, portanto, você precisa revisar os gastos de 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 de rede associados a cada fluxo. Identificar 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 analisar a utilização do fluxo:
Analise padrões de uso. Analisar os padrões de utilização dos fluxos. Alguns fluxos podem ser mais ativos durante determinados momentos 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 provisionamento excessivo.
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 de armazenamento. Use ferramentas de monitoramento para coletar métricas detalhadas sobre o uso e o desempenho dos 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 patches, atualizações, backups, monitoramento e segurança.
Durante a análise, identifique quaisquer ineficiências ou áreas em que os recursos não sejam 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
Priorização, otimização e monitoramento de fluxos: a ferramenta User Flow no Application Insights fornece uma representação visual da navegação do usuário nas páginas e recursos do seu site. Esta 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 os resultados e objetivos previstos, você pode identificar fluxos críticos. Ele também permite que você otimize possíveis problemas, como altas taxas de rotatividade, ações repetitivas ou falhas de design. A ferramenta também permite a filtragem personalizada de propriedades através de dimensões, oferecendo uma análise mais personalizada.
O Azure Monitor ajuda-o a obter informações sobre o desempenho e o estado de funcionamento das suas aplicações. Ele fornece recursos de monitoramento e diagnóstico. Esses recursos permitem identificar gargalos de desempenho, otimizar a utilização de recursos e detetar e solucionar problemas que possam 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 informações sobre seus logs de aplicativos 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.
Ligações relacionadas
Lista de verificação de otimização de custos
Consulte o conjunto completo de recomendações.