실시간 변환 상황 구현
초기에는 DB polling 방식(주기적 SELECT)을 고려했으나, 요청이 증가할수록 DB read 부하가 급격히 증가하고 실시간성이 떨어지는 문제가 있었다.
- 변환 진행 상태를 실시간으로 사용자에게 전달
- DB 부하를 최소화하면서 낮은 지연으로 상태 동기화
- Pub/Sub 방식을 구성해 다수 요청 상황에서도 확장 가능한 구조 설계
DB polling / 서버 메모리 / WebSocket 검토 후 Redis Pub/Sub + SSE 선택
- Worker - Redis Pub (진행 상태 발행)
- API - Redis Sub (이벤트 구독)
- API → SSE로 클라이언트에 push
- Worker → Redis → API → SSE → Client의 구조 형성
💡 배운 점: "실시간" 문제는 DB보다 메시지 기반 구조로 풀어야 하고, 상태 데이터는 저장보다 전파가 중요하다.