반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

DevOps Tasks

AWS RDS Proxy 와 Serverless 본문

AWS

AWS RDS Proxy 와 Serverless

데밥스 2024. 3. 2. 18:06
728x90
반응형

반응형

AWS RDS Proxy?

RDS에서 Connection 연결을 효율적으로 관리해 주는 서비스이다.

AWS Lambda를 사용할 때는 DynamoDB와 같은 API 기반 DB를 많이 사용할 수밖에 없다.

기본적으로 RDS Proxy는 세션에서 각 트랜잭션 후에 연결을 재사용할 수 있다.

이러한 트랜잭션 수준에서의 재사용을 multiplexing이라고 한다.

RDS Proxy 가 일시적으로 연결 풀에서 연결을 제거하여 재사용할 경우 해당 작업을 borrowing the connection (연결 대여)라고 한다.

시나리오에 따라서 RDS Proxy는 현재 세션 외부에서 RDS 연결을 재사용하는 것이 안전한 지는 알기 힘들다.

이럴 때 세션이 끝날 때까지 동일한 연결에 세션을 유지한다.

이러한 동작을 pinning이라고 한다.

Lambda에서 유휴 상태로 대기하다 프로비저닝 되며 호출되는 것을 Cold Start

이미 프로비저닝 되어있는 상태에서 다시 호출하는 것을 Warm Start 라 부른다.

[AWS] - AWS Lambda 마스터리북 구매하기

 

AWS Lambda 마스터리북 구매하기

AWS Lambda 를 사용해보기 전에 읽어보면 100% 이상 활용할 수 있다. 💡키워드들도 숙지한다면 큰 도움이 된다 ~ !! Lambda는 AWS에서 제공하는 Serverless 컴퓨팅 플랫폼이다. Serverless 란, 서버가 없다는 

rldnjsdlsi.tistory.com

 

 

Warm Start 상태에서는 연결된 커넥션을 공유할 수 있지만 더 많은 컴퓨팅이 프로비저닝 되며

Cold Start를 하거나 프로비저닝 된 Warm 상태의 람다가 일정 시간 이상 호출받지 못하여 다시 유휴 상태 ( Cold )로 돌아갔다가 호출되면 다시 새로운 커넥션을 잡아먹게 된다.

 


 

RDS Instance Class 별로 max_connections에 대한 제한이 있기 때문에 RDS의 퍼포먼스가 프로비저닝 된 성능의 10% 만 사용하더라도 Connection에 부족하다면 지속적으로 스케일업이 필요하다.

성능이 아닌 Connection 때문에 스케일업이 필요한 상황이 생기는 것이다.

AWS Lambda 내부에서 DB Connection을 종료시키거나 Connection Time Out을 짧게 설정하는 등의 방법으로 Connection을 관리할 수 있다.

하지만, 매번 Connection에 대한 로직을 수행하면 Lambda에 불필요한 부하 및 지연 시간이 생기게 된다.

이렇게 Connection에 문제가 생기면 Lambda 함수를 동작하는데 또한 문제가 생긴다.

따라서, RDS Proxy를 사용해서 DB Connection에 대한 메모리 및 CPU 오버헤드를 줄일 수 있다.

직접 RDS에 접속하여 사용하는 것이 아닌 RDS Proxy를 통해 접속하는 것이다.

 


 

RDS Proxy 시작하기

RDS Proxy를 사용하기 위해서는 RDS DB 인스턴스와 RDS Proxy 간의 공통의 VPC 가 필요하다.

 

 

Subnet에 사용 가능한 IP 가 부족할 일은 현저히 적지만 각 DB 인스턴스 클래스 당 필요한 최소 IP 주소의 개수이다.

RDS Proxy는 VPC를 지정해 AWS VPC 상에서만 접속이 가능하기 때문에 AWS Secrets Manager에서 RDS에 대한 자격 증명을 설정 후에 접근할 수 있다.

 

# RDS 엔드포인트가 아닌 RDS Proxy 엔드포인트로 접속

$ mysql -h <RDS_PROXY_ENDPOINT> -u <USER> -p

Enter password:

RDS 프록시 관리 - Amazon Relational Database Service

 

RDS 프록시 관리 - Amazon Relational Database Service

클라이언트 인증 유형 및 IAM 인증 필드의 값은 이 프록시에 연결된 모든 Secrets Manager 보안 암호에 적용됩니다. 보안 암호마다 다른 값을 지정하려면 AWS CLI 또는 API를 대신 사용하여 프록시를 수

docs.aws.amazon.com

 

Secrets Manager에 등록한 값은 실제 RDS 사용자로 등록되어 있어야 한다.

없는 사용자라면 사용할 수 없음으로 뜬다.

 

 

새 Database 사용자 추가가 필요하다면 AWS Secrets Manager의 보안 암호를 편집하거나 추가한다.

 

 

RDS Proxy의 개별적인 프록시는 서로 독립적으로 작동할 뿐만 아니라 프록시 내의 커넥션들이 재활용되기 때문에 개발자가 직접 Lambda에서 Connection에 대한 부분을 신경 쓰지 않아도 되며 많은 커넥션을 생성할 수 있다.

728x90
반응형