예전에는 데이터 처리 작업을 수동으로 하던 시대를 거쳐 왔습니다. 하지만 현재는 대용량의 데이터를 효율적으로 처리하기 위해 분산 데이터 처리 시스템이 필요해졌습니다. 이를 위해 Celery라는 파이썬 기반의 분산 작업 큐 프레임워크를 활용할 수 있습니다.
Celery란?
Celery는 파이썬에서 사용되는 분산 작업 처리 프레임워크입니다. 이를 이용하면 여러 작업을 분산하고, 비동기적으로 처리할 수 있습니다. 큰 규모의 데이터 처리 작업을 빠르고 효율적으로 처리할 수 있으며, 여러 대의 서버로 작업을 분산시킬 수 있습니다.
Celery의 구조
Celery는 크게 세 가지 구성 요소로 이루어져 있습니다.
-
Message broker: 메시지 브로커는 작업을 큐에 저장하고 작업자(worker)에게 전달하는 역할을 합니다. 대표적으로 RabbitMQ, Redis, Kafka 등이 있습니다.
-
Task worker: 작업자는 큐에서 작업을 가져와 처리하는 역할을 합니다. 여러 대의 작업자를 구성하여 작업을 분산 처리할 수 있습니다.
-
Task result store: 작업 결과를 저장하는 공간입니다. 주로 Redis나 데이터베이스를 이용하여 결과를 저장합니다.
Celery로 분산 데이터 처리하기
Celery를 사용하여 분산 데이터 처리를 수행하는 방법은 다음과 같습니다.
-
Celery 설치하기:
pip install celery
명령어를 사용하여 Celery를 설치합니다. -
Celery 작업자(worker) 설정하기: Celery 작업자는
@task
데코레이터를 이용하여 정의할 수 있습니다. 작업을 처리하는 함수에 이 데코레이터를 붙여주면 됩니다.
from celery import Celery
app = Celery('myapp', broker='pyamqp://guest@localhost//')
@app.task
def process_data(data):
# 분산 처리 작업 수행
return processed_data
- Celery 작업자 실행하기: 작업을 처리하기 위해 Celery 작업자를 실행시켜야 합니다. 다음 명령어를 사용하여 작업자를 실행시킬 수 있습니다.
celery -A myapp worker --loglevel=info
- Celery 작업 생성하기: 분산 처리할 작업을 Celery에 전달해야 합니다. 다음과 같이 작업을 생성하고 큐에 넣을 수 있습니다.
result = process_data.delay(data)
- Celery 작업 결과 확인하기: 작업이 완료되면 작업 결과는 Celery 결과 저장소에 저장됩니다. 결과를 확인하려면 작업의 ID를 사용하여 다음과 같이 작업 결과를 조회할 수 있습니다.
result = process_data.AsyncResult('작업 ID')
result.result # 작업 결과 조회
Celery를 이용한 분산 데이터 처리를 통해 대용량의 데이터를 효율적으로 처리할 수 있습니다. 분산 작업 처리 시스템을 구축하고자 할 때는 Celery를 고려해보세요.
#data_processing #distributed_computing