View a markdown version of this page

Considerações de design para suas aplicações Elastic Beanstalk - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Considerações de design para suas aplicações Elastic Beanstalk

Como os aplicativos implantados usam recursos AWS Elastic Beanstalk executados com Nuvem AWS recursos, você deve ter em mente vários fatores de configuração para otimizar seus aplicativos: escalabilidade, segurança, armazenamento persistente, tolerância a falhas, entrega de conteúdo, atualizações e patches de software e conectividade. Cada um desses fatores é abordado separadamente neste tópico. Para obter uma lista abrangente de AWS whitepapers técnicos, abordando tópicos como arquitetura, segurança e economia, consulte Whitepapers sobre computação em AWS nuvem.

Escalabilidade

Quando estiver operando em um ambiente de hardware físico, não em um ambiente de nuvem, você pode abordar a escalabilidade de uma das duas maneiras. Você pode aumentar a escala na vertical ou aumentar a escala na horizontal. A abordagem de aumentar a escala na vertical exige que você invista em hardware poderoso, que possa suportar as demandas crescentes de seus negócios. A abordagem de aumentar a escala na horizontal exige que você adote um modelo de investimento distribuído. Dessa maneira, suas aquisições de hardware e de aplicações podem ser mais direcionadas, seus conjuntos de dados são federados e seu design é orientado a serviço. A abordagem de aumentar a escala vertical pode ser cara e ainda há o risco de que a demanda supere a capacidade. Nesse aspecto, a abordagem de aumentar a escala na horizontal geralmente é mais eficaz. Entretanto, quando usar essa abordagem, você deve ser capaz de prever a demanda em intervalos regulares e implantar a infraestrutura em blocos para atender a essa demanda. Por isso, essa abordagem, muitas vezes, pode resultar em capacidade não utilizada e exigir monitoramento cuidadoso.

Migrando para a nuvem, você pode alinhar bem a infraestrutura com a demanda, aproveitando a elasticidade da nuvem. A elasticidade ajuda a otimizar a aquisição e a liberação de recursos. Com ela, a escalda da infraestrutura pode aumentar e diminuir rapidamente, de acordo com a flutuação de demanda. Para usá-la, configure a autoescalabilidade para aumentar ou diminuir a escala com base nas métricas dos recursos de ambiente (uso dos servidores ou E/S de rede, por exemplo). Por exemplo, você pode definir métricas como utilização do servidor ou rede I/O. Você pode usar o Auto Scaling para que a capacidade de computação seja adicionada automaticamente sempre que o uso aumentar e para que ela seja removida sempre que o uso diminuir. Você pode publicar métricas do sistema (por exemplo, CPU, memória I/O, disco e rede I/O) na Amazon CloudWatch. Em seguida, você pode usar CloudWatch para configurar alarmes para acionar ações de Auto Scaling ou enviar notificações com base nessas métricas. Para obter mais instruções sobre como configurar a autoescalabilidade, consulte Ajuste de escala automático das instâncias do seu ambiente do Elastic Beanstalk.

Também recomendamos que você crie todas as aplicações do Elastic Beanstalk o mais sem estado possível, usando componentes com baixo acoplamento e tolerantes a falhas, cuja escala possa ser aumentada conforme necessário. Para obter mais informações sobre como projetar arquiteturas de aplicativos escaláveis para AWS, consulte AWS Well-Architected Framework.

Segurança

A segurança AWS ativada é uma responsabilidade compartilhada. A Amazon Web Services protege os recursos físicos do ambiente e garante que a nuvem seja um lugar seguro para a execução de aplicações. Você é responsável pela segurança dos dados que chegam e saem do ambiente do Elastic Beanstalk e pela segurança da aplicação.

Configure o SSL para proteger os fluxos entre a aplicação e os clientes. Para configurar o SSL, você precisa de um certificado gratuito do Gerenciador de certificados da AWS (ACM). Se já tiver um certificado emitido por uma autoridade de certificação (CA) externa, você poderá usar o ACM para importar esse certificado. Caso contrário, você pode importá-lo usando AWS CLI o.

Se o ACM não estiver disponível no seu Região da AWS, você poderá comprar um certificado de uma CA externa, como VeriSign a Entrust. Em seguida, use o AWS Command Line Interface (AWS CLI) para carregar um certificado e uma chave privada de terceiros ou autoassinados para AWS Identity and Access Management (IAM). A chave pública do certificado autentica o seu servidor para o navegador. Também serve como base para criar a chave de sessão compartilhada que criptografa os dados nas duas direções. Para obter instruções sobre como criar, carregar e atribuir um certificado SSL para o ambiente, consulte Configurar HTTPS para o seu ambiente do Elastic Beanstalk.

Quando você configura um certificado SSL para o ambiente, os dados são criptografados entre o cliente e o balanceador de carga do Elastic Load Balancing do ambiente. Por padrão, a criptografia é terminada no balanceador de carga, e o tráfego entre o balanceador de carga e as instâncias do Amazon EC2 não é criptografado.

Armazenamento persistente

As aplicações do Elastic Beanstalk são executadas nas instâncias do Amazon EC2 que não têm armazenamento local persistente. Isso vale tanto para o Beanstalk Standard quanto para o Beanstalk Cluster, no qual as instâncias do Amazon EC2 são executadas sob um cluster do Amazon EKS. Quando as instâncias do Amazon EC2 são terminadas, o sistema de arquivos local não é salvo. Novas instâncias do Amazon EC2 começam com um sistema de arquivos padrão. Recomendamos que você configure sua aplicação para armazenar dados em uma origem dos dados persistente. A AWS oferece vários serviços de armazenamento persistente que você pode usar em sua aplicação. Veja-os na tabela a seguir.

nota

O Elastic Beanstalk Standard cria um usuário de webapp para você configurar como proprietário dos diretórios de aplicativos nas instâncias do EC2. Para as versões da plataforma Amazon Linux 2 lançadas a partir de 3 de fevereiro de 2022, o Elastic Beanstalk atribui ao usuário webapp um valor de uid (id do usuário) e gid (id do grupo) de 900 para novos ambientes. Ele faz o mesmo para os ambientes existentes após uma atualização de versão da plataforma. Essa abordagem mantém uma permissão consistente de acesso. ao armazenamento do sistema de arquivos permanente para o usuário webapp.

Na situação improvável de que outro usuário ou processo já esteja usando 900, o sistema operacional usa, por padrão, outro valor para o uid e o gid do usuário webapp. Execute o comando id webapp do Linux em suas instâncias do EC2 para verificar os valores uid e gid atribuídos ao usuário webapp.

Tolerância a falhas

Como regra geral, seja pessimista ao projetar a arquitetura para a nuvem. Aproveite a elasticidade que ela oferece. Sempre projete, implemente e implante visando a recuperação automatizada de falha. Use várias zonas de disponibilidade para seus recursos de computação e armazenamento. As zonas de disponibilidade são conceitualmente semelhantes a datacenters lógicos. Use CloudWatch a Amazon para obter mais visibilidade da integridade do seu aplicativo Elastic Beanstalk e tomar as medidas apropriadas em caso de falha de hardware ou degradação do desempenho. Com o Beanstalk Standard, defina suas configurações de Auto Scaling para manter sua frota de instâncias do Amazon EC2 para que instâncias não íntegras sejam substituídas por novas. Com o Beanstalk Cluster, o Amazon EKS reprograma suas cargas de trabalho longe de nós não íntegros e as substitui automaticamente. Se você estiver usando o Amazon RDS, defina o período de retenção de backups, para que o Amazon RDS possa fazer backups automatizados.

Entrega de conteúdo

Quando os usuários se conectam ao seu site, suas solicitações podem ser roteadas por meio de várias redes individuais. Como resultado, os usuários podem experimentar uma performance insatisfatória devido à alta latência. A Amazon CloudFront pode ajudar a amenizar os problemas de latência distribuindo seu conteúdo da web, como imagens e vídeos, em uma rede de pontos de presença em todo o mundo. As solicitações dos usuários são encaminhadas para o ponto de presença mais próximo, para que o conteúdo seja entregue com o melhor desempenho possível. CloudFront funciona perfeitamente com o Amazon S3, que armazena de forma durável as versões originais e definitivas dos seus arquivos. Para obter mais informações sobre a Amazon CloudFront, consulte o Guia do CloudFront desenvolvedor da Amazon.

Atualizações e correções de software

O Elastic Beanstalk Standard lança regularmente atualizações de plataforma para fornecer correções, atualizações de software e novos recursos. O Elastic Beanstalk oferece várias opções de como lidar com atualizações de plataforma. As atualizações da plataforma gerenciadas atualizam automaticamente o ambiente para a versão mais recente da plataforma durante uma janela de manutenção programada, enquanto sua aplicação está em manutenção. Em ambientes criados a partir de 25 de novembro de 2019 usando o console do Elastic Beanstalk, as atualizações gerenciadas são habilitadas por padrão sempre que possível. Você também pode iniciar atualizações manualmente usando o console do Elastic Beanstalk ou a CLI do EB.

O Elastic Beanstalk Cluster atualiza automaticamente os clusters do Amazon EKS e os complementos do Kubernetes em execução nesses clusters para fornecer correções, atualizações de software e novos recursos.

Conectividade

O Elastic Beanstalk precisa ser capaz de se conectar a instâncias do ambiente para concluir as implantações. Na implantação de uma aplicação do Elastic Beanstalk em uma Amazon VPC, a configuração necessária para permitir a conectividade depende do tipo de ambiente da Amazon VPC que você cria:

  • Para ambientes padrão de instância única, nenhuma configuração adicional é necessária. Isso porque, com esses ambientes, o Elastic Beanstalk atribui a cada instância do Amazon EC2 um endereço de IP elástico público, o que permite que a instância se comunique diretamente com a Internet.

  • Para os ambientes com balanceamento de carga e escaláveis em uma Amazon VPC com sub-redes públicas e privadas, faça o seguinte:

    • Crie um balanceador de carga na sub-rede pública para rotear o tráfego de entrada da Internet para as instâncias do Amazon EC2.

    • Crie um dispositivo de Tradução de Endereço de Rede (NAT) para rotear o tráfego de saída das instâncias do Amazon EC2 em sub-redes privadas para a Internet.

    • Crie regras de roteamento de entrada e de saída para as instâncias do Amazon EC2 dentro da sub-rede privada.

    • Se você estiver usando uma instância NAT, configure os grupos de segurança para a instância NAT e as instâncias do Amazon EC2 para habilitar a comunicação com a Internet.

  • Para um ambiente escalável e com balanceamento de carga em uma Amazon VPC que tenha uma sub-rede pública, nenhuma configuração adicional é necessária. Isso porque, com esse ambiente, suas instâncias do Amazon EC2 são configuradas com um endereço IP público que permite que as instâncias se comuniquem com a Internet.

Para obter mais informações sobre como usar o Elastic Beanstalk com a Amazon VPC, consulte Usar o Elastic Beanstalk com Amazon VPC.