📌 개요
멀티 클라우드(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
ObjectStorageUseCaseService.java
VpcUseCaseService.java
✅ 체크리스트
Repository
UseCase 서비스
테스트
📝 참고사항
- 멀티 클라우드 통합 관리 플랫폼 (AWS, Azure, GCP 등)
- 단일 데이터베이스에서 모든 CSP 자원 통합 관리
- CloudProvider.ProviderType으로 CSP 구분
- CSP별 Adapter는 Port 인터페이스를 구현하여 교체 가능
📌 개요
멀티 클라우드(AWS, Azure, GCP 등) 통합 관리 플랫폼에서 UseCase 서비스가
각 CSP의 자원 작업을 수행한 후
CloudResource엔티티를 DB에 동기화하는 기능을 구현합니다.🎯 목표
📂 영향 범위
1. Repository 메서드 추가 (
CloudResourceRepository.java)Optional<CloudResource> findOptionalByResourceId(String resourceId)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.javacreateInstance(): CSP 인스턴스 생성 후 CloudResource 저장startInstance(): CSP 시작 후 lifecycleState → RUNNINGstopInstance(): CSP 중지 후 lifecycleState → STOPPEDrebootInstance(): CSP 재부팅 후 상태 업데이트terminateInstance(): CSP 종료 후 lifecycleState → TERMINATEDdeleteInstance(): CSP 삭제 후 소프트 삭제ObjectStorageUseCaseService.javacreateContainer(): 버킷/컨테이너/블롭 생성 후 CloudResource 저장deleteContainer(): 삭제 후 소프트 삭제VpcUseCaseService.java✅ 체크리스트
Repository
CloudResourceRepository에 멀티 CSP 조회 메서드 추가@Modifying,@Transactional적절히 적용UseCase 서비스
VmUseCaseServiceCSP 작업 후 DB 저장 (Provider-Agnostic)ObjectStorageUseCaseServiceDB 저장 로직 추가VpcUseCaseServiceDB 저장 로직 추가테스트
📝 참고사항