ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AWS Aurora DSQL 활용: Terraform을 사용하여 서버리스, 전 세계에 분산된 SQL 데이터베이스 배포
    혼자서 공부하기/AWS 2025. 8. 17. 15:07
    728x90
    반응형
    SMALL

    1. AWS Aurora DSQL이란?

    AWS Aurora DSQL은 복잡한 데이터베이스 설정 없이 쉽게 사용할 수 있는, 서버리스(자동 확장) 형태의 SQL 데이터베이스입니다.

    • 서버 관리: 서버 세팅, 패치, 유지보수 없이 자동으로 관리됩니다.
    • 글로벌 연결: 여러 지역(Region)에 웹이나 앱 서버가 동시에 안전하게 데이터를 주고받을 수 있습니다.
    • 빠른 읽기/쓰기: 기존 글로벌 데이터베이스보다 더 빠릅니다.
    • 최고의 안전성: 장애나 다운타임 없이 계속 서비스를 유지할 수 있습니다.

    2. 왜 좋은가요?

    • 직접 서버를 설치하거나 설정할 필요가 없습니다.
    • 여러 국가/지역에 분산해서 운영 가능해서 서비스가 막히거나 느려질 확률이 낮습니다.
    • PostgreSQL(오픈소스 데이터베이스)와 호환되어 기존 프로그램이나 툴을 거의 그대로 사용 가능합니다.

    3. 꼭 알아야 할 한계점!

    • 아직 일부 AWS 지역에서만 쓸 수 있습니다.
    • PostgreSQL의 일부 고급 기능은 지원하지 않습니다.
    • 대규모 자동 확장 시 잠깐 느려질 수 있습니다.
    • 전 세계로 데이터를 복제하므로 기존 DB보다 비용이 높을 수 있습니다.

     


    4. Terraform으로 쉽게 배포하기

    Terraform은 코드를 이용해서 AWS 리소스를 자동으로 생성/설정해주는 도구입니다.

    [Terraform 예시 소스]

    # DSQL 클러스터를 만듭니다
    resource "aws_dsql_cluster" "main" {
      deletion_protection_enabled = true
      kms_encryption_key = module.kms_core.key_arn
      tags = {
        Name = "dsql-cluster"
      }
    }
    
    # VPC 엔드포인트와 보안 그룹을 만듭니다
    resource "aws_vpc_endpoint" "main" {
      vpc_id = data.aws_vpc.main.id
      service_name = aws_dsql_cluster.main.vpc_endpoint_service_name
      vpc_endpoint_type = "Interface"
      security_group_ids = [aws_security_group.main.id]
      private_dns_enabled = true
    }
    
    resource "aws_security_group" "main" {
      name = "dsql-main-sg"
      vpc_id = data.aws_vpc.main.id
    }
    
    resource "aws_vpc_security_group_ingress_rule" "main_inbound_postgres" {
      security_group_id = aws_security_group.main.id
      cidr_ipv4 = data.aws_vpc.main.cidr_block
      from_port = 5432   # PostgreSQL 포트
      ip_protocol = "tcp"
      to_port = 5432
    }
    
    # IAM 역할과 권한 부여
    resource "aws_iam_role" "dsql_admin" {
      name = "dsql-admin-role"
      assume_role_policy = data.aws_iam_policy_document.dsql_admin_policy.json
    }
    
    # KMS 키 만들기 모듈 예시
    module "kms_core" {
      source  = "native-cube/kms/aws"
      version = "~> 1.0.0"
      alias_name = "core-kms-key"
      policy = data.aws_iam_policy_document.kms_core.json
    }

     

    5. 전체 요약 이미지 (글 설명)

    아래와 같은 흐름도의 이미지를 떠올릴 수 있습니다.

    ┌─────────────┐      ┌──────────────┐      ┌─────────────┐      ┌─────────────┐
    │  Terraform  │   ──▶│ AWS에서 클러스터 │  ──▶│ VPC로 연결    │──▶   │ DBeaver 접속 │ 
    │     코드     │      │와 보안 그룹 생성 │      │(보안 설정)    │      │(SSL/TOKEN)  │
    └─────────────┘      └──────────────┘      └─────────────┘      └─────────────┘
             ↓                                                           ↓
       (KMS 키로 암호화)                                               (글로벌 동기화)
    1. Terraform 코드로 AWS 자원을 자동으로 만듭니다.
    2. Aurora DSQL DB와 VPC 보안그룹을 생성해 네트워크/접근을 보호합니다.
    3. 데이터 암호화를 위해 KMS(Key Management Service) 키를 적용합니다.
    4. DBeaver 프로그램 등을 이용해 연결하고, 인증 토큰 및 SSL을 꼭 사용합니다.
    5. 여러 AWS 전 세계 리전(Region)에서 동시에 강력한 일관성으로 데이터를 읽고 씁니다.

    6. 마무리

    초보자도 위의 내용을 따라하면 복잡한 설정 없이 AWS Aurora DSQL을 사용할 수 있습니다. 코드 설정, 보안, 접속 과정이 자동화되어 편리합니다.
    다만, 지역이나 PostgreSQL 호환성 등 주요 한계는 꼭 사전에 확인하세요!

    728x90
    반응형
    LIST
Designed by Tistory.