Amazon RDS 프록시를 사용하여 애플리케이션 확장성, 성능 및 가용성 향상 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon RDS 프록시를 사용하여 애플리케이션 확장성, 성능 및 가용성 향상

Anand Komandooru, Noorul Hasan, Venkat Nalajala 및 Varun Kumar 공저, Amazon Web Services(AWS)

2022년 10월

이 가이드에서는 데이터베이스 연결 풀링의 필요성, 자체 호스팅 솔루션 구현과 관련된 과제, Amazon Web Services(AWS)의 애플리케이션 아키텍처에서 Amazon RDS for PostgreSQL과 함께 Amazon Relational Database Service(RDS) 프록시를 사용할 때의 이점을 안내합니다.

챌린지

PostgreSQL은 process-per-user 클라이언트/서버 모델을 사용하여 구현됩니다. 새 연결이 수신되면 기본 프로세스는 이 새 연결을 처리하기 위한 하위 프로세스를 시작합니다. 그러면 기본 프로세스가 다음 연결을 기다리고 하위 프로세스가 이 새 클라이언트 연결과 관련된 모든 활동을 처리합니다. 데이터베이스에서 수신한 각 새 연결에 대해 새 하위 프로세스가 시작됩니다.

현대의 서버리스 아키텍처를 기반으로 구축된 애플리케이션을 비롯한 많은 애플리케이션이 데이터베이스 서버에 대한 개방형 연결을 많이 가질 수 있습니다. 이러한 애플리케이션은 빠른 속도로 데이터베이스 연결을 열고 닫아 데이터베이스 메모리와 컴퓨팅 리소스를 소진할 수 있습니다.

연결을 자주 열고 닫는 트랜잭션 애플리케이션은 연결 지연 시간이 더 길어서 초당 트랜잭션 수가 줄어듭니다. 이로 인해 애플리케이션 지연 시간이 늘어납니다.

기본 데이터베이스 인스턴스에 액세스할 수 없게 되면 장애 조치가 발생하고 다른 인스턴스가 새 기본 인스턴스가 됩니다. 이로 인해 클라이언트 연결이 중단됩니다. 롤링 업그레이드와 같은 관리 작업으로 인해 발생하는 장애 조치는 계획된 것이고, 장애로 인해 발생하는 장애 조치는 계획되지 않은 것입니다. 두 경우 모두 운영자는 가동 중지 시간을 줄여 클라이언트 중단을 최소화해야 합니다.

통례

애플리케이션 확장성 및 성능 문제를 해결하기 위해 연결 풀이 사용됩니다. 연결 풀링은 기존 연결을 재사용하여 연결 지연 시간을 크게 줄이고 서버의 데이터베이스 처리량(초당 트랜잭션 수)을 늘릴 수 있습니다. 연결 풀은 연결 풀에서 즉시 제공할 수 없는 애플리케이션 연결을 대기열에 넣거나 제한합니다.

이러한 연결 풀링을 구현한 후 추가적인 문제가 발생합니다. 운영자는 연결 풀링 서비스를 운영하기 위해 인프라와 소프트웨어를 직접 관리해야 합니다. 장애 조치 이벤트를 처리하려면 애플리케이션 개발자가 모든 애플리케이션의 연결 복잡성을 관리해야 합니다. 애플리케이션은 연결 실패를 탐지하고, 새 기본 서버를 검색하고, 가능한 한 빨리 다시 연결해야 합니다.

권장 사항

자체 호스팅 연결 풀링 솔루션과 관련된 문제를 줄이면서 이점을 활용하려면 워크로드에 대해 Amazon RDS 프록시를 평가하는 것이 좋습니다.

RDS 프록시는 완전관리형 고가용성 데이터베이스 프록시입니다. RDS 프록시는 연결 풀링을 사용하여 애플리케이션의 확장성을 높이고, 데이터베이스 장애에 대한 복원력을 높이고, 보안을 강화합니다.