Skip to content

[FEATURE] AWS NoSQL(DynamoDB) 리소스 연동 #177

@moonhyeonmin

Description

@moonhyeonmin

📋 개요

AgenticCP에서 AWS DynamoDB 리소스를 생성/조회/수정/삭제할 수 있도록 연동합니다.
상위 기획 이슈: #170

NoSQL 기반의 고성능/고확장성 데이터 저장소 옵션을 제공하는 것이 목적입니다.


🎯 목표

  • DynamoDB 테이블의 생성/수정/삭제 기능 제공
  • 테이블 메타데이터 및 상태 조회 기능 제공
  • 글로벌 보조 인덱스(GSI) 등 주요 속성 관리
  • 태그 기반 조회 및 관리 지원 (가능한 범위 내)
  • CloudSession 기반 자격 증명/Region으로 요청 수행

🧩 기능 요구사항

  • 테이블 관리

    • CreateTable / UpdateTable / DeleteTable
    • 프로비저닝/온디맨드 용량, 파티션 키/소트 키 설정
    • Global Secondary Index / Local Secondary Index 관리(1단계에서는 필수 범위만)
  • 조회 기능

    • DescribeTable, ListTables
    • 테이블 상태/용량/인덱스 정보 조회
    • 태그 조회 (ListTagsForResource 등 지원 범위 확인)
  • 운영/부가기능 (P1 이상 시)

    • 백업/복원 (On-Demand Backup, Restore)
    • 테이블 메트릭 조회는 CloudWatch 연동 시 별도 이슈로 분리 가능

🏗️ 아키텍처 / 패턴

상위 이슈 #170에서 정의한 공통 패턴을 그대로 사용합니다.

  • domain/cloud/adapter/outbound/aws/dynamodb/

    • AwsDynamoDbManagementAdapter – 테이블 생명주기 관리
    • AwsDynamoDbDiscoveryAdapter – 테이블 및 메타 조회
    • AwsDynamoDbMapper – 도메인 <-> AWS SDK 모델 매핑
    • AwsDynamoDbErrorTranslator (선택) – AWS 예외 -> 비즈니스 예외 변환
  • domain/cloud/port/outbound/dynamodb/

    • DynamoDbManagementPort
    • DynamoDbDiscoveryPort
  • domain/cloud/service/dynamodb/

    • DynamoDbPortRouter
    • DynamoDbUseCaseService
  • domain/cloud/controller/

    • DynamoDbController – REST API 엔드포인트 제공
  • 공통 설정

    • config/AwsDynamoDbConfig
      • DynamoDbClient dynamoDbClient() – ThreadLocal/기본 크레덴셜 기반
      • DynamoDbClient createDynamoDbClient(CloudSessionCredential session, String region)
  • Capability 등록

    • AwsCapabilityConfig.initializeDynamoDbCapabilities()
      • ProviderType.AWS, Service: "DynamoDB", Resource: "Table"

🔧 기술 스택

  • AWS SDK for Java v2
    • software.amazon.awssdk.services.dynamodb.DynamoDbClient
    • 주요 API: CreateTable, DescribeTable, UpdateTable, DeleteTable, ListTables

✅ 체크리스트

  • 도메인 모델 정의 (DynamoDbTable, Index, Throughput 등)
  • DynamoDbManagementPort / DynamoDbDiscoveryPort 정의
  • AWS SDK 기반 AwsDynamoDbManagementAdapter / AwsDynamoDbDiscoveryAdapter 구현
  • 도메인 <-> AWS SDK DTO 매퍼 구현
  • DynamoDB용 AwsDynamoDbConfig 설정 및 세션 기반 Client 팩토리 구현
  • Capability 등록 (AwsCapabilityConfig)
  • DynamoDbUseCaseService / DynamoDbController 기본 CRUD 플로우 구현
  • 예외/에러 코드 -> 비즈니스 예외 매핑 (공통 비즈니스 예외 룰 준수)
  • 단위 테스트 및 통합 테스트 작성
  • API 문서화 (Swagger/RestDocs 등 프로젝트 표준에 맞게)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions