AWS공부

AWS DynamoDB 장기 데이터 보관 전략: 실무 가이드

0
Please log in or register to do it.
7년 이상의 장기 데이터 보관이 필요할 때, 어떤 방법이 가장 효율적일까요?

들어가며

많은 기업들이 규정 준수(Compliance) 요구사항으로 인해 데이터를 장기간 보관해야 합니다. 금융 거래 내역은 7년, 의료 기록은 10년 이상 보관해야 하는 경우가 흔합니다.

DynamoDB를 사용하는 환경에서 이런 장기 보관 요구사항을 어떻게 충족할 수 있을까요? 오늘은 실무에서 자주 고려되는 4가지 방법을 비교하고, 각각 언제 사용해야 하는지 알아보겠습니다.


4가지 백업 방법 비교

1. DynamoDB PITR (Point-in-Time Recovery)

활성화 방법: DynamoDB 콘솔 → 테이블 → 백업 → PITR 활성화

특징

  • 최근 35일 이내 어느 시점으로든 복구 가능
  • 초 단위 정밀도로 복구 지원
  • 활성화만 하면 자동으로 동작

제한사항

⚠️ 최대 보관 기간: 35일
→ 장기 보관 목적으로는 부적합!

적합한 사용 사례

  • 실수로 데이터 삭제했을 때 빠른 복구
  • 최근 변경사항 롤백
  • 운영 중 발생하는 단기 장애 대응

2. AWS Backup (✅ 권장)

설정 위치: AWS Backup 콘솔 → 백업 계획 생성

특징

  • 완전 관리형 백업 서비스
  • 백업 일정 자동화 (매일/매주/매월)
  • 보존 기간 설정 (7년 이상 가능)
  • 여러 AWS 서비스 통합 관리

실제 설정 예시

{
  "BackupPlan": {
    "BackupPlanName": "DynamoDB-7Year-Retention",
    "Rules": [
      {
        "RuleName": "DailyBackup",
        "TargetBackupVaultName": "Default",
        "ScheduleExpression": "cron(0 5 ? * * *)",
        "StartWindowMinutes": 60,
        "CompletionWindowMinutes": 120,
        "Lifecycle": {
          "MoveToColdStorageAfterDays": 30,
          "DeleteAfterDays": 2555
        }
      }
    ]
  }
}

비용 구조

항목비용
웜 스토리지GB당 $0.05/월
콜드 스토리지GB당 $0.01/월
복원GB당 $0.02

적합한 사용 사례

  • 규정 준수를 위한 장기 보관
  • 중앙 집중식 백업 관리가 필요한 경우
  • 운영 오버헤드를 최소화하고 싶을 때

3. 주문형(On-Demand) 백업

실행 방법: DynamoDB 콘솔 → 테이블 → 백업 → 백업 생성

특징

  • 원하는 시점에 수동으로 백업 생성
  • 명시적으로 삭제하기 전까지 보관
  • 추가 비용 없이 기본 제공

문제점

월요일: 백업 생성 ✅
화요일: 백업 생성 ✅  
수요일: 야근으로 깜빡함 ❌
목요일: 휴가라서 못함 ❌
금요일: 장애 발생... 백업이 없다!

실무에서의 현실

  • 담당자가 바뀌면 인수인계 누락
  • 휴가, 퇴사 시 백업 공백 발생
  • 7년간 매일 수동 작업은 비현실적

적합한 사용 사례

  • 대규모 변경 작업 전 일회성 백업
  • 마이그레이션 전 스냅샷
  • 테스트/개발 환경 복제

4. EventBridge + Lambda 커스텀 솔루션

아키텍처: EventBridge(스케줄) → Lambda → DynamoDB Backup API → S3

Lambda 코드 예시

import boto3
from datetime import datetime

def lambda_handler(event, context):
    dynamodb = boto3.client('dynamodb')
    s3 = boto3.client('s3')

    table_name = 'TransactionTable'
    backup_name = f"{table_name}-{datetime.now().strftime('%Y%m%d-%H%M%S')}"

    try:
        # 백업 생성
        response = dynamodb.create_backup(
            TableName=table_name,
            BackupName=backup_name
        )

        return {
            'statusCode': 200,
            'body': f"Backup created: {response['BackupDetails']['BackupArn']}"
        }

    except Exception as e:
        # 에러 알림 로직 필요
        raise e

필요한 추가 작업들

  • 에러 처리 및 알림 설정
  • 백업 성공/실패 모니터링
  • Lambda 코드 유지보수
  • IAM 권한 관리
  • 비용 모니터링

적합한 사용 사례

  • 특수한 비즈니스 로직이 필요한 경우
  • 백업 전후 커스텀 작업이 필요한 경우
  • AWS Backup이 지원하지 않는 요구사항

한눈에 비교

구분PITRAWS Backup주문형Lambda
최대 보관35일무제한무제한무제한
자동화
운영 오버헤드낮음낮음높음중간
코드 필요
관리형
7년 보관

실무 권장 아키텍처

대부분의 경우, PITR + AWS Backup 조합을 권장합니다.

┌─────────────────────────────────────────────────────────────┐
│                    DynamoDB 테이블                          │
├─────────────────────────────────────────────────────────────┤
│                          │                                  │
│           ┌──────────────┴──────────────┐                   │
│           ▼                             ▼                   │
│  ┌─────────────────┐          ┌─────────────────┐          │
│  │      PITR       │          │   AWS Backup    │          │
│  │   (단기 복구)    │          │   (장기 보관)    │          │
│  ├─────────────────┤          ├─────────────────┤          │
│  │ • 최근 35일     │          │ • 7년 보관      │          │
│  │ • 초 단위 복구  │          │ • 월 1회 백업   │          │
│  │ • 운영 실수 대응│          │ • 콜드 스토리지 │          │
│  └─────────────────┘          └─────────────────┘          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

이 조합의 장점

  • 단기: PITR로 빠른 복구 (실수, 버그 대응)
  • 장기: AWS Backup으로 규정 준수
  • 비용: 콜드 스토리지로 장기 보관 비용 절감
  • 운영: 둘 다 관리형 서비스로 오버헤드 최소화

마무리

데이터 백업 전략을 선택할 때 기억해야 할 핵심은 다음과 같습니다:

원칙설명
자동화 우선사람이 반복해야 하는 작업은 반드시 누락된다
관리형 서비스직접 구축보다 관리형 서비스가 운영 효율적
요구사항 확인보관 기간, 복구 시간 등 요구사항 먼저 파악
비용 고려장기 보관은 콜드 스토리지 활용

장기 보관이 필요하다면 AWS Backup, 단기 복구가 중요하다면 PITR을 선택하세요. 대부분의 프로덕션 환경에서는 둘 다 활성화하는 것을 권장합니다.


이 글이 도움이 되셨다면 공유해주세요! 질문은 댓글로 남겨주시면 답변드리겠습니다. 🙂

클로드 결제 3만원에 맞추기 Claude discount Compare

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다