Celery란 무엇인가
Celery공식 문서에서는 Celery를 이렇게 소개한다.
Celery is a simple, flexible, and reliable distributed system to process vast amounts of messages, while providing operations with the tools required to maintain such a system
정의에 따르자면 Celery는 (단순하고 유연하고 신뢰할만한) '메시지를 처리하는 분산된 시스템'이다.
다만 해석을 더하자면, Celery는 시스템 그 자체라고 보기는 어렵고 시스템을 구성하는 한 요소로 봐야될 듯 하다.
위 정의에서도 언급되듯이 Celery는 시스템을 유지하기 위해서 다른 도구들을 필요로 한다.
추측하자면 도구들은 Redis 혹은 RabbitMQ를 비롯한 Message Broker를 지칭하는 듯 하다.
메시징 시스템
그렇다면 메시지를 처리하는 분산된 시스템은 무엇일까.. 무슨 일을 하는, 어떤 목적을 갖는 시스템인 것일까..
보다 익숙한 표현으로서 '메시징 시스템'을 검색하면 JMS(Java Message Service)를 소개하는 오라클 문서가 나온다.
해당 문서에서는 MOM(Message-Oriented Middleware)라는 단어가 나온다.. 익숙치 않은 '미들 웨어'라는 단어가 다시 등장한다.
MOM에 대한 이해는 접어두고 위키피디아를 이용해보자..
위키피디아에서 Messaging System이 나온다. 정확히는 Enterprise Messaging System이다. 정의를 살펴보자.
An enterprise messaging system (EMS) or messaging system in brief[1] is a set of published enterprise-wide standards that allows organizations to send semantically precise messages between computer systems.
'의미론적으로 정확한(sementically precise)메시지 전송을 컴퓨터 시스템 간에 가능하게하는 표준들의 집합'이라고 한다.
다소 명확하게 이해가 안되는 부분이 있지만 억지로 해석을 해보자면
- '의미론적으로 정확한(sementically precise) 메시지' -> 아마 통신 규약(protocol)을 염두한 것이 아닐까 추측해본다.
- '컴퓨터 시스템 간에', '메시지 전송' -> 메시징 시스템이 분산된 시스템 사이에서 메시지를 전송하는 시스템인건 맞는 듯하다. 컴퓨터가 전송하는게 뭐.. 데이터겠지만, 다만 메시지가 정확히 어떤 형태인지는 아직 아리송하다.
- '표준들의 집합' -> 표준이라는 건 규칙을 말하는 것일까, 가장 이해하기 어려운 부분이다.
정의에 너무 천착할 수는 없고 여하튼 그 이름에서 느껴지는 이미지를 크게 벗어나지는 않는다.
'분산된 시스템 사이에서 메시지 형태의 데이터 송수신을 가능하게 하는 시스템'정도로 정리해 볼 수 있지 않을까 싶다.
마무리
목표는 Celery의 정확한 역할과 사용법을 찾아 보고, 나아가 Message Broker로서 자주 사용되는 Redis와 RabbitMQ의 차이를 정리해보는 것이였지만.. 역시 문서로 정리한다는 것은 품이 많이 들어간다.
MOM은 꼭 다시 살펴보자.
'IT기술 관련 > Python' 카테고리의 다른 글
[Celery] #2 MOM(Message Oriented Middleware) (0) | 2020.08.23 |
---|