Ao executar uma pilha de aplicativos em recursos distribuídos na nuvem, o tráfego de rede deve ser roteado de forma eficiente para os recursos disponíveis em vários locais. Esta parte do Google Cloud O guia de confiabilidade de infraestrutura descreve técnicas de gerenciamento de tráfego e carga que você pode usar para ajudar a melhorar a confiabilidade de suas cargas de trabalho na nuvem.
Planejamento de capacidade
Para garantir que seu aplicativo seja implantado em Google Cloud tiver recursos de infraestrutura adequados, você deverá estimar a capacidade necessária e gerenciar a capacidade implantada. Esta seção fornece diretrizes para ajudá-lo a planejar e gerenciar a capacidade.
Preveja a carga do aplicativo
Ao prever a carga, considere fatores como o número de usuários e a taxa na qual o aplicativo poderá receber solicitações. Nas suas previsões, considere tendências históricas de carga, variações sazonais, picos de carga durante eventos especiais e crescimento impulsionado por mudanças nos negócios, como expansão para novas geografias.
Estimar requisitos de capacidade
Com base na sua arquitetura de implantação e considerando os objetivos de desempenho e confiabilidade do seu aplicativo, estime a quantidade deGoogle Cloud recursos necessários para lidar com a carga esperada. Por exemplo, se você planeja usar grupos de instâncias gerenciadas (MIGs) do Compute Engine, decida o tamanho de cada MIG, tipo de máquina de VM e o número, tipo e tamanho dos discos permanentes. Você pode usar o Google Cloud Calculadora de preços para estimar o custo do Google Cloud recursos.
Planeje redundância adequada
Ao estimar os requisitos de capacidade, forneça redundância adequada para cada componente da pilha de aplicativos. Por exemplo, para obter redundância N+1 , cada componente na pilha de aplicativos deve ter pelo menos um componente redundante além do mínimo necessário para lidar com a carga prevista.
Compare o aplicativo
Execute testes de carga para determinar a eficiência de recursos do seu aplicativo. A eficiência de recursos é a relação entre a carga do aplicativo e os recursos, como CPU e memória, que o aplicativo consome. A eficiência dos recursos de um aplicativo pode deteriorar-se quando a carga é excepcionalmente alta e a eficiência pode mudar com o tempo. Realize os testes de carga para condições de carga normal e de pico e repita os testes de benchmarking em intervalos regulares.
Gerenciar cotas
Google Cloud as cotas de serviço são limites por projeto, que ajudam a controlar o consumo de recursos da nuvem. As cotas são de dois tipos: As cotas de recursos são o máximo de recursos que você pode criar, como o número de clusters regionais do Google Kubernetes Engine (GKE) em uma região. As cotas tarifárias limitam o número de solicitações de API que podem ser enviadas a um serviço em um período específico. As cotas podem ser zonais, regionais ou globais. Revise as cotas de recursos atuais e as cotas de taxas de API para os serviços que você planeja usar em seus projetos. Certifique-se de que as cotas sejam suficientes para a capacidade necessária. Quando necessário, você pode solicitar mais cota .
Reservar capacidade computacional
Para garantir que a capacidade dos recursos do Compute Engine esteja disponível quando necessário, crie reservas. Uma reserva fornece capacidade garantida em uma zona específica para um número específico de VMs de um tipo de máquina escolhido. Uma reserva pode ser específica de um projeto ou compartilhada entre vários projetos. Para mais informações sobre reservas, incluindo considerações de faturamento, consulte Reservas de recursos zonais do Compute Engine .
Monitore a utilização e reavalie os requisitos periodicamente
Depois de implementar os recursos necessários, monitore a utilização da capacidade. Você pode encontrar oportunidades para otimizar custos removendo recursos ociosos. Reavalie periodicamente os requisitos de capacidade e considere quaisquer alterações no comportamento do aplicativo, nos objetivos de desempenho e confiabilidade, na carga do usuário e no seu orçamento de TI.
Escalonamento automático
Quando você executa um aplicativo em recursos distribuídos em vários locais, o aplicativo permanece disponível durante interrupções em um dos locais. Além disso, a redundância ajuda a garantir que os usuários experimentem um comportamento consistente do aplicativo. Por exemplo, quando há um pico na carga, os recursos redundantes garantem que o aplicativo continue a funcionar em um nível previsível. Mas quando a carga do aplicativo é baixa, a redundância pode resultar na utilização ineficiente dos recursos da nuvem.
Por exemplo, o componente do carrinho de compras de um aplicativo de comércio eletrônico pode precisar processar pagamentos de 99,9% dos pedidos em até 200 milissegundos após a confirmação do pedido. Para atender a esse requisito durante períodos de alta carga, você pode provisionar capacidade redundante de computação e armazenamento. Mas quando a carga da aplicação é baixa, uma parte da capacidade aprovisionada pode permanecer não utilizada ou subutilizada. Para remover os recursos não utilizados, seria necessário monitorar a utilização e ajustar a capacidade. O escalonamento automático ajuda a gerenciar a capacidade da nuvem e a manter o nível de disponibilidade necessário sem a sobrecarga operacional do gerenciamento de recursos redundantes. Quando a carga do seu aplicativo aumenta, o escalonamento automático ajuda a melhorar a disponibilidade do aplicativo, provisionando recursos adicionais automaticamente. Durante períodos de baixa carga, o escalonamento automático remove recursos não utilizados e ajuda a reduzir custos.
Certo Google Cloud serviços, como o Compute Engine, permitem configurar o escalonamento automático para os recursos provisionados. Serviços gerenciados como o Cloud Run podem dimensionar a capacidade automaticamente sem que você precise configurar nada. A seguir estão exemplos de Google Cloudserviços que suportam escalonamento automático. Esta lista não é exaustiva.
- Compute Engine: os MIGs permitem dimensionar aplicativos sem estado implantados em VMs do Compute Engine automaticamente para corresponder a capacidade à carga atual. Para obter mais informações, consulte Dimensionamento automático de grupos de instâncias .
- GKE: você pode configurar clusters do GKE para redimensionar automaticamente os pools de nós para corresponder à carga atual. Para obter mais informações, consulte Autoescalador de cluster . Para clusters do GKE provisionados no modo Autopilot , o GKE escalona automaticamente os nós e as cargas de trabalho com base no tráfego.
- Cloud Run: os serviços provisionados no Cloud Run são dimensionados automaticamente para o número de instâncias de contêiner necessárias para lidar com a carga atual. Quando o aplicativo não tem carga, o serviço dimensiona automaticamente o número de instâncias de contêiner para zero. Para obter mais informações, consulte Sobre o escalonamento automático de instâncias de contêiner .
- Funções do Cloud Run: cada solicitação para uma função é atribuída a uma instância da função. Se o volume de solicitações de entrada exceder o número de instâncias de função existentes, as funções do Cloud Run iniciarão automaticamente novas instâncias da função. Para obter mais informações, consulte Ambiente de execução de funções do Cloud Run .
- Bigtable: ao criar um cluster em uma instância do Bigtable, você pode configurar o cluster para escalar automaticamente. O Bigtable monitora a carga de CPU e armazenamento e ajusta o número de nós no cluster para manter as taxas de utilização desejadas que você especifica. Para obter mais informações, consulte Escalonamento automático do Bigtable .
- Dataproc Serverless: quando você envia uma carga de trabalho em lote do Apache Spark, o Dataproc Serverless dimensiona dinamicamente os recursos da carga de trabalho, como o número de executores, para executá-la com eficiência. Para obter mais informações, consulte escalonamento automático do Dataproc Serverless para Spark .
Balanceamento de carga
O balanceamento de carga ajuda a melhorar a confiabilidade do aplicativo, roteando o tráfego apenas para os recursos disponíveis e garantindo que os recursos individuais não sejam sobrecarregados.
Considere as seguintes recomendações de design relacionadas à confiabilidade ao escolher e configurar balanceadores de carga para sua implantação na nuvem.
Tráfego interno de balanceamento de carga
Configure também o balanceamento de carga para o tráfego entre as camadas da pilha de aplicativos, não apenas para o tráfego entre os clientes externos e o aplicativo. Por exemplo, em uma pilha de aplicativos Web de três camadas, você pode usar um balanceador de carga interno para comunicação confiável entre as camadas da Web e do aplicativo.
Escolha um tipo de balanceador de carga apropriado
Para balancear a carga do tráfego externo para um aplicativo distribuído em várias regiões, você pode usar um balanceador de carga global ou vários balanceadores de carga regionais. Para obter mais informações, consulte Benefícios e riscos do balanceamento de carga global para implantações multirregionais .
Se os back-ends estiverem em uma única região e você não precisar dos recursos de balanceamento de carga global, poderá usar um balanceador de carga regional, que é resiliente a interrupções de zona.
Ao escolher o tipo de balanceador de carga, considere outros fatores além da disponibilidade, como controle geográfico sobre terminação TLS, desempenho, custo e tipo de tráfego. Para obter mais informações, consulte Escolha um balanceador de carga .
Configurar verificações de integridade
O escalonamento automático ajuda a garantir que seus aplicativos tenham recursos de infraestrutura adequados para lidar com a carga atual. Mas mesmo quando existem recursos de infraestrutura suficientes, um aplicativo ou partes dele podem não responder. Por exemplo, todas as VMs que hospedam seu aplicativo podem estar no estado RUNNING
. Mas o software aplicativo implantado em algumas VMs pode ter travado. As verificações de integridade do balanceamento de carga garantem que os balanceadores de carga roteem o tráfego do aplicativo apenas para os back-ends que respondem. Se seus back-ends forem MIGs, considere configurar uma camada extra de verificações de integridade para curar automaticamente as VMs que não estão disponíveis. Quando a recuperação automática é configurada para um MIG, as VMs indisponíveis são excluídas proativamente e novas VMs são criadas.
Limitação de taxa
Às vezes, seu aplicativo pode sofrer um aumento rápido ou sustentado na carga. Se o aplicativo não for projetado para lidar com o aumento de carga, o aplicativo ou os recursos que ele utiliza poderão falhar, tornando o aplicativo indisponível. O aumento da carga pode ser causado por solicitações maliciosas, como ataques distribuídos de negação de serviço (DDoS) baseados em rede. Um aumento repentino na carga também pode ocorrer devido a outros motivos, como erros de configuração no software cliente. Para garantir que a sua aplicação possa lidar com carga excessiva, considere aplicar mecanismos de limitação de taxa adequados. Por exemplo, você pode definir cotas para o número de solicitações de API que um Google Cloud serviço pode receber.
As técnicas de limitação de taxa também podem ajudar a otimizar o custo da sua infraestrutura em nuvem. Por exemplo, ao definir cotas no nível do projeto para recursos específicos, você pode limitar a cobrança que o projeto pode incorrer para esses recursos.
Nível de serviço de rede
Google CloudOs níveis de serviço de rede permitem otimizar a conectividade entre sistemas na Internet e seuGoogle Cloud cargas de trabalho. Para aplicativos que atendem usuários globalmente e possuem back-ends em mais de uma região, escolha Premium Tier. O tráfego da Internet entra na rede de alto desempenho do Google no ponto de presença (PoP) mais próximo do sistema de envio. Dentro da rede do Google, o tráfego é roteado do PoP de entrada para o ponto de acesso apropriado. Google Cloud recurso, como uma VM do Compute Engine. O tráfego de saída é enviado pela rede do Google, saindo no PoP mais próximo do destino. Este método de roteamento ajuda a melhorar a percepção de disponibilidade dos usuários, reduzindo o número de saltos de rede entre os usuários e os PoPs mais próximos a eles.
,Quando você executa uma pilha de aplicativos em recursos distribuídos na nuvem, o tráfego de rede deve ser roteado de forma eficiente para os recursos disponíveis em vários locais. Esta parte do Google Cloud O guia de confiabilidade de infraestrutura descreve técnicas de gerenciamento de tráfego e carga que você pode usar para ajudar a melhorar a confiabilidade de suas cargas de trabalho na nuvem.
Planejamento de capacidade
Para garantir que seu aplicativo seja implantado em Google Cloud tiver recursos de infraestrutura adequados, você deverá estimar a capacidade necessária e gerenciar a capacidade implantada. Esta seção fornece diretrizes para ajudá-lo a planejar e gerenciar a capacidade.
Preveja a carga do aplicativo
Ao prever a carga, considere fatores como o número de usuários e a taxa na qual o aplicativo poderá receber solicitações. Nas suas previsões, considere tendências históricas de carga, variações sazonais, picos de carga durante eventos especiais e crescimento impulsionado por mudanças nos negócios, como expansão para novas geografias.
Estimar requisitos de capacidade
Com base na sua arquitetura de implantação e considerando os objetivos de desempenho e confiabilidade do seu aplicativo, estime a quantidade deGoogle Cloud recursos necessários para lidar com a carga esperada. Por exemplo, se você planeja usar grupos de instâncias gerenciadas (MIGs) do Compute Engine, decida o tamanho de cada MIG, tipo de máquina de VM e o número, tipo e tamanho dos discos permanentes. Você pode usar o Google Cloud Calculadora de preços para estimar o custo do Google Cloud recursos.
Planeje redundância adequada
Ao estimar os requisitos de capacidade, forneça redundância adequada para cada componente da pilha de aplicativos. Por exemplo, para obter redundância N+1 , cada componente na pilha de aplicativos deve ter pelo menos um componente redundante além do mínimo necessário para lidar com a carga prevista.
Compare o aplicativo
Execute testes de carga para determinar a eficiência de recursos do seu aplicativo. A eficiência de recursos é a relação entre a carga do aplicativo e os recursos, como CPU e memória, que o aplicativo consome. A eficiência dos recursos de um aplicativo pode deteriorar-se quando a carga é excepcionalmente alta e a eficiência pode mudar com o tempo. Realize os testes de carga para condições de carga normal e de pico e repita os testes de benchmarking em intervalos regulares.
Gerenciar cotas
Google Cloud as cotas de serviço são limites por projeto, que ajudam a controlar o consumo de recursos da nuvem. As cotas são de dois tipos: As cotas de recursos são o máximo de recursos que você pode criar, como o número de clusters regionais do Google Kubernetes Engine (GKE) em uma região. As cotas tarifárias limitam o número de solicitações de API que podem ser enviadas a um serviço em um período específico. As cotas podem ser zonais, regionais ou globais. Revise as cotas de recursos atuais e as cotas de taxas de API para os serviços que você planeja usar em seus projetos. Certifique-se de que as cotas sejam suficientes para a capacidade necessária. Quando necessário, você pode solicitar mais cota .
Reservar capacidade computacional
Para garantir que a capacidade dos recursos do Compute Engine esteja disponível quando necessário, crie reservas. Uma reserva fornece capacidade garantida em uma zona específica para um número específico de VMs de um tipo de máquina escolhido. Uma reserva pode ser específica de um projeto ou compartilhada entre vários projetos. Para mais informações sobre reservas, incluindo considerações de faturamento, consulte Reservas de recursos zonais do Compute Engine .
Monitore a utilização e reavalie os requisitos periodicamente
Depois de implementar os recursos necessários, monitore a utilização da capacidade. Você pode encontrar oportunidades para otimizar custos removendo recursos ociosos. Reavalie periodicamente os requisitos de capacidade e considere quaisquer alterações no comportamento do aplicativo, nos objetivos de desempenho e confiabilidade, na carga do usuário e no seu orçamento de TI.
Escalonamento automático
Quando você executa um aplicativo em recursos distribuídos em vários locais, o aplicativo permanece disponível durante interrupções em um dos locais. Além disso, a redundância ajuda a garantir que os usuários experimentem um comportamento consistente do aplicativo. Por exemplo, quando há um pico na carga, os recursos redundantes garantem que o aplicativo continue a funcionar em um nível previsível. Mas quando a carga do aplicativo é baixa, a redundância pode resultar na utilização ineficiente dos recursos da nuvem.
Por exemplo, o componente do carrinho de compras de um aplicativo de comércio eletrônico pode precisar processar pagamentos de 99,9% dos pedidos em até 200 milissegundos após a confirmação do pedido. Para atender a esse requisito durante períodos de alta carga, você pode provisionar capacidade redundante de computação e armazenamento. Mas quando a carga da aplicação é baixa, uma parte da capacidade aprovisionada pode permanecer não utilizada ou subutilizada. Para remover os recursos não utilizados, seria necessário monitorar a utilização e ajustar a capacidade. O escalonamento automático ajuda a gerenciar a capacidade da nuvem e a manter o nível de disponibilidade necessário sem a sobrecarga operacional do gerenciamento de recursos redundantes. Quando a carga do seu aplicativo aumenta, o escalonamento automático ajuda a melhorar a disponibilidade do aplicativo, provisionando recursos adicionais automaticamente. Durante períodos de baixa carga, o escalonamento automático remove recursos não utilizados e ajuda a reduzir custos.
Certo Google Cloud serviços, como o Compute Engine, permitem configurar o escalonamento automático para os recursos provisionados. Serviços gerenciados como o Cloud Run podem dimensionar a capacidade automaticamente sem que você precise configurar nada. A seguir estão exemplos de Google Cloudserviços que suportam escalonamento automático. Esta lista não é exaustiva.
- Compute Engine: os MIGs permitem dimensionar aplicativos sem estado implantados em VMs do Compute Engine automaticamente para corresponder a capacidade à carga atual. Para obter mais informações, consulte Dimensionamento automático de grupos de instâncias .
- GKE: você pode configurar clusters do GKE para redimensionar automaticamente os pools de nós para corresponder à carga atual. Para obter mais informações, consulte Autoescalador de cluster . Para clusters do GKE provisionados no modo Autopilot , o GKE escalona automaticamente os nós e as cargas de trabalho com base no tráfego.
- Cloud Run: os serviços provisionados no Cloud Run são dimensionados automaticamente para o número de instâncias de contêiner necessárias para lidar com a carga atual. Quando o aplicativo não tem carga, o serviço dimensiona automaticamente o número de instâncias de contêiner para zero. Para obter mais informações, consulte Sobre o escalonamento automático de instâncias de contêiner .
- Funções do Cloud Run: cada solicitação para uma função é atribuída a uma instância da função. Se o volume de solicitações de entrada exceder o número de instâncias de função existentes, as funções do Cloud Run iniciarão automaticamente novas instâncias da função. Para obter mais informações, consulte Ambiente de execução de funções do Cloud Run .
- Bigtable: ao criar um cluster em uma instância do Bigtable, você pode configurar o cluster para escalar automaticamente. O Bigtable monitora a carga de CPU e armazenamento e ajusta o número de nós no cluster para manter as taxas de utilização desejadas que você especifica. Para obter mais informações, consulte Escalonamento automático do Bigtable .
- Dataproc Serverless: quando você envia uma carga de trabalho em lote do Apache Spark, o Dataproc Serverless dimensiona dinamicamente os recursos da carga de trabalho, como o número de executores, para executá-la com eficiência. Para obter mais informações, consulte escalonamento automático do Dataproc Serverless para Spark .
Balanceamento de carga
O balanceamento de carga ajuda a melhorar a confiabilidade do aplicativo, roteando o tráfego apenas para os recursos disponíveis e garantindo que os recursos individuais não sejam sobrecarregados.
Considere as seguintes recomendações de design relacionadas à confiabilidade ao escolher e configurar balanceadores de carga para sua implantação na nuvem.
Tráfego interno de balanceamento de carga
Configure também o balanceamento de carga para o tráfego entre as camadas da pilha de aplicativos, não apenas para o tráfego entre os clientes externos e o aplicativo. Por exemplo, em uma pilha de aplicativos Web de três camadas, você pode usar um balanceador de carga interno para comunicação confiável entre as camadas da Web e do aplicativo.
Escolha um tipo de balanceador de carga apropriado
Para balancear a carga do tráfego externo para um aplicativo distribuído em várias regiões, você pode usar um balanceador de carga global ou vários balanceadores de carga regionais. Para obter mais informações, consulte Benefícios e riscos do balanceamento de carga global para implantações multirregionais .
Se os back-ends estiverem em uma única região e você não precisar dos recursos de balanceamento de carga global, poderá usar um balanceador de carga regional, que é resiliente a interrupções de zona.
Ao escolher o tipo de balanceador de carga, considere outros fatores além da disponibilidade, como controle geográfico sobre terminação TLS, desempenho, custo e tipo de tráfego. Para obter mais informações, consulte Escolha um balanceador de carga .
Configurar verificações de integridade
O escalonamento automático ajuda a garantir que seus aplicativos tenham recursos de infraestrutura adequados para lidar com a carga atual. Mas mesmo quando existem recursos de infraestrutura suficientes, um aplicativo ou partes dele podem não responder. Por exemplo, todas as VMs que hospedam seu aplicativo podem estar no estado RUNNING
. Mas o software aplicativo implantado em algumas VMs pode ter travado. As verificações de integridade do balanceamento de carga garantem que os balanceadores de carga roteem o tráfego do aplicativo apenas para os back-ends que respondem. Se seus back-ends forem MIGs, considere configurar uma camada extra de verificações de integridade para curar automaticamente as VMs que não estão disponíveis. Quando a recuperação automática é configurada para um MIG, as VMs indisponíveis são excluídas proativamente e novas VMs são criadas.
Limitação de taxa
Às vezes, seu aplicativo pode sofrer um aumento rápido ou sustentado na carga. Se o aplicativo não for projetado para lidar com o aumento de carga, o aplicativo ou os recursos que ele usa poderão falhar, tornando o aplicativo indisponível. O aumento da carga pode ser causado por solicitações maliciosas, como ataques distribuídos de negação de serviço (DDoS) baseados em rede. Um aumento repentino na carga também pode ocorrer devido a outros motivos, como erros de configuração no software cliente. Para garantir que a sua aplicação possa lidar com carga excessiva, considere aplicar mecanismos de limitação de taxa adequados. Por exemplo, você pode definir cotas para o número de solicitações de API que um Google Cloud serviço pode receber.
As técnicas de limitação de taxa também podem ajudar a otimizar o custo da sua infraestrutura em nuvem. Por exemplo, ao definir cotas no nível do projeto para recursos específicos, você pode limitar a cobrança que o projeto pode incorrer para esses recursos.
Nível de serviço de rede
Google CloudOs níveis de serviço de rede permitem otimizar a conectividade entre sistemas na Internet e seuGoogle Cloud cargas de trabalho. Para aplicativos que atendem usuários globalmente e possuem back-ends em mais de uma região, escolha Premium Tier. O tráfego da Internet entra na rede de alto desempenho do Google no ponto de presença (PoP) mais próximo do sistema de envio. Dentro da rede do Google, o tráfego é roteado do PoP de entrada para o ponto de acesso apropriado. Google Cloud recurso, como uma VM do Compute Engine. O tráfego de saída é enviado pela rede do Google, saindo no PoP mais próximo do destino. Este método de roteamento ajuda a melhorar a percepção de disponibilidade dos usuários, reduzindo o número de saltos de rede entre os usuários e os PoPs mais próximos a eles.
,Ao executar uma pilha de aplicativos em recursos distribuídos na nuvem, o tráfego de rede deve ser roteado de forma eficiente para os recursos disponíveis em vários locais. Esta parte do Google Cloud O guia de confiabilidade de infraestrutura descreve técnicas de gerenciamento de tráfego e carga que você pode usar para ajudar a melhorar a confiabilidade de suas cargas de trabalho na nuvem.
Planejamento de capacidade
Para garantir que seu aplicativo seja implantado em Google Cloud tiver recursos de infraestrutura adequados, você deverá estimar a capacidade necessária e gerenciar a capacidade implantada. Esta seção fornece diretrizes para ajudá-lo a planejar e gerenciar a capacidade.
Preveja a carga do aplicativo
Ao prever a carga, considere fatores como o número de usuários e a taxa na qual o aplicativo poderá receber solicitações. Nas suas previsões, considere tendências históricas de carga, variações sazonais, picos de carga durante eventos especiais e crescimento impulsionado por mudanças nos negócios, como expansão para novas geografias.
Estimar requisitos de capacidade
Com base na sua arquitetura de implantação e considerando os objetivos de desempenho e confiabilidade do seu aplicativo, estime a quantidade deGoogle Cloud recursos necessários para lidar com a carga esperada. Por exemplo, se você planeja usar grupos de instâncias gerenciadas (MIGs) do Compute Engine, decida o tamanho de cada MIG, tipo de máquina de VM e o número, tipo e tamanho dos discos permanentes. Você pode usar o Google Cloud Calculadora de preços para estimar o custo do Google Cloud recursos.
Planeje redundância adequada
Ao estimar os requisitos de capacidade, forneça redundância adequada para cada componente da pilha de aplicativos. Por exemplo, para obter redundância N+1 , cada componente na pilha de aplicativos deve ter pelo menos um componente redundante além do mínimo necessário para lidar com a carga prevista.
Compare o aplicativo
Execute testes de carga para determinar a eficiência de recursos do seu aplicativo. A eficiência de recursos é a relação entre a carga do aplicativo e os recursos, como CPU e memória, que o aplicativo consome. A eficiência dos recursos de um aplicativo pode deteriorar-se quando a carga é excepcionalmente alta e a eficiência pode mudar com o tempo. Realize os testes de carga para condições de carga normal e de pico e repita os testes de benchmarking em intervalos regulares.
Gerenciar cotas
Google Cloud as cotas de serviço são limites por projeto, que ajudam a controlar o consumo de recursos da nuvem. As cotas são de dois tipos: As cotas de recursos são o máximo de recursos que você pode criar, como o número de clusters regionais do Google Kubernetes Engine (GKE) em uma região. As cotas tarifárias limitam o número de solicitações de API que podem ser enviadas a um serviço em um período específico. As cotas podem ser zonais, regionais ou globais. Revise as cotas de recursos atuais e as cotas de taxas de API para os serviços que você planeja usar em seus projetos. Certifique-se de que as cotas sejam suficientes para a capacidade necessária. Quando necessário, você pode solicitar mais cota .
Reservar capacidade computacional
Para garantir que a capacidade dos recursos do Compute Engine esteja disponível quando necessário, crie reservas. Uma reserva fornece capacidade garantida em uma zona específica para um número específico de VMs de um tipo de máquina escolhido. Uma reserva pode ser específica de um projeto ou compartilhada entre vários projetos. Para mais informações sobre reservas, incluindo considerações de faturamento, consulte Reservas de recursos zonais do Compute Engine .
Monitore a utilização e reavalie os requisitos periodicamente
Depois de implementar os recursos necessários, monitore a utilização da capacidade. Você pode encontrar oportunidades para otimizar custos removendo recursos ociosos. Reavalie periodicamente os requisitos de capacidade e considere quaisquer alterações no comportamento do aplicativo, nos objetivos de desempenho e confiabilidade, na carga do usuário e no seu orçamento de TI.
Escalonamento automático
Quando você executa um aplicativo em recursos distribuídos em vários locais, o aplicativo permanece disponível durante interrupções em um dos locais. Além disso, a redundância ajuda a garantir que os usuários experimentem um comportamento consistente do aplicativo. Por exemplo, quando há um pico na carga, os recursos redundantes garantem que o aplicativo continue a funcionar em um nível previsível. Mas quando a carga do aplicativo é baixa, a redundância pode resultar na utilização ineficiente dos recursos da nuvem.
Por exemplo, o componente do carrinho de compras de um aplicativo de comércio eletrônico pode precisar processar pagamentos de 99,9% dos pedidos em até 200 milissegundos após a confirmação do pedido. Para atender a esse requisito durante períodos de alta carga, você pode provisionar capacidade redundante de computação e armazenamento. Mas quando a carga da aplicação é baixa, uma parte da capacidade aprovisionada pode permanecer não utilizada ou subutilizada. Para remover os recursos não utilizados, seria necessário monitorar a utilização e ajustar a capacidade. O escalonamento automático ajuda a gerenciar a capacidade da nuvem e a manter o nível de disponibilidade necessário sem a sobrecarga operacional do gerenciamento de recursos redundantes. Quando a carga do seu aplicativo aumenta, o escalonamento automático ajuda a melhorar a disponibilidade do aplicativo, provisionando recursos adicionais automaticamente. Durante períodos de baixa carga, o escalonamento automático remove recursos não utilizados e ajuda a reduzir custos.
Certo Google Cloud serviços, como o Compute Engine, permitem configurar o escalonamento automático para os recursos provisionados. Serviços gerenciados como o Cloud Run podem dimensionar a capacidade automaticamente sem que você precise configurar nada. A seguir estão exemplos de Google Cloudserviços que suportam escalonamento automático. Esta lista não é exaustiva.
- Compute Engine: os MIGs permitem dimensionar aplicativos sem estado implantados em VMs do Compute Engine automaticamente para corresponder a capacidade à carga atual. Para obter mais informações, consulte Dimensionamento automático de grupos de instâncias .
- GKE: você pode configurar clusters do GKE para redimensionar automaticamente os pools de nós para corresponder à carga atual. Para obter mais informações, consulte Autoescalador de cluster . Para clusters do GKE provisionados no modo Autopilot , o GKE escalona automaticamente os nós e as cargas de trabalho com base no tráfego.
- Cloud Run: os serviços provisionados no Cloud Run são dimensionados automaticamente para o número de instâncias de contêiner necessárias para lidar com a carga atual. Quando o aplicativo não tem carga, o serviço dimensiona automaticamente o número de instâncias de contêiner para zero. Para obter mais informações, consulte Sobre o escalonamento automático de instâncias de contêiner .
- Funções do Cloud Run: cada solicitação para uma função é atribuída a uma instância da função. Se o volume de solicitações de entrada exceder o número de instâncias de função existentes, as funções do Cloud Run iniciarão automaticamente novas instâncias da função. Para obter mais informações, consulte Ambiente de execução de funções do Cloud Run .
- Bigtable: ao criar um cluster em uma instância do Bigtable, você pode configurar o cluster para escalar automaticamente. O Bigtable monitora a carga de CPU e armazenamento e ajusta o número de nós no cluster para manter as taxas de utilização desejadas que você especifica. Para obter mais informações, consulte Escalonamento automático do Bigtable .
- Dataproc Serverless: quando você envia uma carga de trabalho em lote do Apache Spark, o Dataproc Serverless dimensiona dinamicamente os recursos da carga de trabalho, como o número de executores, para executá-la com eficiência. Para obter mais informações, consulte escalonamento automático do Dataproc Serverless para Spark .
Balanceamento de carga
O balanceamento de carga ajuda a melhorar a confiabilidade do aplicativo, roteando o tráfego apenas para os recursos disponíveis e garantindo que os recursos individuais não sejam sobrecarregados.
Considere as seguintes recomendações de design relacionadas à confiabilidade ao escolher e configurar balanceadores de carga para sua implantação na nuvem.
Tráfego interno de balanceamento de carga
Configure também o balanceamento de carga para o tráfego entre as camadas da pilha de aplicativos, não apenas para o tráfego entre os clientes externos e o aplicativo. Por exemplo, em uma pilha de aplicativos Web de três camadas, você pode usar um balanceador de carga interno para comunicação confiável entre as camadas da Web e do aplicativo.
Escolha um tipo de balanceador de carga apropriado
Para balancear a carga do tráfego externo para um aplicativo distribuído em várias regiões, você pode usar um balanceador de carga global ou vários balanceadores de carga regionais. Para obter mais informações, consulte Benefícios e riscos do balanceamento de carga global para implantações multirregionais .
Se os back-ends estiverem em uma única região e você não precisar dos recursos de balanceamento de carga global, poderá usar um balanceador de carga regional, que é resiliente a interrupções de zona.
Ao escolher o tipo de balanceador de carga, considere outros fatores além da disponibilidade, como controle geográfico sobre terminação TLS, desempenho, custo e tipo de tráfego. Para obter mais informações, consulte Escolha um balanceador de carga .
Configurar verificações de integridade
O escalonamento automático ajuda a garantir que seus aplicativos tenham recursos de infraestrutura adequados para lidar com a carga atual. Mas mesmo quando existem recursos de infraestrutura suficientes, um aplicativo ou partes dele podem não responder. Por exemplo, todas as VMs que hospedam seu aplicativo podem estar no estado RUNNING
. Mas o software de aplicativo implantado em algumas das VMs pode ter travado. As verificações de saúde de balanceamento de carga garantem que os balanceadores de carga rotulem o tráfego de aplicativos apenas para os back-ends que respondem. Se seus back -end forem MIGs, considere configurar uma camada extra de verificações de saúde para que as VMs que não estejam disponíveis. Quando a criação automática é configurada para um MIG, as VMs indisponíveis são excluídas proativamente e novas VMs são criadas.
Limitação da taxa
Às vezes, seu aplicativo pode experimentar um aumento rápido ou sustentado da carga. Se o aplicativo não for projetado para lidar com o aumento da carga, o aplicativo ou os recursos que ele usa podem falhar, tornando o aplicativo indisponível. O aumento da carga pode ser causado por solicitações maliciosas, como ataques de negação de serviço distribuídos baseados em rede (DDOs). Um pico repentino na carga também pode ocorrer devido a outros motivos, como erros de configuração no software cliente. Para garantir que seu aplicativo possa lidar com a carga excessiva, considere aplicar mecanismos de limitação de taxa adequados. Por exemplo, você pode definir cotas para o número de solicitações de API que um Google Cloud Serviço pode receber.
As técnicas de limitação de taxa também podem ajudar a otimizar o custo da sua infraestrutura em nuvem. Por exemplo, ao definir cotas no nível do projeto para recursos específicos, você pode limitar o faturamento que o projeto pode incorrer nesses recursos.
Nível de serviço de rede
Google CloudAs camadas de serviço de rede permitem otimizar a conectividade entre os sistemas na Internet e seuGoogle Cloud Cargas de trabalho. Para aplicativos que atendem aos usuários globalmente e tenham back -end em mais de uma região, escolha o Nível Premium. O tráfego da Internet entra na rede do Google de alto desempenho no ponto de presença (POP) mais próximo do sistema de envio. Dentro da rede do Google, o tráfego é roteado do pop de entrada para o apropriado Google Cloud Recurso, como uma VM de mecanismo de computação. O tráfego de saída é enviado pela rede do Google, saindo no pop mais próximo do destino. Esse método de roteamento ajuda a melhorar a percepção de disponibilidade dos usuários, reduzindo o número de saltos de rede entre os usuários e os pops mais próximos deles.
,Quando você executa uma pilha de aplicativos em recursos distribuídos na nuvem, o tráfego de rede deve ser roteado com eficiência para os recursos disponíveis em vários locais. Esta parte do Google Cloud O Guia de Confiabilidade da Infraestrutura descreve as técnicas de gerenciamento de tráfego e carga que você pode usar para ajudar a melhorar a confiabilidade das cargas de trabalho em nuvem.
Planejamento de capacidade
Para garantir que seu aplicativo seja implantado em Google Cloud Possui recursos de infraestrutura adequados, você deve estimar a capacidade necessária e gerenciar a capacidade implantada. Esta seção fornece diretrizes para ajudá -lo a planejar e gerenciar a capacidade.
Prevê a carga do aplicativo
Ao prever a carga, considere fatores como o número de usuários e a taxa na qual o aplicativo pode receber solicitações. Nas suas previsões, considere tendências históricas de carga, variações sazonais, picos de carga durante eventos especiais e crescimento impulsionado por mudanças de negócios, como expansão para novas geografias.
Estimar requisitos de capacidade
Com base na sua arquitetura de implantação e considerando os objetivos de desempenho e confiabilidade do seu aplicativo, estime a quantidade deGoogle Cloud Recursos necessários para lidar com a carga esperada. Por exemplo, se você planeja usar grupos de instância gerenciados por mecanismo de computação (MIGs), decida o tamanho de cada tipo de máquina MIG, VM e o número, tipo e tamanho dos discos persistentes. Você pode usar o Google Cloud Calculadora de preços para estimar o custo do Google Cloud recursos.
Planeje redundância adequada
Ao estimar os requisitos de capacidade, forneça redundância adequada para todos os componentes da pilha de aplicativos. Por exemplo, para obter redundância n+1 , todos os componentes da pilha de aplicativos devem ter pelo menos um componente redundante além do mínimo necessário para lidar com a carga prevista.
Comparar o aplicativo
Execute testes de carga para determinar a eficiência do recurso do seu aplicativo. A eficiência dos recursos é a relação entre a carga no aplicativo e os recursos como a CPU e a memória que o aplicativo consome. A eficiência do recurso de um aplicativo pode se deteriorar quando a carga é excepcionalmente alta e a eficiência pode mudar com o tempo. Realize os testes de carga para condições de carga normal e de pico e repita os testes de benchmarking em intervalos regulares.
Gerenciar cotas
Google Cloud As cotas de serviço são limites por projeto, que ajudam a controlar o consumo de recursos em nuvem. As cotas são de dois tipos: as cotas de recursos são os recursos máximos que você pode criar, como o número de clusters regionais do Google Kubernetes Engine (GKE) em uma região. As cotas de taxa limitam o número de solicitações de API que podem ser enviadas para um serviço em um período específico. As cotas podem ser zonas, regionais ou globais. Revise as cotas de recursos atuais e as cotas da taxa de API para os serviços que você planeja usar em seus projetos. Certifique -se de que as cotas sejam suficientes para a capacidade necessária. Quando necessário, você pode solicitar mais cota .
Capacidade de computação de reserva
Para garantir que a capacidade de computar recursos do mecanismo esteja disponível quando necessário, você pode criar reservas. Uma reserva fornece capacidade garantida em uma zona específica para um número especificado de VMs de um tipo de máquina que você escolher. Uma reserva pode ser específica para um projeto ou compartilhada em vários projetos. Para obter mais informações sobre reservas, incluindo considerações de cobrança, consulte Reservas de Recursos Zonais de Compute do Engine .
Monitorar a utilização e reavaliar requisitos periodicamente
Depois de implantar os recursos necessários, monitore a utilização da capacidade. Você pode encontrar oportunidades para otimizar o custo removendo os recursos ociosos. Reavaliar periodicamente os requisitos de capacidade e considerar quaisquer alterações nos objetivos de comportamento, desempenho e confiabilidade do aplicativo, carga do usuário e seu orçamento de TI.
Autocaling
Quando você executa um aplicativo em recursos distribuídos em vários locais, o aplicativo permanece disponível durante interrupções em um dos locais. Além disso, a redundância ajuda a garantir que os usuários experimentem o comportamento consistente do aplicativo. Por exemplo, quando há um pico na carga, os recursos redundantes garantem que o aplicativo continue a executar em um nível previsível. Mas quando a carga no aplicativo é baixa, a redundância pode resultar em utilização ineficiente dos recursos da nuvem.
Por exemplo, o componente do carrinho de compras de um aplicativo de comércio eletrônico pode precisar processar pagamentos para 99,9% dos pedidos em 200 milissegundos após a confirmação do pedido. Para atender a esse requisito durante períodos de alta carga, você pode provisionar a capacidade redundante de computação e armazenamento. Mas quando a carga no aplicativo é baixa, uma parte da capacidade provisionada pode permanecer não utilizada ou subutilizada. Para remover os recursos não utilizados, você precisaria monitorar a utilização e ajustar a capacidade. Autocaling ajuda a gerenciar a capacidade da nuvem e a manter o nível de disponibilidade necessário sem a sobrecarga operacional do gerenciamento de recursos redundantes. Quando a carga em seu aplicativo aumenta, o AUTOSCALING ajuda a melhorar a disponibilidade do aplicativo, provisionando recursos adicionais automaticamente. Durante os períodos de baixa carga, o automóvel remove os recursos não utilizados e ajuda a reduzir o custo.
Certo Google Cloud Serviços, como o Compute Engine, permitem que você configure o AUTOSCALE para os recursos que você provisão. Serviços gerenciados como o Cloud Run podem dimensionar a capacidade automaticamente sem precisar configurar nada. Os seguintes são exemplos de Google CloudServiços que suportam o AUTOSCALENTE. Esta lista não é exaustiva.
- MOTOR DE COMPUTE: MIGS permitem dimensionar aplicativos sem estado que são implantados em VMs de computação de mecanismo automaticamente para corresponder à capacidade com a carga atual. Para mais informações, consulte grupos de instâncias automáticas .
- GKE: Você pode configurar clusters de GKE para redimensionar automaticamente os pools de nós para corresponder à carga atual. Para obter mais informações, consulte o cluster Autoscaler . Para clusters de GKE que você provisiona no modo de piloto automático , o GKE escala automaticamente os nós e cargas de trabalho com base no tráfego.
- Cloud Run: Services que você provisa na nuvem Executar escala automaticamente para o número de instâncias de contêiner necessárias para lidar com a carga atual. Quando o aplicativo não possui carga, o serviço é dimensionado automaticamente no número de instâncias de contêiner para zero. Para obter mais informações, consulte sobre a instância do contêiner automaticamente .
- Funções de execução em nuvem: cada solicitação a uma função é atribuída a uma instância da função. Se o volume de solicitações de entrada exceder o número de instâncias de função existentes, as funções de execução em nuvem iniciarem automaticamente novas instâncias da função. Para obter mais informações, consulte o ambiente de execução de funções da Cloud Run .
- BIGTABLE: Quando você cria um cluster em uma instância BigTable, pode configurar o cluster para escalar automaticamente. A BigTable monitora a CPU e a carga de armazenamento e ajusta o número de nós no cluster para manter as taxas de utilização de destino que você especificar. Para mais informações, consulte BigTable Automoscaling .
- DataProClessless: Quando você envia uma carga de trabalho em lote do Apache Spark, o DataProclessless sem servidor dimensiona os recursos da carga de trabalho, como o número de executores, para executar a carga de trabalho com eficiência. Para obter mais informações, consulte DataProclessless para Spark Autoscaling .
Balanceamento de carga
O balanceamento de carga ajuda a melhorar a confiabilidade do aplicativo, roteando o tráfego para apenas os recursos disponíveis e garantindo que os recursos individuais não sejam sobrecarregados.
Considere as seguintes recomendações de design relacionadas à confiabilidade ao escolher e configurar os balanceadores de carga para sua implantação em nuvem.
Tráfego interno de equilíbrio de carga
Configure o balanceamento de carga para o tráfego entre as camadas da pilha de aplicativos, não apenas para o tráfego entre os clientes externos e o aplicativo. Por exemplo, em uma pilha de aplicativos da Web de três camadas, você pode usar um balanceador de carga interno para comunicação confiável entre as camadas da Web e do aplicativo.
Escolha um tipo de balanceador de carga apropriado
Para facilitar o tráfego externo de um aplicativo distribuído em várias regiões, você pode usar um balanceador de carga global ou vários balanceadores de carga regionais. Para obter mais informações, consulte os benefícios e riscos do balanceamento de carga global para implantações de várias regiões .
Se os back -end estiverem em uma única região e você não precisar dos recursos do balanceamento de carga global, você poderá usar um balanceador de carga regional, que é resiliente para interrupções na zona.
Ao escolher o tipo de balanceador de carga, considere outros fatores além da disponibilidade, como controle geográfico sobre o término, o desempenho, o custo e o tipo de tráfego. Para mais informações, consulte Escolha um balanceador de carga .
Configure verificações de saúde
Autocaling ajuda a garantir que seus aplicativos tenham recursos de infraestrutura adequados para lidar com a carga atual. Mas mesmo quando existem recursos de infraestrutura suficientes, um aplicativo ou partes dela pode não ser responsivo. Por exemplo, todas as VMs que hospedam seu aplicativo podem estar no estado RUNNING
. Mas o software de aplicativo implantado em algumas das VMs pode ter travado. As verificações de saúde de balanceamento de carga garantem que os balanceadores de carga rotulem o tráfego de aplicativos apenas para os back-ends que respondem. Se seus back -end forem MIGs, considere configurar uma camada extra de verificações de saúde para que as VMs que não estejam disponíveis. Quando a criação automática é configurada para um MIG, as VMs indisponíveis são excluídas proativamente e novas VMs são criadas.
Limitação da taxa
Às vezes, seu aplicativo pode experimentar um aumento rápido ou sustentado da carga. Se o aplicativo não for projetado para lidar com o aumento da carga, o aplicativo ou os recursos que ele usa podem falhar, tornando o aplicativo indisponível. O aumento da carga pode ser causado por solicitações maliciosas, como ataques de negação de serviço distribuídos baseados em rede (DDOs). Um pico repentino na carga também pode ocorrer devido a outros motivos, como erros de configuração no software cliente. Para garantir que seu aplicativo possa lidar com a carga excessiva, considere aplicar mecanismos de limitação de taxa adequados. Por exemplo, você pode definir cotas para o número de solicitações de API que um Google Cloud Serviço pode receber.
As técnicas de limitação de taxa também podem ajudar a otimizar o custo da sua infraestrutura em nuvem. Por exemplo, ao definir cotas no nível do projeto para recursos específicos, você pode limitar o faturamento que o projeto pode incorrer nesses recursos.
Nível de serviço de rede
Google CloudAs camadas de serviço de rede permitem otimizar a conectividade entre os sistemas na Internet e seuGoogle Cloud Cargas de trabalho. Para aplicativos que atendem aos usuários globalmente e tenham back -end em mais de uma região, escolha o Nível Premium. O tráfego da Internet entra na rede do Google de alto desempenho no ponto de presença (POP) mais próximo do sistema de envio. Dentro da rede do Google, o tráfego é roteado do pop de entrada para o apropriado Google Cloud Recurso, como uma VM de mecanismo de computação. O tráfego de saída é enviado pela rede do Google, saindo no pop mais próximo do destino. Esse método de roteamento ajuda a melhorar a percepção de disponibilidade dos usuários, reduzindo o número de saltos de rede entre os usuários e os pops mais próximos deles.