<aside> 💡
공급사 Contents 동기화 로직
</aside>
<aside> ❗
Expedia API Link 만료 시간
graph LR
subgraph AS-IS["AS-IS (paragon_batch)"]
A1[Scheduler] --> A2[Single Service<br/>280+ lines]
A2 --> A3[Direct DAO]
A3 --> A4[(Database)]
end
subgraph TO-BE["TO-BE (neuron batch)"]
B1[Scheduler] --> B2[Domain Service]
B2 --> B3[API Layer]
B3 --> B4[Converter]
B4 --> B5[Merge Service]
B5 --> B6[Repository]
B6 --> B7[(Database)]
end
style A2 fill:#ff6b6b
style B2 fill:#4ecdc4
style B3 fill:#4ecdc4
style B4 fill:#4ecdc4
style B5 fill:#44bd32
| 항목 | AS-IS | TO-BE |
|---|---|---|
| 처리 방식 | 순차 처리 | 병렬 처리 (CompletableFuture + ThreadPool) |
| 동시성 제어 | 없음 | Semaphore 기반 제어 |
| 책임 분리 | 단일 클래스에 모든 로직 | Service → API → Converter → Merge |
| 페이징 처리 | 일반 Loop | 콜백 기반 스트리밍 |
| DB 저장 | 단건 저장 | Bulk UPSERT |
| 코드 라인 | 280+ 라인 단일 메서드 | 평균 50-100 라인 메서드로 분리 |
| 항목 | AS-IS ( 평균 ) | TO-BE ( 평균 ) | 개선 |
|---|---|---|---|
| Regions | 1시간 30분 | 30 ~ 40 분 | 56% ~ 67% |
| Contents | 4 ~ 5 시간 | 30 ~ 60 분 | 75% ~ 90% |