Aumentar a escalabilidade, a performance e a disponibilidade da aplicação usando o Amazon RDS Proxy - AWS Orientação prescritiva

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á.

Aumentar a escalabilidade, a performance e a disponibilidade da aplicação usando o Amazon RDS Proxy

Criado por Anand Komandooru, Noorul Hasan, Venkat Nalajala e Varun Kumar, Amazon Web Services (AWS)

Outubro de 2022

Este guia abordará a necessidade de agrupamento de conexões de banco de dados, os desafios associados à implementação de uma solução auto-hospedada e os benefícios de usar o Amazon Relational Database Service (Amazon RDS) Proxy com o Amazon RDS para PostgreSQL em uma arquitetura de aplicações na Amazon Web Services (AWS).

Desafio

O PostgreSQL é implementado usando process-per-user um modelo cliente/servidor. Quando uma nova conexão é recebida, o processo principal inicia um processo filho para lidar com essa nova conexão. O processo principal então aguarda a próxima conexão, e o processo filho cuida de todas as atividades relacionadas a essa nova conexão do cliente. Um novo processo filho é iniciado para cada nova conexão recebida pelo banco de dados.

Muitas aplicações, incluindo aqueles criados em arquiteturas sem servidor modernas, podem ter um grande número de conexões abertas com o servidor de banco de dados. Eles podem abrir e fechar conexões de banco de dados em alta velocidade, esgotando a memória do banco de dados e os recursos computacionais.

Aplicações transacionais que abram e fechem conexões com frequência terão maior latência de conexão, resultando em menos transações por segundo. Isso aumentará a latência da aplicação.

Um failover ocorre quando a instância primária do banco de dados se torna inacessível e outra instância assume o controle como a nova instância primária. Isso interrompe as conexões do cliente. Os failovers podem ser planejados, quando induzidos por ações administrativas, como uma atualização contínua, ou não planejados, quando ocorrem devido a falhas. Em ambos os casos, os operadores devem reduzir o tempo de inatividade para minimizar a interrupção do cliente.

Prática comum

Para enfrentar os desafios de escalabilidade e performance de aplicações, um grupo de conexões é usado. O grupo de conexões reduz significativamente a latência da conexão ao reutilizar as conexões existentes e permite maior throughput do banco de dados (transações por segundo) no servidor. O grupo de conexões enfileira ou acelera conexões de aplicações que não podem ser atendidas imediatamente do grupo de conexões.

Desafios adicionais surgem após a implementação desse grupo de conexões. Os operadores devem autogerenciar a infraestrutura e o software para operar o serviço de agrupamento de conexões. Para lidar com um evento de failover, os desenvolvedores de aplicações devem gerenciar a complexidade da conexão de cada aplicação. A aplicação precisa detectar a falha de conexão, descobrir um novo primário e se reconectar a ele o mais rápido possível.

Recomendação

Para reduzir os desafios associados a uma solução de agrupamento de conexões auto-hospedada e, ao mesmo tempo, aproveitar os benefícios, recomendamos avaliar o Amazon RDS Proxy para suas workloads.

O RDS Proxy é um proxy de banco de dados totalmente gerenciado e altamente disponível. O RDS Proxy usa agrupamento de conexões para tornar as aplicações mais escaláveis, mais resilientes às falhas do banco de dados e mais seguros.