AWS

[AWS RDS] RDS Proxy

SungWookKang 2022. 3. 23. 19:16
반응형

[AWS RDS] RDS Proxy

-          커넥션풀을 관리하여 RDS에서 발생할 있는 연결 오류 오버헤드 방지

 

l  Version : Amazon RDS

 

AWS Relational Database Service(RDS) 관리형 데이터베이스 서비스이다. RDS 제한된 수의 커넥션 연결만 허용하는데 최근 애플리케이션의 패턴이 발전하고, 특히 서버리스 애플리케이션 에서는 많은 수의 DB 커넥션을 발생시킨다. 이렇게 제한된 숫자 이상의 커넥션 연결을 요청하게 되면 데이터베이스는 커넥션 연결 오류가 발생하고 애플리케이션은 정상적인 서비스 제공이 불가능하게 된다. 이러한 문제점을 해결하기 위해서 RDS Proxy(프록시) 사용할 있다.

 

RDS 프록시는 다른 프록시 서비스와 유사하게 작동한다. 기본적으로 미들웨어 역할을 하여 RDS 데이터베이스 인스턴스와 Amazon Aurora 데이터베이스 클러스터로 들어오는 네트워크 트래픽을 구성한다.

 

RDS Proxy 일반 프록시보다 훨씬 많은 기능을 제공한다. RDS 데이터베이스를 위해 특별히 설계되었으며 데이터베이스 프로토콜, 요청 응답 처리, 데이터베이스에서 클라이언트 애플리케이션으로 다시 푸시한 결과를 인식하는 기능이 있다.

RDS 프록시는 DB 연결을 풀링 공유하여 작동하므로 애플리케이션의 확장성과 데이터베이스 오류에 대한 탄력성을 높인다. RDS 프록시 사용의 주요 이점은 아래와 같다.

l  연결 풀링 연결 공유를 사용하여 열려 있는 데이터베이스 연결 수를 줄여 애플리케이션 성능 향상

l  데이터베이스가 애플리케이션 연결을 처리하기 위한 CPU 메모리 절약

l  데이터베이스 장애조치(failover) 같은 오류 시나리오 동안 애플리케이션 가용성을 개선

l  TLS/SSL AWS IAM 포함한 모든 RDS 보안 기능을 사용하여 애플리케이션 코드에서 데이터베이스 연결에 대한 자격증명 불필요

l  RDS Proxy에서 사용하는 리소스는 RDS 데이터베이스용으로 프로비저닝된 리소스와 독립적이므로 데이터베이스에 대한 추가 오버헤드를 발생시키지 않음

 

보안 측면에서 장점을 조금 설명하면, AWS Secrets Manager와도 작동한다. 이상 데이터베이스 자격 증명을 노출하거나 어떤 방식으로든 하드 코딩할 필요가 없다. 따라서 RDS Proxy Secrets Manager 함께 작동하도록 구성하면 엄격한 보안 정책을 시행할 있다. 예를 들어 TLS 활성화하려면 유효한 인증서를 AWS Certificate Manager 추가한 다음 이를 사용하도록 RDS 프록시를 구성하기만 하면 된다. 구성이 ssl-mode 지원하기 때문에 종단 통신에 SSL 사용을 시행하는 것도 편리하다.

 

 

RDS 프록시를 모니터링하는 방법으로는 Amazon CloudWatch 사용하여 모니터링할 있다. CloudWatch RDS 프록시와 통합되어 프록시의 성능과 동작을 이해하는 사용할 있는 유용한 지표를 제공한다. 아래 목록은 모니터링에 사용되는 주요 지표들이다.

l  DatabaseConnections: 백엔드 데이터베이스에 대한 데이터베이스 연결

l  DatabaseConnectionsCurrentlyBorrowed: 현재 애플리케이션에서 사용 중인 연결 . 지표에 대한 알림을 설정하여 빠르게 알림을 받을 있도록 한다.

l  DatabaseConnectionsCurrentlySessionPinned: 고정 상태의 연결 . 숫자는 RDS 프록시 성능을 최대화하려면 이상적으로는 가능한 낮아야 한다.

 

CloudWatch 사용한 RDS Proxy 모니터링에 관한 자세한 내용은 아래 링크를 참고 한다.

l  Monitoring RDS Proxy metrics with Amazon CloudWatch : https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-proxy.monitoring.html

 

 

RDS 프록시에 대한 가지 주요 제한 사항으로는 아래와 같이 정리할 있다.

l  RDS 프록시는 데이터베이스 인스턴스와 동일한 VPC 있어야 한다. 데이터베이스 인스턴스가 있는 경우에도 프록시에 공개적으로 액세스할 없다.

l  RDS 프록시는 자체 관리형 EC2 인스턴스 기반 데이터베이스와 함께 사용할 없다.

l  RDS 프록시는 아직 Aurora Serverless 사용할 없다. 현재  Aurora MySQL, Aurora PostgreSQL, RDS MySQL, RDS PostgreSQL 에서 사용할 있다.

l  프록시는 1개의 데이터베이스 인스턴스에만 연결할 있다.

 

RDS Proxy 구성하는 방법으로는 아래 링크를 참고하여 실습할 있다.

l  AWS RDS Proxy 사용한 공유 데이터베이스 연결 설정 : https://aws.amazon.com/ko/getting-started/hands-on/set-up-shared-database-connection-amazon-rds-proxy/

 

 

[참고자료]

l  https://aws.amazon.com/ko/getting-started/hands-on/set-up-shared-database-connection-amazon-rds-proxy/

l  https://aws.amazon.com/rds/proxy/

l  https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-proxy.html

 

 

 

2022-03-23 / Sungwook Kang / http://sungwookkang.com

 

 

AWS RDS, RDS Proxy, 아마존 프록시, DB Pooling, DB Connection

반응형