-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
📋 개요
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/DynamoDbManagementPortDynamoDbDiscoveryPort
-
domain/cloud/service/dynamodb/DynamoDbPortRouterDynamoDbUseCaseService
-
domain/cloud/controller/DynamoDbController– REST API 엔드포인트 제공
-
공통 설정
config/AwsDynamoDbConfigDynamoDbClient 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 등 프로젝트 표준에 맞게)