

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
<a name="introduction"></a>



*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](https://aws.amazon.com/rds/proxy/) com o Amazon RDS para PostgreSQL em uma arquitetura de aplicações na Amazon Web Services (AWS).

## Desafio
<a name="challenge"></a>

[O PostgreSQL é implementado usando um modelo. process-per-user client/server ](https://www.postgresql.org/docs/8.3/connect-estab.html) 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
<a name="common-practice"></a>

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
<a name="recommendation"></a>

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](https://aws.amazon.com/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](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-proxy.howitworks.html#rds-proxy-connection-pooling) para tornar as aplicações mais escaláveis, mais resilientes às falhas do banco de dados e mais seguros.