모든 계정의 리소스 저장이 끝나면 WA는 별도로 실행되고, 관계에서 VPC ID를 계산한 뒤 매핑을 시작합니다.
CLO-1266
CloudOps 수집 및 티켓 발행 흐름
리소스 수집은 Temporal, CSP 이벤트 처리는 NATS JetStream을 사용합니다. 두 경로는 서로 다른 시작점과 실패 경계를 가집니다.
리소스 수집 Workflow와는 별도로 실행됩니다.
VPC ID 반영 시점
모든 계정의 리소스 저장이 끝난 뒤입니다
VPC를 CSP에서 다시 수집하는 단계가 아닙니다. 확정된 리소스 관계에서
각 리소스가 속한 VPC를 계산해 resource.vpc_id에 저장합니다.
resource.vpc_id 저장→
매핑 시작
WA는 첫 단계가 끝난 뒤 별도로 시작되어 이 경로와 병렬로 진행됩니다. 수집 부모는 VPC ID 저장까지 기다리지만 매핑 완료는 기다리지 않습니다.
TEMPORAL WORKFLOW 시작점 전체 지도
Temporal Workflow는 다음 다섯 경우에 시작됩니다
수집 외에도 자격증명 변경과 계정 삭제가 Workflow를 시작합니다. 아래 카드는 시작 조건과 원 요청에 미치는 실패 영향을 비교합니다.
자격증명 검증
등록·수정·자격증명 갱신·root 연결 변경·일괄 검증/등록
- 조건
- provider와 credential 준비
- 실패
- 모든 원인을 DISCONNECTED로 정규화
수동 리소스 수집
요청자가 POST /resources/collect 본문에 수집할 계정 1–100개를 지정
- 조건
- 검증 성공 계정이 1개 이상
- 실패
- item·계정 상태를 failure로 보정
일일 전체 수집
매일 01:00 KST에 계정 목록 없이 시작하고, 부모 Workflow가 활성 계정을 DB에서 조회
- 조건
- APScheduler job 활성·replica 1
- 실패
- 로그 기록, 다음 cron 전 재시작 없음
계정 삭제 뒤 관계 정리
삭제 전 상태를 읽는 경쟁을 줄이기 위해 예약 시점에서 10초 뒤 RelationshipExtractRun 시작
- 조건
- GENERAL 계정 삭제
- 실패
- 예외를 흡수하고 계정 삭제는 유지
계정 삭제 뒤 WA 재평가
삭제 리소스가 있을 때 예약 시점에서 15초 뒤 WellArchitectedRun 시작
- 조건
- GENERAL · 삭제 리소스 1개 이상
- 실패
- 예외를 흡수하고 계정 삭제는 유지
계정과 리소스의 soft-delete는 요청 트랜잭션 안에서 실행되고, DB commit은 요청이 끝날 때 일어납니다. Worker가 commit 전 데이터를 읽는 경쟁을 줄이기 위해 관계 재계산은 10초 뒤, WA 재평가는 15초 뒤 시작하도록 각각 예약합니다. 두 지연은 순서대로 25초를 기다리는 과정이 아니며, WA 재평가는 관계 재계산 완료를 기다리지 않습니다.
상세 실행 시퀀스
계정 검증·수집·후처리·CSP 이벤트를 순서대로 보기
Temporal 경로는 Workflow·Activity handoff를, 이벤트 경로는 JetStream 전달을 보여 줍니다. DB 칩은 해당 시점에 바뀌는 물리 테이블과 연산입니다.
Temporal 수집 요약 6개 실행 주체의 전체 handoff 보기 반복되는 Workflow Task 반환은 생략한 방향 확인용 그림
설명용 요약
수집 요청부터 후처리까지
먼저 아래 다섯 단계로 전체 흐름을 설명하고, 더 필요한 내용만 세부 단계에서 확인하면 됩니다.
-
1
계정을 등록합니다
자격 증명을 확인한 뒤 계정과 Secret 참조를 저장합니다. 등록만으로 수집이 시작되지는 않습니다.
-
2
수집을 별도로 시작합니다
수동 API는 선택한 계정 1~100개를, 일일 Scheduler는 실행 시점의 활성 계정 전체를 대상으로 삼습니다.
-
3
부모 Workflow가 계정별 실행을 관리합니다
대상을 pending으로 바꾸고 계정별 자식 Workflow를 최대 20개까지 동시에 실행합니다.
-
4
각 계정의 리소스를 수집하고 저장합니다
계획이 성공하면 running으로 바꾸고, 작업별로 수집한 결과를 즉시 저장한 뒤 최종 상태를 결정합니다.
-
5
WA와 관계 후처리를 시작합니다
모든 계정의 리소스 저장이 끝나면 WA를 별도로 시작합니다. 이어서 계정별 관계를 갱신하고 고객 관계를 확정한 뒤, 그 관계에서 각 리소스의
vpc_id를 계산·저장합니다. 수집 부모는 여기까지 기다린 후 매핑을 시작합니다.
수집 부모 Workflow 완료의 의미 수집 부모가 기다리는 계정별 수집과 관계 추출·VPC ID 저장은 종료됐지만, 별도로 실행되는 WA 진단·티켓과 매핑은 아직 진행 중일 수 있습니다.
세부 단계
계정 등록·수집·후처리의 세부 조건
단계를 누르면 오른쪽에서 실행 주체, 다음 단계로 넘어가는 조건, DB 기록과 실패 동작을 확인할 수 있습니다.
별도의 이벤트 경로
CSP 이벤트가 Alert와 Ticket으로 이어지는 과정
Webhook 수신 → JetStream 저장 → CSP별 정규화 → Alert 생성·갱신 → Outbox → Ticket 생성·갱신·종료 순서로 처리합니다.
TEMPORAL 실행 구조
Temporal이 작업을 전달하는 방식
수동 API와 매일 01:00 KST에 실행되는 APScheduler는 gRPC로 Temporal에 Workflow 시작을 요청합니다. Temporal은 실행 이력과 Task Queue를 관리하고, Core 및 CSP Worker는 담당 Queue에서 작업을 가져옵니다. Worker끼리는 직접 통신하지 않습니다.