1. 핵심 메시지
- AI 개인화는 살리되, 외부 AI에 미션 생성 흐름이 종속되지 않게 한다.
- 외부 AI 호출은 비용과 장애 리스크가 있다.
- AI는 후보를 만들고, 최종 확정은 서비스 정책이 한다.
- 실패 시 seed template fallback으로 미션 생성은 유지한다.
2. 현재 상태와 고도화 방향
- 베타 배포: seed template 기반 미션 + AI 말투 개인화
- 현재 고도화: AI가 title/description/category/difficulty까지 제안
- seed template은 제거하지 않고 fallback 안전망으로 유지




3. 주요 흐름
- fallback 미션 먼저 생성
- requestId로 기존 결과 확인
- rate limit 통과 시 외부 AI 호출
- AI 후보 검증
- 성공 시 mission 반영, 실패 시 fallback 유지

4. 의사결정 1: rate limit 위치
- Gateway/Nginx: HTTP 요청 기준이라 내부 gRPC/batch 보호가 어렵다.
- mission 하루 제한: 비즈니스 제한이지 AI 비용 보호 정책은 아니다.
- 결정: provider 호출 직전: ai 모듈 경계에서 제한한다.

5. 의사결정 2. Redis + fail-closed
- in-memory는 서버가 늘어나면 전체 호출량 제한이 깨진다.
- Redis는 여러 ai 인스턴스가 같은 카운터를 공유한다.
- Redis 장애 또는 limit 초과 시 provider 호출을 막고 fallback으로 내려간다


6. 의사결정 2: Redis + fail-closed
- AI 결과는 그대로 확정하지 않는다.
- 길이, 금지 표현, 캐릭터 말투 형식, category/difficulty 정책을 검증한다.
- 실패 시 사용자 에러가 아니라 fallback 전환으로 처리한다.

7. 결과와 회고
- 외부 AI 호출량을 애플리케이션 레벨에서 제어했다.
- AI/Redis 장애가 있어도 미션 생성 흐름은 유지된다.
- fallback 여부와 error type으로 AI 품질 저하를 관측할 수 있다.
회고
AI 기능은 잘 생성되는지 뿐만 아니라 비용, 재시도, 장애, 잘못된 출력까지 함께 설계해야 한다.
'IL > TIL' 카테고리의 다른 글
| 알림 및 장애 대응 Runbook (1) | 2026.06.02 |
|---|---|
| RAG 개인화 리뷰... 튜터님의...? (0) | 2026.06.01 |
| 최종프로젝트 인프라 모니터링 설계 (0) | 2026.05.28 |
| 사용자/제품 로그 설계 (0) | 2026.05.27 |
| CloudFront 기반 이미지 에셋 관리 방식 채택 (0) | 2026.05.26 |