REL07-BP01: Usar automação ao obter ou escalar recursos - Framework Well-Architected da AWS

REL07-BP01: Usar automação ao obter ou escalar recursos

Ao substituir recursos danificados ou escalar sua workload, automatize o processo por meio dos serviços gerenciados da AWS, como o Amazon S3 e o AWS Auto Scaling. Também é possível usar ferramentas de terceiros e os AWS SDKs para automatizar o ajuste de escala.

Os serviços gerenciados da AWS incluem Amazon S3, Amazon CloudFront, AWS Auto Scaling, AWS Lambda, Amazon DynamoDB, AWS Fargate e Amazon Route 53.

O AWS Auto Scaling permite detectar e substituir instâncias danificadas. Ele também permite criar planos de ajuste de escala para recursos, incluindo instâncias do Amazon EC2 e frotas spot, tarefas do Amazon ECS, tabelas e índices do Amazon DynamoDB e réplicas do Amazon Aurora.

Ao escalar instâncias do EC2, use várias zonas de disponibilidade (de preferência, pelo menos três) e adicione ou remova capacidade para manter o equilíbrio entre essas zonas de disponibilidade. As tarefas do ECS ou pods do Kubernetes (quando o Amazon Elastic Kubernetes Service é usado) também devem ser distribuídos em várias zonas de disponibilidade.

Ao usar o AWS Lambda, as instâncias são escaladas automaticamente. Sempre que uma notificação de evento é recebida para sua função, o AWS Lambda localiza rapidamente a capacidade livre dentro de sua frota de computação e executa seu código até a simultaneidade alocada. Você precisa garantir que a simultaneidade necessária esteja configurada no Lambda específico e em suas cotas de serviço.

O Amazon S3 escala automaticamente para lidar com altas taxas de solicitação. Por exemplo, a aplicação pode atingir, pelo menos, 3.500 solicitações PUT/POST/DELETE ou 5.500 solicitações GET/HEAD por segundo por prefixo em um bucket. Não há limite para o número de prefixos em um bucket. Você pode aumentar sua performance de leitura ou gravação paralelizando as leituras. Por exemplo, se você criar 10 prefixos em um bucket do Amazon S3 para paralelizar leituras, poderá escalar a performance de leitura para 55.000 solicitações de leitura por segundo.

Configure e use o Amazon CloudFront ou uma rede de entrega de conteúdo (CDN) confiável. Uma CDN pode fornecer tempos de resposta mais rápidos para o usuário final e atender às solicitações de conteúdo do cache, reduzindo assim a necessidade de escalar sua workload.

Práticas comuns que devem ser evitadas:

  • Implementar grupos do Auto Scaling para autocorreção, mas não implementar elasticidade.

  • Usar o ajuste de escala automático para responder a grandes aumentos no tráfego.

  • Implantar aplicações com nível elevado de estado, eliminando a opção de elasticidade.

Benefícios de implementar esta prática recomendada: a automação elimina a possibilidade de erros manuais na implantação e na desativação de recursos. A automação remove o risco de custos excedentes e de negação de serviço decorrentes da lentidão na resposta às necessidades de implantação ou de desativação.

Nível de risco exposto se esta prática recomendada não for estabelecida: Alto

Orientação para implementação

  • Configure e use o AWS Auto Scaling. Ele monitora suas aplicações e ajusta automaticamente a capacidade para manter uma performance estável e previsível com o menor custo possível. Ao usar o AWS Auto Scaling, você pode configurar o ajuste de escala da aplicação para vários recursos em diversos serviços.

  • Use o Elastic Load Balancing. Os balanceadores de carga podem distribuir a carga por caminho ou por conectividade de rede.

    • O que é Elastic Load Balancing?

      • Os Application Load Balancers podem distribuir a carga por caminho.

      • Os Network Load Balancers podem distribuir a carga por conexão.

        • O que é um Network Load Balancer?

          • Configure um Network Load Balancer para distribuir o tráfego para workloads diferentes por meio do TCP ou para ter um conjunto constante de endereços IP para a workload.

          • Os Network Load Balancers podem ser usados para distribuir as cargas de maneira integrada ao AWS Auto Scaling a fim de gerenciar a demanda.

  • Use um provedor DNS altamente disponível. Os nomes DNS permitem que os usuários insiram nomes, em vez de endereço IP, para acessar suas workloads e distribuem essas informações a um escopo definido, em geral, globalmente para usuários da workload.

    • Use o Amazon Route 53 ou um provedor de DNS confiável.

    • Use o Route 53 para gerenciar os balanceadores de carga e as distribuições do CloudFront.

      • Determine os domínios e subdomínios que serão gerenciados.

      • Crie conjuntos de registros adequados com os registros ALIAS ou CNAME.

  • Use a rede global da AWS para otimizar o caminho dos seus usuários para suas aplicações. AWS O Global Accelerator monitora continuamente a integridade dos endpoints da aplicação e redireciona o tráfego para endpoints íntegros em menos de 30 segundos.

    • O AWS Global Accelerator é um serviço que melhora a disponibilidade e a performance de suas aplicações com usuários locais ou globais. Ele fornece endereços IP estáticos que atuam como um ponto de entrada fixo para os endpoints de sua aplicação em uma ou várias Regiões da AWS, como Application Load Balancers, Network Load Balancers ou instâncias do Amazon EC2.

  • Configure e use o Amazon CloudFront ou uma rede de entrega de conteúdo (CDN) confiável. Uma rede de entrega de conteúdo pode fornecer tempos mais rápidos de resposta ao usuário final e atender a solicitações de conteúdo que podem causar ajuste de escala desnecessário das suas workloads.

    • O que é o Amazon CloudFront?

      • Configure as distribuições do Amazon CloudFront para suas workloads ou use uma CDN de terceiros.

        • É possível limitar o acesso às suas workloads somente pelo CloudFront com o uso de intervalos de IPs para o CloudFront em seus grupos de segurança ou suas políticas de acesso de endpoint.

Recursos

Documentos relacionados: