SFVibe · Local Event Platform Backend
미국 직무체험 중 참여한 프로덕션 Django 백엔드 개선 프로젝트
동기식 이벤트 처리 병목을 Redis·Celery 기반 비동기 파이프라인으로 전환
운영 중인 Django 서비스에서 URL 수집부터 파싱·AI 처리·DB 저장까지 하나의 요청에서 처리하던 구조를, Redis와 Celery를 활용한 비동기 처리 구조로 분리해 응답 지연과 서버 부하를 개선했습니다.
- Django 요청 안에서 직접 수행하던 URL 파싱·이벤트 추출·AI 처리·DB 저장 흐름을 Redis Queue와 Celery Worker 기반 비동기 구조로 분리
- Django는 작업 접수와 Queue 등록에 집중하고, 실제 이벤트 처리는 Worker가 수행하도록 Producer–Broker–Consumer 구조로 책임 분리
- 순간적으로 다수의 URL이 유입되더라도 Django 서버가 모든 작업을 동시에 처리하지 않도록 Redis Queue를 트래픽 버퍼 및 Load Leveling 계층으로 활용
- 단일 URL 처리, 다중 URL 배치, 이메일 기반 URL 수집을 독립적인 Celery Task로 분리하고 작업 성격에 따라 Queue를 구성
- 성능 문제는 단순히 서버 사양이나 개별 함수 최적화만으로 해결되는 것이 아니라, 요청과 무거운 작업이 어디에서 결합되어 있는지 데이터 흐름을 먼저 파악하는 것이 중요하다는 점
- 비동기 처리 설계에서는 태스크 책임 분리, 재시도 정책, rate limiting, 큐 분리가 중요하다는 점