우리는 flask를 사용하여 프로젝트를 구현하려한다.
하지만 flask는 동기적으로 처리하기 때문에 데이터 처리 메일 전송 등 무거운 작업이나
시간이 오래 걸리는 작업들은 앞선 처리가 될 때까지 기다려야한다.
때문에 celery랑 rabbitMQ를 사용하여 비동기로 실행하도록하여 퀄리티를 높이고자 한다.
Celery? 처음으로 생각나는 것이 초록색 멀대같이 생긴 수분 가득한 채소가 생각난다. 거기서 나온 말인 것은 맞다. 이는 Celery 공식페이지나 깃허브에서 실제 Celery사진이 나와 있다.
(이름 유래는 알 수 없으나 Task Queue와 관련 있을 것 같다.)
Celery란?
Task Queue
다시 되짚어보자.
flask는 동기적 처리를 한다 -> 느리다 -> 이를 위해 Celery를 사용한다 -> Celery를 사용하기 위해서 Message Broker를 통해 Flask에 테스크를 Celery로 전달해준다 -> Celery는 Task를 받아 비동기적으로 처리한다
그렇다면 Message Broker는 무엇인지 더 살펴보겠습니다.
위 내용을 이해하고 오셨다면 RabbitMQ가 Message Broker 중 하나라는 것을 아실겁니다.
그렇다면 Message Broker은 무엇이며? 어떤 역할을 할까? 라는 생각이 드실겁니다.
이제 한번 알아봅시다.
Message Broker를 사용하면 DW에서는 수집한 데이터를 관리하고, AS는 이 데이터를 가공하여 사용한다.
기존 : 실시간으로 데이터가 계속 쌓이는 TABLE을 빠르게 조회하는 것은 힘들다. 조회 성능을 높이기위해 테이블에 INDEX를 걸면 INSERT 속도가 느려진다.
Meassage Broker : AS에서는 별도의 조회과정이 필요없이, 메세지 큐에 적재되는 메시지를 감시하고 있다가 메시지가 적재되면 바로 가져다가 사용할 수 있다.