[AWS] RDS Proxy & Serverless

한결·2024년 2월 10일

Serverless

목록 보기
1/2

RDS Proxy란?

RDS란?

AWS 클라우드의 RDBMS 서비스

온프레미스나 EC2에 RDBMS를 운영하는 것과 달리

  • 확장성, 가용성, 백업, 소프트웨어 관리, OS관리, 서버 등의 관리를 알아서 해줌
  • MariaDB, Microsoft SQL Server, MySQL, Oracle 및 PostgreSQL과 같은 데이터베이스 제품을 사용할 수 있음

RDS Proxy란?


RDS Proxy 2019년 12월 3일에 발표된 신규 AWS 서비스

RDS Proxy란 관계형 데이터베이스(AWS RDS)에서 커넥션(Connection) 연결을 효율적으로 관리해주는 서비스

장점

  • 클라이언트 애플리케이션과 데이터베이스 사이의 네트워크 트래픽 처리
  • 데이터베이스 연결관리를 위한 메모리 및 CPU 오버헤드 줄여줌

각 프록시는 단일 RDS DB 인스턴스에 대한 연결을 처리

  • 연결 풀링 수행

    연결 풀링
    연결을 열고 닫을 때 관련된 오버헤드(TLS 핸드셰이크, 인증, 협상 등)를 줄이는 최적화 기능

  • 멀티플렉싱 수행

    멀티플렉싱
    RDS 프록시가 하나의 기본 데이터베이스 연결을 사용하여 한 트랜잭션에 대한 모든 작업을 수행
    단일 트랜잭션 내의 모든 명령문은 항상 동일한 기본 데이터베이스 연결을 사용

  • 보안

    • 프록시가 액세스하는 RDS DB 인스턴스의 각 데이터베이스 사용자는 Secrets Manager에 해당하는 암호가 있어야 함
    • IAM 인증 설정도 가능
  • 빠른 장애 조치

    • 원래 DB 인스턴스를 사용할 수 없게 되면 RDS Proxy가 유휴 애플리케이션 연결을 끊지 않고 대기 데이터베이스에 연결
      -> 일반적인 재부팅 또는 애플리케이션 중단 줄일 수 있음

AWS Lambda에서의 RDS 커넥션 문제

Warm Start 상태에선 DB 커넥션 공유 가능하지만
Cold Start 상태에선 매번 다시 새로운 커넥션을 잡아먹게됨
따라서 (Warm start 상태에서 다시 유휴상태로 넘어가면 새로운 커넥션 형성해야하므로) Serverless는 일반 아키텍처에 비해 상당히 많은 수의 커넥션이 필요함
-> RDS의 퍼포먼스가 10%만 사용하더라도 커넥션 수가 부족하면 RDS 스케일업해야하는 상황 발생,
성능을 위해서 RDS 스케일업하는건지.. 커넥션을 위해 스케일업하는지 혼동됨

물론 람다 함수 종료 이전에 커넥션을 바로 끊거나 커넥션 타임아웃을 짧게 잡아두거나 하는 방법이 있지만 매번 커넥션을 생성해야하는 오버헤드 발생
혹은 람다함수 호출과 동시에 커넥션 끊는 상황 발생하면 에러 발생 (동시성까지 고려해야함 ..)

ㄸ라서 직접 커넥션을 관리해주어 커넥션으로 발생하는 오버헤드를 줄여주는 RDS Proxy를 사용

0개의 댓글