Skip to content

[1/4] 리소스 작업·outbox DB 스키마 추가 - #91

Open
jisung-02 wants to merge 1 commit into
mainfrom
feat/resource-operation-schema
Open

jisung-02 wants to merge 1 commit into
mainfrom
feat/resource-operation-schema

Conversation

@jisung-02

@jisung-02 jisung-02 commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

리소스 작업과 후속 이벤트를 기존 운영 DB에 저장하기 위한 Ent 스키마를 추가합니다. 서버의 생성·삭제 API와 작업 실행 방식은 이 PR에서 변경하지 않습니다.

  • ResourceOperation: 요청 식별자, 소유자, 작업 상태, 중복 방지 키
  • OutboxEvent: 재시도 일정, 점유 만료 시간, 완료 기록
  • ResourceObservation: 실제 자원 상태와 DB 불일치 관측 기록

변경 약 1.27만 줄 중 직접 작성한 스키마는 81줄이며, 나머지는 Ent 자동 생성 코드입니다. 자동 생성 변경을 이 PR에 모아 후속 PR에서는 구현 로직만 검토할 수 있도록 했습니다. 기존 자원 테이블의 레코드는 유지합니다.

검증: 이 단계에서 go test ./... 통과. 최종 분할 결과의 Ent 재생성 일치 및 모듈 정리 검사도 통과했습니다.

분할·병합 순서: #91 → #92 → #93 → #94

각 PR은 직전 PR의 브랜치를 기준으로 작성했습니다. 이전 PR을 squash 방식으로 병합한다면 후속 브랜치를 갱신해 이전 변경이 다시 표시되지 않도록 해야 합니다.

@haramj

haramj commented Oct 6, 2026

Copy link
Copy Markdown
Member

좋은 것 같습니다. 문제없으면 차례대로 병합하면 될까요? @jisung-02

@jisung-02

Copy link
Copy Markdown
Contributor Author

넵 차례로 병합해주시면 감사하겠습니다.

@haramj

haramj commented Oct 6, 2026

Copy link
Copy Markdown
Member

리소스 할당량 초과 관련 로직도 있나요? 그와 관련된 테스트도 있으면 좋을 것 같습니다.

@jisung-02

Copy link
Copy Markdown
Contributor Author

@haramj OpenStack 프로젝트 할당량을 기준으로 처리하고 있습니다. VM 생성 가능 수 조회는 CPU·RAM·인스턴스 수의 사용량과 예약량을 반영하며, 실제 생성 시 최종 초과 여부는 OpenStack에서 검증합니다. RCP 사용자별 개수·용량 제한은 현재 이 변경에 포함되어 있지 않습니다.

#91은 DB 스키마만 추가하는 단계라, 실제 생성 로직이 있는 #93에 할당량 초과 처리와 테스트를 추가했습니다(a0e3eb2). OpenStack이 초과를 명시한 403/413 응답을 반환하면 작업을 즉시 FAILED로 완료하고, 재시도를 중단하며 중복 방지 예약을 해제합니다. 작업 조회에는 resource quota exceeded를 반환합니다. 같은 요청 키로 다시 요청하면 기존 실패 작업을 반환하고, 할당량 확보 후에는 새 요청 키로 재요청할 수 있습니다.

테스트는 VM 수·CPU·RAM, 볼륨 수·용량, 컨테이너 수 초과 응답을 재현해 실패 처리, 재시도 중단, 예약 해제, 요청 키 중복 방지를 검증했습니다. 일반 권한 오류와 요청 속도 제한 등을 할당량 초과로 오인하지 않는 검사도 추가했습니다. 후속 #94에도 반영하고, 할당량 초과로 끝난 작업은 복구 검사에서 제외했습니다(8e0e823).

go test ./..., go test -race ./internal/domain/operations, go mod tidy -diff 모두 통과했습니다.

@haramj

haramj commented Oct 11, 2026

Copy link
Copy Markdown
Member

Merge 해도될까요?! LGTM 입니다

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants