<aside> 🛡️

운영을 고려해 구현한 기능과 실제 운영에서 검증한 경험을 구분한다. 현재는 로컬 Mock/Live 검증 단계이며 공개 Hosted 운영은 아직 시작하지 않았다.

</aside>

검증 상태 구분

상태 의미
실제 로컬·Live 검증 로컬 실행 또는 실제 공공 API에서 확인
실패 주입 검증 Mock Source와 테스트로 장애 조건을 재현
구현 완료·미운영 코드와 설정은 있지만 실제 Provider·분산 환경에서 검증하지 않음
Backlog 실제 배포 요구가 생길 때 도입

외부 API 실패 정책

상황 처리
Timeout, HTTP 429, 5xx 제한된 횟수와 Backoff 안에서만 재시도
인증 오류, 잘못된 요청 재시도하지 않고 Source 실패로 변환
일부 Source 실패 확인 가능한 정보와 failed_sources, limitations를 함께 반환
최신 조회 실패 허용 기간 안의 Stale Cache가 있을 때만 경고와 함께 사용
지원 범위 밖 장애나 시설 없음으로 바꾸지 않고 Coverage 상태를 표시

Fresh Cache → Public API → 성공 결과 Cache → 실패 시 허용된 Stale Cache → 다른 Source의 확인 가능한 정보 → Partial Response

HTTP와 Cache

항목 현재 기준 운영상 의도
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와 Metrics

영역 확인 항목 현재 한계
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>

운영 점검 순서