본문으로 건너뛰기

Proxy

RDS Proxy와 Lambda 통합 가이드

1 RDS Proxy

  • Amazon RDS Proxy는 애플리케이션이 데이터베이스 연결을 풀링하고 공유하여 확장성을 향상시킬 수 있도록 하는 완전 관리형 데이터베이스 프록시입니다.
  • RDS Proxy는 애플리케이션과 RDS 데이터베이스 인스턴스 사이에 위치하여 연결을 관리하고 최적화합니다.
  • 주요 기능으로는 서버리스, 자동 스케일링, Multi-AZ 지원 등이 있습니다.
  • 특히 RDS Proxy는 RDS 및 Aurora의 장애 조치 시간을 최대 66%까지 줄일 수 있습니다.
  • 지원하는 데이터베이스 엔진에는 MySQL, PostgreSQL, MariaDB, MS SQL Server 및 Aurora (MySQL, PostgreSQL)가 포함됩니다.
  • 대부분의 애플리케이션은 코드 변경 없이 RDS Proxy를 사용할 수 있습니다.
  • IAM 인증 및 AWS Secrets Manager를 통한 보안 강화를 제공합니다.

1.1 RDS Proxy의 주요 기능

  • 연결 풀링: 애플리케이션이 데이터베이스에 대한 다수의 연결을 효율적으로 관리할 수 있도록 도와줍니다.
  • 자동 장애 조치: 기본 인스턴스에 장애가 발생하면 스탠바이 인스턴스로 자동 전환하여 중단 시간을 최소화합니다.
  • 보안 통합: IAM 인증 및 Secrets Manager를 통해 데이터베이스 자격 증명을 안전하게 관리합니다.
  • 성능 최적화: 데이터베이스 연결 풀을 유지하여 성능을 최적화하고, 새로운 연결을 여는 데 필요한 오버헤드를 줄입니다.
  • 확장성: 예측할 수 없는 데이터베이스 트래픽 급증을 처리할 수 있어 애플리케이션의 확장성을 높입니다.

1.2 RDS Proxy의 장점

  • 향상된 데이터베이스 효율성: RDS Proxy는 CPU, RAM 등의 데이터베이스 리소스에 대한 스트레스를 줄이고, 열린 연결 및 타임아웃을 최소화합니다.
  • 서버리스 아키텍처: RDS Proxy는 서버리스이며, 자동으로 스케일링되어 다양한 트래픽 상황에 대응할 수 있습니다.
  • 보안 강화: IAM 인증을 사용하여 데이터베이스에 접근하고, AWS Secrets Manager를 통해 자격 증명을 안전하게 저장합니다.
  • 멀티 AZ 지원: Multi-AZ 배포를 통해 고가용성을 제공하고 장애 조치 시간을 단축합니다.
  • 코드 변경 없음: 대부분의 애플리케이션은 추가적인 코드 변경 없이 RDS Proxy를 사용할 수 있습니다.

1.3 RDS Proxy 지원 엔진

  • MySQL
  • PostgreSQL
  • MariaDB
  • Aurora MySQL
  • Aurora PostgreSQL

2 Lambda와 통합

  • Lambda 함수가 직접 데이터베이스에 연결할 경우 고부하 시 많은 연결을 열어 성능 저하를 초래할 수 있습니다.
  • RDS Proxy를 사용하면 Lambda 함수는 데이터베이스 연결을 효율적으로 관리하고, 확장성과 성능을 높일 수 있습니다.
  • RDS Proxy는 Lambda 함수의 데이터베이스 연결 풀을 유지하여 성능을 최적화하고 리소스를 절약합니다.
  • IAM 인증과 AWS Secrets Manager를 사용하여 보안을 강화하고 자격 증명을 안전하게 관리할 수 있습니다.
  • Lambda 함수는 RDS Proxy와 함께 VPC 내에서 실행되어야 하며, 이는 데이터베이스 접근 시 보안을 더욱 강화합니다.

2.1 Lambda와 RDS Proxy 통합의 장점

  • 성능 향상: Lambda 함수가 RDS Proxy를 통해 데이터베이스 연결을 관리하면 성능이 향상되고 리소스 사용이 최적화됩니다.
  • 보안 강화: IAM 인증 및 Secrets Manager를 통한 보안 강화 기능을 제공합니다.
  • VPC 내 배포: Lambda 함수와 RDS Proxy는 모두 VPC 내에서 실행되어야 하며, 이를 통해 네트워크 보안이 강화됩니다.

2.2 주요 고려사항

  • RDS Proxy는 VPC 내에서만 배포되며, 주로 프라이빗 서브넷에서 배포됩니다.
  • 프라이빗 서브넷에 배포된 DS Proxy는 공개적으로 접근할 수 없으며, VPC 내의 리소스와 통합하여 사용하는 것이 중요합니다.

3 Lambda와 RDS Proxy 통합

  • Lambda 함수가 RDS와 직접 연결할 때는 데이터베이스 연결을 열고 유지해야 합니다.
  • 이로 인해 많은 Lambda 함수가 동시에 실행될 경우 "TooManyConnections" 예외가 발생할 수 있습니다.
  • RDS Proxy를 사용하면 유휴 연결 정리와 연결 풀 관리를 처리하는 코드가 더 이상 필요하지 않습니다.
  • RDS Proxy는 IAM 인증 또는 데이터베이스 인증을 지원하며, 자동 스케일링 기능을 제공합니다.

3.1 RDS Proxy 배포 옵션

  • RDS Proxy는 퍼블릭 또는 프라이빗 서브넷에 배포할 수 있습니다.
  • 퍼블릭 프록시: 인터넷을 통해 접근 가능한 서브넷에 배포됩니다.
  • 프라이빗 프록시: VPC 내부에서만 접근 가능한 서브넷에 배포됩니다.

3.2 Lambda 함수와 RDS Proxy 연결

  • Lambda 함수는 RDS Proxy의 배포 위치에 따라 다른 방식으로 연결할 수 있습니다:
  • 퍼블릭 프록시: VPC 외부에 있는 일반 Lambda 함수도 인터넷을 통해 연결 가능합니다.
  • 프라이빗 프록시: Lambda 함수가 동일한 VPC 내에 있어야 연결 가능합니다.

3.4 보안 고려사항

  • 퍼블릭 프록시를 사용할 경우, 인터넷을 통한 접근이 가능하므로 보안에 더욱 주의해야 합니다.
  • IAM 인증이나 강력한 암호 정책을 사용하여 무단 접근을 방지해야 합니다.
  • 프라이빗 프록시는 VPC 내부에서만 접근 가능하므로 추가적인 네트워크 보안 계층을 제공합니다.
  • 가능하다면 프라이빗 프록시를 사용하는 것이 보안 측면에서 더 권장됩니다.