헬창 개발자

메시지 브로커(Redis)와 Celery 본문

공부방

메시지 브로커(Redis)와 Celery

찬배 2025. 5. 29. 17:48

✏️ Redis란?

Redis(REmote DIctionary Server)는 인메모리 기반의 오픈소스 NoSQL 데이터 저장소입니다.
데이터를 RAM에 저장하여 빠른 읽기/쓰기 성능을 제공합니다.

주요 특징

  • NoSQL: 키-값(key-value) 기반 저장소
  • 기본 자료구조 지원: String, List, Set, Hash, Sorted Set 등
  • 싱글 스레드 기반: 구조는 단순하지만 성능은 매우 뛰어남
  • 다양한 언어 지원: Python, Node.js, Java, Go 등 클라이언트 제공

💡 기존 DB가 있는데도 Redis를 사용하는 이유가 뭘까?
DB는 데이터를 디스크에 직접 저장(write)하기 때문에 서버에 문제가 발생하여 다운되더라도 데이터가 손실되지 않는데
매번 디스크에 접근해야하기 때문에 사용자가 많아질 수록 부하가 많아져서 느려질 수 있어서 캐시 서버를 도입하여 사용해야한다.
캐시 서버로 이용할 수 있는 것이 바로 Redis이다.

 

Redis의 활용 사례

캐싱 DB 부하 감소 및 응답 속도 향상 (자주 쓰는 데이터 저장)
세션 관리 분산 서버 환경에서 세션 공유
실시간 랭킹 Sorted Set을 이용한 리더보드 구현
메시지 큐 / Pub-Sub 실시간 채팅, 알림 시스템에 활용
분산 락 여러 서버 간 자원 접근 제어
카운터 방문자 수, 이벤트 카운트 등 실시간 통계 처리
데이터베이스 용도 영속성 옵션을 설정해 NoSQL DB처럼 사용 가능

 

Redis의 영속성(Persistence)

RAM 기반 저장소지만 데이터를 디스크에 저장할 수 있는 두 가지 방식 제공:

RDB (Snapshot) 주기적으로 메모리 데이터를 디스크에 저장 (스냅샷)
AOF (Append Only File) 모든 쓰기 명령을 로그처럼 기록하여 높은 복구 가능성 제공

 

✏️ Celery란?

Celery비동기 작업 처리(Async Task Queue)와 스케줄링을 위한 파이썬 기반 프레임워크입니다.
복잡한 작업을 백그라운드에서 비동기로 처리하여 애플리케이션의 응답성을 향상시킵니다.

 주요 특징

  • Task Queue 시스템: 작업을 큐에 넣고 Worker가 비동기로 처리
  • Message 기반 아키텍처: 클라이언트 ↔ 브로커 ↔ 워커 간 메시지로 통신
  • 높은 확장성: 여러 개의 Worker와 Broker를 통해 수평 확장 가능
  • 멀티 언어 지원: Python 외에도 다양한 언어에서 사용 가능
  • 스케줄링 가능: 주기적 작업(Cron job)도 수행 가능

 

메시지 브로커

Celery는 메시지를 주고받기 위해 Broker를 사용합니다.

  • 대표적인 브로커: Redis, RabbitMQ
  • 역할: 클라이언트가 보낸 작업 메시지를 Worker에게 전달

동작 구조 요약

  1. Client가 작업(Task)을 요청
  2. Broker가 메시지를 전달
  3. Worker가 메시지를 수신하고 비동기로 작업 수행
  4. (선택) 결과 백엔드를 통해 작업 결과 저장/조회 가능

async task process (by celery)

많은 사람들이 Celery를 사용할 때 Broker로 RabbitMQ나 Redis 중 무엇을 써야 할지 헷갈려 하죠.


  RabbitMQ Redis
역할 전통적인 메시지 브로커 키-값 저장소 기반의 메시지 브로커
신뢰성 높음 (메시지 보존/재전송 가능) 낮음 (재시작 시 메시지 유실 가능)
속도 안정적이고 빠름 더 빠름 (특히 짧은 작업에 유리)
기능 복잡한 라우팅, Ack, Dead Letter 등 기본 Pub/Sub 수준의 라우팅만 지원
설정 난이도 복잡함 간단함
Celery 지원 공식 1등 지원 지원은 되지만 몇몇 기능이 제한됨

 

 

참고

https://velog.io/@wnguswn7/Redis%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C-Redis%EC%9D%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%82%AC%EC%9A%A9-%EC%8B%9C-%EC%A3%BC%EC%9D%98%EC%A0%90

 

https://velog.io/@osj1405/FastAPI-Celery

 

Comments