프로젝트

비동기 작업 도구 선택

content0474 2025. 1. 27. 11:02
특징
Celery
Scarpy
BeautifulSoup+ Requests
AWS Lambda
설치/설정 복잡성
브로커 설정 필요
파이썬 패키지로 간단하게 설치 가능
파이썬 내장 라이브러리로 간단하게 사용 가능
AWS 계정 및 Lambda 함수 설정 필요
비동기 처리
지원
제한적 (scarpy-redis 사용)
직접 구현 필요
자동 확장
주기 작업 관리
지원(django-celery-beat)
지원하지 않음 (스케줄러 별도로 필요)
cron 작업이나 celery 연동 필요
지원(EventBridge)
확장성
워커 수를 조절하여 확장 가능
Redis 기반으로 확장 가능
확장성 낮음
작업량에 따라 자동 확장
유지 보수
브로커와 워커 관리 필요
Scrapy 프로젝트 구조로 통합 관리 용이
관리가 간단함
함수 단위로 유지보수 필요
웹사이트 유형
모든 유형
정적 및 일부 동적 웹사이트
정적 웹사이트에 더 적합
모든 유형
단점
설정이 복잡할 수 있음
비동기 처리와 확장성이 제한적임
동적 크롤링과 그 이후의 과정까지 한번에 처리하기 어려움
실행 시간 제한(15분) → 작업 병렬처리 필요

 

각 도구의 주요 특징 및 선택 기준

 

Celery:
적합한 상황: 크롤링 이후 대규모 데이터 처리가 필요하거나, 작업 실패 시 재시도와 상태 추적이 중요한 경우.
장점: 확장성 우수, 체이닝/그룹 작업 등 복잡한 워크플로우 관리 가능.
단점: 설정 및 메시지 브로커 관리 필요.


Scrapy:
적합한 상황: 크롤링이 주요 목적이며, 정적 웹사이트나 간단한 동적 사이트 크롤링이 필요한 경우.
장점: 크롤링에 특화된 구조와 라이브러리 지원. 크롤러 개발이 쉬움.
단점: 비동기 처리 및 주기 작업에 추가 설정 필요. 복잡한 데이터 처리에는 부적합.

 

BeautifulSoup + Requests:
적합한 상황: 단순한 크롤링 작업이 필요한 경우.
장점: 간단하고 직관적. 소규모 프로젝트에 적합.
단점: 동적 웹사이트 크롤링 어려움. 확장성과 유지보수에 한계.

 

Playwright:
적합한 상황: JavaScript 렌더링이 필요한 동적 웹사이트 크롤링.
장점: 브라우저 자동화 지원, 동적 요소 처리 가능.
단점: 설정 복잡, 성능 면에서 비교적 느림.

 

AWS Lambda:
적합한 상황: 서버 관리 없이 크롤링 작업을 비동기적으로 실행하려는 경우.
장점: 서버리스 환경, 사용량에 따라 비용 절감 가능.
단점: 실행 시간 제한(15분)으로 장기 작업에 부적합.
왜 Celery를 선택했는가?
비동기 작업과 병렬 처리:

Celery는 크롤링 후 데이터를 병렬로 처리하고, Redis와 RabbitMQ를 통해 작업 상태를 관리하는 데 이상적입니다.
대규모 작업 처리와 확장성이 우수하므로 복잡한 데이터 워크플로우를 구축할 수 있습니다.

 

자동 재시도 및 오류 복구:
크롤링 실패나 네트워크 문제 발생 시 Celery의 자동 재시도 기능은 안정성을 보장합니다.
작업 실패에 대비한 백오프(backoff)와 상태 추적 기능도 장점입니다.

 

워크플로우 관리:
Celery는 체이닝, 그룹 작업, 서브태스크를 지원하므로 데이터를 크롤링한 후 이를 챗봇에 전달하고 저장하는 복잡한 흐름을 간단히 관리할 수 있습니다.

 

주기 작업 관리:
django-celery-beat와 통합하여 주기적인 크롤링 작업을 자동화할 수 있습니다.

 

유연성과 확장성:
Celery는 다양한 메시지 브로커(Redis, RabbitMQ 등)를 지원하며, 워커(worker)를 추가하여 성능 확장이 용이합니다.

'프로젝트' 카테고리의 다른 글

DB설계 전략-2  (0) 2025.01.24
DB설계 전략  (0) 2025.01.23
도커 실행 시 크롬드라이버와 크롬 버전 불일치  (1) 2025.01.22
ResourceExhausted  (0) 2025.01.21
소셜계정 연동 시 중복확인 문제  (0) 2025.01.20