-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
📌 개요
멀티 클라우드(AWS, Azure, GCP 등) 통합 관리 플랫폼에서 UseCase 서비스가
각 CSP의 자원 작업을 수행한 후 CloudResource 엔티티를 DB에 동기화하는 기능을 구현합니다.
🎯 목표
- CSP 독립적인 자원 생명주기 관리 (Provider-Agnostic)
- 다양한 클라우드 프로바이더(AWS, Azure, GCP 등)의 자원을 단일 DB에서 통합 추적
- UseCase 레벨에서 CSP 작업 + DB 저장을 트랜잭션으로 관리
📂 영향 범위
1. Repository 메서드 추가 (CloudResourceRepository.java)
| 메서드 | 설명 |
|---|---|
Optional<CloudResource> findOptionalByResourceId(String resourceId) |
리소스 ID로 조회 (Optional 반환) |
boolean existsByResourceId(String resourceId) |
리소스 존재 여부 확인 |
List<CloudResource> findByResourceType(ResourceType type) |
리소스 타입별 조회 |
List<CloudResource> findByProviderProviderType(ProviderType type) |
프로바이더별 조회 |
List<CloudResource> findByTenantKeyAndResourceType(String tenantKey, ResourceType type) |
테넌트 + 리소스 타입별 조회 |
List<CloudResource> findByLifecycleStateNotIn(List<LifecycleState> excludeStates) |
특정 상태 제외 조회 (동기화용) |
@Modifying updateLifecycleState(String resourceId, LifecycleState state, LocalDateTime timestamp) |
생명주기 상태 업데이트 |
@Modifying softDeleteByResourceId(String resourceId) |
소프트 삭제 처리 |
2. UseCase 서비스 수정
VmUseCaseService.java
-
createInstance(): CSP 인스턴스 생성 후 CloudResource 저장 -
startInstance(): CSP 시작 후 lifecycleState → RUNNING -
stopInstance(): CSP 중지 후 lifecycleState → STOPPED -
rebootInstance(): CSP 재부팅 후 상태 업데이트 -
terminateInstance(): CSP 종료 후 lifecycleState → TERMINATED -
deleteInstance(): CSP 삭제 후 소프트 삭제
ObjectStorageUseCaseService.java
-
createContainer(): 버킷/컨테이너/블롭 생성 후 CloudResource 저장 -
deleteContainer(): 삭제 후 소프트 삭제
VpcUseCaseService.java
- VPC/VNet/Network 생성/삭제 시 CloudResource 저장/삭제
✅ 체크리스트
Repository
-
CloudResourceRepository에 멀티 CSP 조회 메서드 추가 - 프로바이더 타입별 필터링 쿼리 구현
-
@Modifying,@Transactional적절히 적용
UseCase 서비스
-
VmUseCaseServiceCSP 작업 후 DB 저장 (Provider-Agnostic) -
ObjectStorageUseCaseServiceDB 저장 로직 추가 -
VpcUseCaseServiceDB 저장 로직 추가 - CSP 작업 실패 시 DB 롤백 처리
테스트
- Repository 단위 테스트 (다양한 ProviderType으로)
- UseCase 서비스 통합 테스트
- CSP 작업 실패 시 롤백 테스트
📝 참고사항
- 멀티 클라우드 통합 관리 플랫폼 (AWS, Azure, GCP 등)
- 단일 데이터베이스에서 모든 CSP 자원 통합 관리
- CloudProvider.ProviderType으로 CSP 구분
- CSP별 Adapter는 Port 인터페이스를 구현하여 교체 가능