[re:Invent 2024] Amazon Aurora DSQL 출시 및 소개
안녕하세요. 2024년 AWS re:Invent 에서 소개된 Amazon Aurora DSQL에 대해서 소식을 공유드리고자 합니다
Amazon AuroraDSQL은 고객이 최고의 가용성, 강력한 일관성, PostgreSQL 호환성을 갖추고 다른 인기 있는 분산 SQL 데이터베이스에 비해 4배 더 빠른 읽기 및 쓰기 속도를 제공하는 새로운 서버리스 분산 SQL 데이터베이스입니다.
기존 Aurora의 Global Database는 여러 지역에 걸친 PostgreSQL 호환 데이터베이스를 제공해왔지만, DSQL의 기술은 상당히 차별화된 접근 방식을 제공합니다. Aurora DSQL은 두 지역(Region)이 액티브-액티브(Active-Active) 모드로 작동하여 데이터를 동시에 읽고 쓸 수 있으며, 데이터를 교차 복제합니다.
반면 Global Database는 한 지역에서 다른 지역으로 데이터를 복제하며, 쓰기가 가능한 지역은 한 곳으로 제한됩니다. 보조 지역은 읽기 전용 복제본으로 작동하며 필요 시 기본 지역으로 승격됩니다.
Aurora DSQL의 주요 특징은 다음과 같습니다.
- 강력한 일관성
트랜잭션 처리를 스토리지에서 분리하여, 모든 지역에서 모든 쓰기를 병렬화하여 강력한 일관성과 빠른 쓰기를 제공하는 다중 지역 데이터베이스를 제공합니다 - 낮은 지연 시간
여러 지역에서 강력한 일관성을 달성하고 전 세계적으로 마이크로초 수준의 정확도로 서버를 동기화시킵니다 - 가장 높은 가용성
액티브-액티브 아키텍처와 자동화된 장애 복구를 통해 모든 Aurora DSQL 엔드포인트를 읽고 쓸 수 있도록 하여 고객의 애플리케이션이 항상 사용 가능하도록 보장합니다
신규 서비스 맛보기
Aurora DSQL은 미리보기 기간 동안 무료로 제공됩니다.
AWS 콘솔 (Aurora DSQL) 로 이동하거나 Aurora DSQL API 또는 AWS CLI를 통해 체험해볼 수 있습니다.
현재 24년 12월 기준 해당 서비스의 Preview는 세 지역에서만 제공됩니다.
– 미국 북부 버지니아(us-east-1)
– 오하이오(us-east-2)
– 오리건(us-west-2)
미리보기로 제공중 인 Aurora DSQL을 해보실 수 있는 방법을 안내해드립니다
만약 검색결과에 보이지않는다면, 우측 상단에 해당 서비스를 제공중인 적합한 Region 정보를 입력했는지 확인합니다
1. 클러스터 생성
클러스터 생성 버튼으로 진입 시, 다중지역 설정 항목이 있습니다. 해당 항목은 Optional 기능으로 설정할 수 있습니다. 연결된 클러스터에는 각각 Regional 엔드포인트가 생성되며, 쓰기를 동기적으로 복제하므로 강력한 일관성을 유지하면서 연결된 모든 클러스터에서 읽고 쓸 수 있습니다.
증인 지역(Witness Region)은 연결된 클러스터에 기록된 모든 데이터를 수신하며, 별도의 엔드포인트가 존재하지않고 다중 Region 내구성과 가용성을 제공합니다
생성된 클러스터 정보에 진입 후, 엔드포인트 주소(HOST_NAME)와 패스워드(PGPASSWORD)를 복사해둡니다
2. 테스트 환경 생성
AWS Console 화면에서 default VPC 기준으로 Amazon Linux 2023 버전의 EC2를 생성합니다.
해당 EC2는 PublicIP를 가지고있으므로, Instance Connect 등 방법으로 접속할 수 있습니다.
서버의 IAM Role은 ec2-ssm-role 이라는 이름으로 생성 후, Attach 합니다
(해당 EC2 워크로드는 컴퓨팅 자원 비용이 발생하므로, 확인작업을 마친 뒤 불 필요할경우 리소스를 종료합니다)
아래 패키지들을 설치합니다
# aws-cli 최신버전 업그레이드
sudo yum update -y
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
source ~/.bashrc
# PostgreSQL 16 설치
sudo dnf install postgresql16
# Python 및 관련 라이브러리, 컴파일 도구, PostgreSQL 개발 헤더 파일 설치
sudo dnf install python3 python3-pip python3-devel gcc postgresql-devel -y
# psycopg2 (PostgreSQL용 Python 클라이언트) 설치
sudo pip3 install "psycopg2-binary>=2.9"
# AWS SDK for Python (boto3) 설치
sudo pip3 install boto3
위에 복사해둔 AuroraDSQL 엔드포인트 주소(HOST_NAME)와 패스워드(PGPASSWORD)를 붙여넣습니다.
psql 명령어로 접속을 확인합니다
# 접속을 위한 환경변수
export HOST_NAME="---.dsql.us-east-1.on.aws"
export PGPASSWORD="---"
export PGSSLMODE=require
export REGION="EX : us-east-1"
# psql 접속
psql --quiet \
--username admin \
--dbname postgres \
--host $HOST_NAME
3. 사용자 생성 및 IAM 연결
AuroraDSQL은 유일한 사용자 인증옵션으로 AWS IAM을 제공합니다.
사용자 패스워드(PGPASSWORD)의 경우, 위와같이 저장하는 방식이 아닌 해당 서버의 적합한 AWS Credential이 있을경우 aws-cli를 통해 가져올 수 있습니다.
아래 2개의 API는 IAM 자격 증명을 사용하여 데이터베이스에 연결하는 데 사용 되는 인증 토큰을 생성합니다.
- generate-db-connect-admin-auth-token
- generate-db-connect-auth-token
AWS관리형 정책인 AmazonAuroraDSQLFullAccess 을 부여한 뒤, admin 사용자로 접속을 시도합니다
기본적으로 AuroraDSQL은 admin 사용자와 postgres 데이터베이스를 제공합니다.
하지만 목적과 권한에 따라서 사용자를 생성할 수 있습니다.
이 때, 생성되는 사용자와 AWS IAM 역할을 PostgreSQL 역할에 매핑하여 권한을 부여합니다
접속된 admin 사용자 화면에서 AWS ACCOUNT-ID 를 수정 후, ec2_server 라는 이름의 사용자(PostgreSQL 역할)를 생성합니다.
일반 사용자(PostgreSQL 역할)로 접속할경우, AWS IAM 역할에는 다음와 같은 dsql:DbConnect이 필요합니다.
Resource 항목에는 특정 클러스터로 제한할 수 있습니다.
아래 IAM Policy 를 Attach 한 뒤, AmazonAuroraDSQLFullAccess 를 삭제합니다
생성한 사용자로 접속된 걸 확인할 수 있습니다.
3. 쿼리진행
접속된 사용자(ec2_server)를 통해 기본적인 테이블 생성, 데이터 삽입, 데이터 조회, 테이블 삭제를 진행해봅니다.
Preview로 제공중인 AuroraDSQL 실습이 종료됬다면, 해당 클러스터를 삭제합니다.
추가적으로 AWS 문서에서는 아래와 같이 GitHub 튜토리얼과 샘플 코드를 공유합니다.
- Using Benchbase with Aurora DSQL (오픈소스 벤치마킹 유틸리티)
- Aurora DSQL samples (AWS SDK 기반 프로그래밍 언어 예제)
- Aurora DSQL loader (Aurora DSQL에 데이터를 로드하는 작업)
신규 서비스 주의사항
24년 12월 기준 AuroraDSQL은 현재 비용정보가 공개되지않았습니다.
기존에 사용하셨던 Postgres를 AuroraDSQL로 Lift and Shift 방식의 마이그레이션은 할 수 없습니다.
그 이유는 기존 Postgres의 일부 기능들을 사용할 수 없으며, AWS문서에서는 다음과 같습니다
- 지원되지 않는 객체 : Views, Trigger, Sequences 등
- 지원되지 않는 제약 조건 : Foreign keys 등
- 지원되지 않는 작업 : TRUNCATE, VACUUM 등
소개를 마치며…
기존에 OLAP 워크로드의 경우, NoSQL기반의 DynamoDB와 같은 서비스를 사용했던 사용자들은 강력한 일관성이나 SQL 호환성은 제공받을 수 없었습니다.
위와같이 PostgreSQL 기능적인 제약사항을 감안해서 Aurora DSQL 을 사용할경우, OLTP 데이터베이스이지만 강력한 일관성과 SQL 호환성을 통해 장점을 활용할 수 있습니다.
다중 리전 확장성과 낮은 대기 시간과 높은 가용성을 제공해주는 AuroraDSQL은 글로벌 분산 실시간 애플리케이션을 구축하는 고객에게 훌륭한 대안이 될 수 있습니다.
최신 댓글