<aside> 🛡️
운영을 고려해 구현한 기능과 실제 운영에서 검증한 경험을 구분한다. 현재는 로컬 Mock/Live 검증 단계이며 공개 Hosted 운영은 아직 시작하지 않았다.
</aside>
| 상태 | 의미 |
|---|---|
| 실제 로컬·Live 검증 | 로컬 실행 또는 실제 공공 API에서 확인 |
| 실패 주입 검증 | Mock Source와 테스트로 장애 조건을 재현 |
| 구현 완료·미운영 | 코드와 설정은 있지만 실제 Provider·분산 환경에서 검증하지 않음 |
| Backlog | 실제 배포 요구가 생길 때 도입 |
| 상황 | 처리 |
|---|---|
| Timeout, HTTP 429, 5xx | 제한된 횟수와 Backoff 안에서만 재시도 |
| 인증 오류, 잘못된 요청 | 재시도하지 않고 Source 실패로 변환 |
| 일부 Source 실패 | 확인 가능한 정보와 failed_sources, limitations를 함께 반환 |
| 최신 조회 실패 | 허용 기간 안의 Stale Cache가 있을 때만 경고와 함께 사용 |
| 지원 범위 밖 | 장애나 시설 없음으로 바꾸지 않고 Coverage 상태를 표시 |
Fresh Cache → Public API → 성공 결과 Cache → 실패 시 허용된 Stale Cache → 다른 Source의 확인 가능한 정보 → Partial Response
| 항목 | 현재 기준 | 운영상 의도 |
|---|---|---|
| Timeout / Retry | 10초 / 최대 2회 | 무한 대기와 무제한 재시도 방지 |
| Connection Pool | 최대 20 · Keep-alive 10 | 요청마다 연결을 새로 만들지 않음 |
| 동시성 | API Page·시설 조회 기본 4 | 병렬성은 확보하되 외부 API 과호출 제한 |
| Single-flight | 동일 Process·Cache Key 기준 | 동시 Cache Miss를 한 번의 Source 요청으로 합침 |
| Cache | Memory 기본 · Redis 선택형 | 로컬 복잡도를 낮추고 다중 Instance일 때만 공유 Cache 선택 |
| 영역 | 확인 항목 | 현재 한계 |
|---|---|---|
| Health | 실행 Mode, 인증, Cache, 공공 API 설정 여부 | 외부 API를 직접 호출하는 Probe가 아니라 설정 완전성 검사 |
| Metrics | Tool/API 호출·오류·평균 지연, Cache Hit/Miss/Stale, Fallback | Process Memory Snapshot이며 영속 저장·Alert·분산 집계 없음 |
| Rate Limit | 선택형 Process-local 제한 | 다중 Instance 공유 제한은 아직 없음 |
<aside> ⚠️
OIDC 코드, Redis, Hosted Compose가 있다는 사실은 실제 운영 완료를 의미하지 않는다. 실제 Provider 연동, 공개 Endpoint, SLO, Alert, Trace, 다중 Instance 검증은 아직 남아 있다.
</aside>