피드로 돌아가기
Dev.toBackend
원문 읽기
ASP.NET Core BackgroundService 도입을 통한 504 Gateway Timeout 해결
How I Am Building an AI Meeting Assistant in ASP.NET Core (And Avoided Timeout Nightmares)
AI 요약
Context
사용자 업로드 오디오의 전사 및 AI 요약 과정에서 90초 이상의 처리 시간이 소요되는 구조. 동기식 API Controller 처리 방식으로 인해 브라우저 타임아웃 및 504 Gateway Timeout이 발생하는 병목 지점 식별.
Technical Solution
- HTTP Request Pipeline과 무거운 작업의 분리를 위한 비동기 Worker 구조 채택
- BackgroundService 상속을 통한 애플리케이션 생명주기 기반의 Long-lived 프로세스 구현
- DB Status 필드(Pending)를 활용한 폴링 기반의 작업 큐잉 메커니즘 설계
- IServiceProvider.CreateScope를 통한 BackgroundService 내 Scoped Service의 안전한 주입 및 활용
- Task.Delay 기반의 루프 제어로 시스템 리소스 과점 방지 및 주기적 작업 체크 수행
실천 포인트
1. 외부 API 호출이나 대용량 파일 처리가 5~10초를 초과하는지 확인
2. Request-Response 사이클에서 무거운 로직을 분리하여 Background Worker로 이관
3. BackgroundService 내에서 DB Context 사용 시 반드시 Scope 생성 후 Resolve 수행
4. 작업 상태를 추적할 수 있는 상태 값(Pending, Processing, Completed) 설계 적용