39 lines
1.2 KiB
Markdown
39 lines
1.2 KiB
Markdown
# scheduler
|
|
|
|
## 목적 / 책임
|
|
|
|
River 기반 task enqueue, worker 실행, task 완료/실패 처리, notification 흐름을 담당한다.
|
|
|
|
## 포함 경로
|
|
|
|
- `internal/scheduler/` — River client, worker, job args
|
|
- `internal/notification/` — task notification 모델과 서비스
|
|
|
|
## 제외 경로
|
|
|
|
- `internal/workflow/` — enqueue 가능 상태 판단
|
|
- `internal/storage/` — DB query wrapper
|
|
- `internal/http/` — API 요청 처리
|
|
|
|
## 주요 구성 요소
|
|
|
|
- `Client` — River client wrapper
|
|
- `TaskWorker` — task job 실행 worker
|
|
- `TaskJobArgs` — River job payload
|
|
- `notification.Service` — task 상태 알림 처리
|
|
|
|
## 유지할 패턴
|
|
|
|
- workflow는 `TaskEnqueuer` 인터페이스로 scheduler를 호출한다.
|
|
- River migration/start/stop 책임은 scheduler client 안에 둔다.
|
|
|
|
## 다른 도메인과의 경계
|
|
|
|
- **workflow**: enqueue 요청과 상태 전이 정책은 workflow가 결정한다.
|
|
- **persistence**: task 상태 저장은 Store 경계를 통해 수행한다.
|
|
- **adapters**: 실제 외부 알림 연동은 adapters 도메인과 분리한다.
|
|
|
|
## 금지 사항
|
|
|
|
- worker에 HTTP handler 로직을 넣지 않는다.
|
|
- scheduler에서 SQL query를 직접 호출해 Store 경계를 우회하지 않는다.
|