CVFactory 백엔드 아키텍처: FastAPI, Celery, Playwright 활용 전략
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- *대상자**: 백엔드 개발자, AI/머신러닝 엔지니어, DevOps 엔지니어
- *난이도**: 중급 이상 (아키텍처 설계, 비동기 처리, 컨테이너화 기술 이해 필요)
핵심 요약
- FastAPI + Celery + Playwright 조합으로 비동기 처리 및 확장성 구현
- 모듈화된 작업 흐름 (
extract_html.py
→text_extraction.py
→content_filtering.py
→cover_letter_generation.py
)을 통해 재사용성 및 관리성 향상 @shared_task
및pydantic.BaseSettings
사용으로 에러 처리와 설정 관리 강화
섹션별 세부 요약
1. **아키텍처 개요**
- FastAPI를 사용한 HTTP 인터페이스 구현
- Celery로 비동기 작업 큐 관리
- Playwright를 통해 로그인 필요 페이지 크롤링
- LangChain으로 LLM 프롬프트 템플릿 처리
- Docker + Supervisord로 컨테이너화 및 배포
2. **작업 흐름 모듈**
extract_html.py
: URL 기반의 Playwright 컨텍스트 생성 및 인증 처리text_extraction.py
:BeautifulSoup
으로 HTML 정제 및 불필요 요소 제거content_filtering.py
: PII 제거 및 불용어 필터링cover_letter_generation.py
: LLM 호출 및 결과 스트리밍
3. **에러 처리 및 로깅 전략**
@shared_task
로 에러 복구 메커니즘 구현 (retry_backoff=True
사용)- 구조화된 로깅 (
task_logger
)을 통한 모니터링 최적화 - CloudWatch으로 프로덕션 로그 수집, 로컬에서는 파일 저장
4. **최적화 팁**
- Celery에 JSON 직렬화 가능한 데이터만 전달
- I/O 중량 작업(크롤링)은 웹 워커 외부의 전용 워커로 분리
pydantic.BaseSettings
로 환경 변수 검증 강화
결론
- 모듈화된 아키텍처로 확장성과 관리성을 동시에 달성 가능
@shared_task
와pydantic.BaseSettings
사용을 통해 에러 탐지 및 복구를 강화- Docker + Supervisord로 재현 가능한 컨테이너 배포 가능
- 비동기 처리 및 로깅 전략을 적용해 시스템 안정성 확보