Amazon RDS Proxy
애플리케이션의 확장성, 복원력, 보안 강화
RDS Proxy란 무엇인가요?
RDS Proxy는 Amazon RDS의 완전관리형, 가용성이 높고 사용이 간편한 데이터베이스 프록시 기능으로, 1) 데이터베이스 연결을 풀링 및 공유하여 애플리케이션의 확장성을 높이고, 2) 데이터베이스 장애 조치 시간을 최대 66% 줄이고 장애 조치 시 애플리케이션 연결을 보존하여 복원력을 높이며, 3) 선택적으로 데이터베이스에 AWS IAM 인증을 적용하고 AWS Secrets Manager에 자격 증명을 안전하게 저장하여 보안을 강화합니다.
RDS Proxy를 사용하기 위해 추가 인프라를 프로비저닝하거나 관리할 필요가 없으며 코드 변경 없이 대부분의 애플리케이션에서 활성화할 수 있습니다.
Amazon RDS Proxy의 이점
RDS Proxy는 RDS 데이터베이스 인스턴스에 대해 설정된 연결 풀을 유지 관리하여 새 연결이 설정될 때 일반적으로 발생하는 데이터베이스 컴퓨팅 및 메모리 리소스에 대한 스트레스를 줄여줍니다. 또한 자주 사용하지 않는 데이터베이스 연결을 공유하므로 RDS 데이터베이스에 액세스하는 연결 수가 줄어듭니다. 이 연결 풀링을 사용하면 데이터베이스에서 많은 수의 애플리케이션 연결을 효율적으로 지원할 수 있으므로 성능 저하 없이 애플리케이션의 규모를 조정할 수 있습니다.
RDS Proxy는 애플리케이션 연결을 유지하면서 새 데이터베이스 인스턴스에 자동으로 연결하여 데이터베이스 가용성에 영향을 미치는 운영 중단으로 인한 애플리케이션 중단을 최소화합니다. 장애 조치가 발생하면 RDS Proxy는 요청을 새 데이터베이스 인스턴스로 직접 라우팅합니다. 이를 통해 Aurora 및 RDS 데이터베이스의 장애 조치 시간이 최대 66% 단축됩니다. 또한 RDS Proxy는 일반적으로 35초 미만의 장애 조치, 2배 향상된 쓰기 지연 시간, 추가된 읽기 용량, 마이너 버전 업그레이드 가동 중지 시간을 일반적으로 1초 미만으로 줄이는 두 개의 읽기 가능한 대기 시간을 포함하는 다중 AZ를 지원합니다.
RDS Proxy를 사용하면 데이터베이스 액세스에 IAM 인증을 적용할 수 있고 데이터베이스 자격 증명을 애플리케이션 코드에 하드코딩하지 않아도 되므로 데이터 보안을 추가로 제어할 수 있습니다. 또한 Secrets Manager를 사용하여 데이터베이스 자격 증명을 중앙에서 관리할 수 있습니다.
데이터베이스 프록시 서버는 데이터베이스의 추가 부하를 처리하는 데 도움이 됩니다. 기존 프록시 서버를 사용하면 애플리케이션을 보다 효과적으로 확장할 수 있지만 배포, 패치 및 관리가 어려워 우수한 제품을 개발하는 데 더 많은 리소스를 소비할 수 있습니다. RDS Proxy는 완전 서버리스 및 완전 관리형 데이터베이스 프록시이므로 자체 프록시 서버를 패치하고 관리하는 부담을 없애면서 워크로드에 맞게 자동으로 규모 조정됩니다.
RDS Proxy는 지원되는 데이터베이스 엔진의 프로토콜과 완벽하게 호환되므로 애플리케이션 코드를 변경하지 않고도 애플리케이션에 배포할 수 있습니다. 애플리케이션 연결을 RDS 데이터베이스 대신 프록시로 연결하기만 하면 나머지는 원활하게 관리됩니다.
Amazon RDS Proxy 시작하기
RDS Proxy를 빠르게 시작하는 방법에 대한 정보를 찾고 계신가요? 다음은 몇 단계만으로 RDS Proxy를 시작하는 방법을 보여주는 가장 중요한 기술 문서 가이드, 사용 설명서 및 자습서입니다.
FAQ
일반
모두 열기예측할 수 없는 워크로드가 있는 애플리케이션: 매우 다양한 워크로드를 지원하는 애플리케이션은 새로운 데이터베이스 연결을 대량으로 열려고 시도할 수 있습니다. RDS Proxy의 연결 거버넌스를 통해 고객은 데이터베이스 연결을 효율적으로 재사용하여 예측할 수 없는 워크로드를 처리하는 애플리케이션을 원활하게 확장할 수 있습니다. 첫째, RDS Proxy를 사용하면 여러 애플리케이션 연결이 데이터베이스 연결을 공유하여 데이터베이스 리소스를 효율적으로 사용할 수 있습니다. 둘째, RDS Proxy는 열려 있는 데이터베이스 연결 수를 조절하여 고객이 예측 가능한 데이터베이스 성능을 유지할 수 있도록 합니다. 셋째, RDS Proxy는 사용할 수 없는 애플리케이션 요청을 제거하여 애플리케이션의 전반적인 성능 및 가용성을 보존합니다.
데이터베이스 연결을 자주 열고 닫는 애플리케이션: 서버리스, PHP 또는 Ruby on Rails와 같은 기술을 기반으로 구축된 애플리케이션은 애플리케이션 요청을 처리하기 위해 데이터베이스 연결을 자주 열고 닫을 수 있습니다. RDS Proxy를 사용하면 고객이 데이터베이스 연결 풀을 유지 관리하여 새 연결을 설정할 때 데이터베이스 컴퓨팅 및 메모리에 불필요한 부하가 걸리지 않도록 할 수 있습니다.
연결은 열려 있지만 유휴 상태인 애플리케이션: SaaS 또는 전자 상거래와 같은 업계의 애플리케이션은 데이터베이스 연결을 유휴 상태로 유지하여 고객의 재참여 시 응답 시간을 최소화할 수 있습니다. 대부분의 유휴 연결을 지원하도록 데이터베이스를 오버프로비저닝하는 대신, 고객은 RDS Proxy를 사용하여 유휴 연결을 유지하면서 활성 요청을 최적으로 처리하는 데 필요한 만큼만 데이터베이스 연결을 설정할 수 있습니다.
일시적인 장애에도 가용성이 필요한 애플리케이션: RDS Proxy를 사용하면 고객은 복잡한 장애 처리 코드를 작성할 필요 없이 데이터베이스 장애를 투명하게 견딜 수 있는 애플리케이션을 구축할 수 있습니다. RDS Proxy는 애플리케이션 연결을 보존하면서 새 데이터베이스 인스턴스로 트래픽을 자동 라우팅합니다. 또한 RDS Proxy는 도메인 이름 시스템(DNS) 캐시를 우회하여 Amazon RDS 및 Aurora 다중 AZ 데이터베이스의 장애 조치 시간을 최대 66% 단축합니다. 데이터베이스 장애 조치 중에는 애플리케이션의 지연 시간이 길어질 수 있으며 진행 중인 트랜잭션을 재시도해야 할 수 있습니다.
향상된 보안 및 중앙 집중식 자격 증명 관리: RDS Proxy는 고객이 관계형 데이터베이스를 사용하여 IAM 기반 인증을 적용할 수 있는 선택권을 제공함으로써 보다 안전한 애플리케이션을 구축할 수 있도록 지원합니다. 또한 RDS Proxy를 사용하면 AWS Secrets Manager를 통해 데이터베이스 보안 인증 정보를 중앙에서 관리할 수 있습니다.
RDS Proxy를 사용하면 관계형 데이터베이스의 성능과 단순함을 활용하는 최신의 서버리스 애플리케이션을 구축할 수 있습니다. 첫째, RDS Proxy를 사용하면 데이터베이스 연결을 풀링하고 재사용하여 서버리스 애플리케이션을 효율적으로 규모 조정할 수 있습니다. 둘째, RDS 프록시를 사용하면 데이터베이스 자격 증명을 Lambda 코드로 처리할 필요가 없습니다. Lambda 함수에 연결된 IAM 실행 역할을 RDS 프록시 및 데이터베이스 인증에 사용할 수 있습니다. 셋째, 새로운 인프라 또는 코드를 관리하지 않고도 관계형 데이터베이스로 지원되는 서버리스 애플리케이션의 모든 기능을 활용할 수 있습니다. RDS Proxy는 완전관리형이며 애플리케이션 수요에 따라 자동으로 용량이 조정됩니다.
RDS Proxy는 Amazon Aurora(MySQL 호환), Amazon Aurora(PostgreSQL 호환), Amazon RDS for MariaDB, Amazon RDS for MySQL, Amazon RDS for PostgreSQL 및 Amazon RDS for SQL Server에 사용할 수 있습니다. 지원되는 엔진 버전 목록은 Amazon Aurora 사용 설명서 또는 Amazon RDS 사용 설명서를 참조하세요.
RDS 콘솔에서 클릭 몇 번으로 Amazon RDS 데이터베이스에 대한 Amazon RDS Proxy를 활성화할 수 있습니다. RDS Proxy를 활성화한 다음 RDS Proxy에 액세스할 VPC 및 서브넷을 지정할 수 있습니다. Lambda 사용자는 Amazon RDS 데이터베이스의 RDS Proxy를 활성화하고 Lambda 콘솔을 벗어나지 않고도 클릭 몇 번으로 액세스할 수 있도록 Lambda 함수를 설정할 수 있습니다.
- 클라이언트-프록시 연결에는 IAM 인증을 사용하고 프록시-데이터베이스 연결에는 Secrets Manager를 사용합니다.
- 클라이언트-프록시 및 프록시-데이터베이스 연결 모두에 IAM 인증을 사용하므로 Secrets Manager에 데이터베이스 암호를 저장할 필요가 없습니다.
RDS Proxy를 통한 애플리케이션과 데이터베이스 간의 인증에는 여러 가지 옵션이 있습니다.
AWS Secrets Manager의 기존 사용자 이름 및 암호 인증을 사용하여 데이터베이스 자격 증명을 저장하고 애플리케이션의 자격 증명 관리를 중앙 집중화, 보호 및 간소화할 수 있습니다. Secrets Manager를 사용하면 데이터베이스에 연결하는 것과 같은 방식으로 RDS Proxy에 연결할 수 있습니다. 제공한 사용자 이름과 암호는 Secrets Manager에 저장된 자격 증명과 일치하여 데이터베이스 연결에 사용됩니다.
보안 강화를 위해 IAM 기반 인증을 사용할 수 있습니다. 애플리케이션은 사용자 이름과 암호를 지정하는 대신 AWS Lambda 또는 EC2와 같은 서비스와 연결된 IAM 실행 역할을 사용하여 RDS Proxy로 인증할 수 있습니다. IAM 인증에는 두 가지 옵션이 있습니다.
RDS Proxy를 사용한 인증에 대한 자세한 내용은 RDS Proxy를 통한 데이터베이스 연결을 참조하세요.
예. Amazon RDS Proxy SLA에 대한 자세한 내용은 Amazon RDS Proxy SLA 세부 정보 페이지를 참조하세요.
고객
Acquia
“저희는 고객을 위해 성능 및 확장성을 최적화하고 개선하기 위해 지속적으로 노력하고 있습니다. Drupal은 기본적으로 연결 풀링을 지원하지 않기 때문에 관계형 데이터베이스에서 애플리케이션의 연결을 더 잘 확장할 수 있는 솔루션이 필요했습니다. RDS Proxy는 이러한 요구 사항을 완벽하게 충족합니다! RDS Proxy를 통해 고객의 Drupal 애플리케이션은 이미 설정된 연결의 준비된 풀을 쉽게 활용할 수 있습니다. 이를 통해 웹 사이트 트래픽의 갑작스러운 급증을 더 잘 관리하고 데이터베이스의 효율성을 개선할 수 있었습니다.”
Ed Brennan, Acquia Chief Architect
CAINZ
“저희는 AWS Lambda를 기반으로 하는 서버리스 API 인프라를 보유하고 있는데, 이 인프라는 수만 명의 사용자를 지원할 것으로 예상되며 확장 가능한 백엔드 데이터 스토어가 필요합니다. 기존에는 이러한 시나리오에 NoSQL 데이터베이스를 사용해 왔지만, 이 상황에서는 Amazon RDS 및 Amazon Aurora 데이터베이스에서 제공하는 데이터를 관리하고 액세스하기 위한 강력한 SQL 쿼리 기능이 필요하다는 점이 문제였습니다. 이제 RDS 및 Aurora 데이터베이스 앞에 RDS Proxy를 사용하여 이 문제를 해결할 수 있습니다. 테스트에서 RDS Proxy를 사용하면 최대 로드에서 응답 시간이 4배 향상되는 것을 확인할 수 있었습니다. RDS Proxy는 관계형 데이터베이스에서 익숙한 SQL 문을 사용할 수 있고 엔드포인트를 전환하기만 하면 되기 때문에 저희에게 유용합니다.
Masahiro Arai, CAINZ Digital Strategy Division
CloudHealth by VMware
“최근에 MySQL 데이터베이스를 Amazon Aurora로 마이그레이션했습니다. 저희 애플리케이션은 많은 데이터베이스 연결을 열린 상태로 유지하므로 연결이 급증하는 동안 데이터베이스에 스트레스를 주어 고객에게 서비스 중단을 초래합니다. Aurora로 마이그레이션한 후 RDS Proxy는 애플리케이션을 확장하고 비용을 최적화하는 데 필요한 아키텍처의 중요한 부분이 되었습니다. RDS Proxy를 사용하면 애플리케이션이 프록시에 훨씬 더 많은 연결을 열 수 있으며, 그 결과 사용량이 많은 시간에는 데이터베이스 연결이 최대 90%까지 줄어들어 데이터베이스 연결 수가 증가하는 것을 방지할 수 있습니다. RDS Proxy는 시스템 안정성을 개선하고 비용을 절감하는 데 도움이 되었습니다. 데이터베이스 연결에 사용되는 시스템 리소스가 적기 때문에 데이터베이스를 더 적은 수의 Aurora 클러스터로 통합하여 총 운영 비용을 낮출 수 있었습니다.”
Peter Fein, CloudHealth by VMware Senior Software Architect
Dream 11
“RDS Proxy는 인도 프리미어 리그 2023에서 우리에게 판도를 바꿔 놓았습니다. 이를 통해 데이터베이스 성능 및 가용성에 영향을 주지 않으면서 라운드 락 중에 급증하는 대규모 트래픽을 처리할 수 있었습니다. 또한 리소스의 규모를 동적으로 조정하고 비용을 최적화할 수 있었습니다. 덕분에 사용자에게 원활한 경험을 제공할 수 있었습니다. RDS Proxy는 예측할 수 없는 대용량 트래픽을 처리해야 하는 모든 온라인 게임 플랫폼에 꼭 필요합니다.
Bipul Karnani, Dream11 Principal Engineer