너드팩토리가 트래픽 급증에 견디기 위해 Message Queue와 Load Balancer 중 무엇을 쓸지 비교한 글이다. 제품들이 매우 많은 데이터를 수집하다 보니 서비스가 불안정한 경우가 종종 있었고, 고객사가 특별한 이벤트를 진행하거나 급성장하면 트래픽이 급증할 수 있다는 상황에서 출발한다. 더 다양한 방법이 있지만 두 방법론만 다루며, 비교를 통해 적절히 활용하는 관점을 제공하는 것이 목적이다.
핵심 포인트- Message Queue는 인스턴스 간 데이터를 교환할 때 통신하는 방법으로, 대용량 데이터 처리를 위한 배치 작업이나 비동기 동작에 쓴다.
- Django나 Flask 같은 프레임워크는 사용자가 많아지거나 서비스 크기가 커지면 응답 시간이 길어지거나 서비스가 무너진다.
- 그 상태는 생산자와 소비자가 붙어 있는 형태로 볼 수 있다.
- 둘 중 하나가 항상 정답이 아니라 상황에 맞게 골라 쓰는 관점을 제시하는 것이 글의 목표다.
- 소프트웨어 아키텍트 입장에서 안정적으로 트래픽을 감당하기 위한 선택지로 두 가지를 검토했다.
상세 정리- 문제의 성격: 자체 트래픽 증가가 아니라 고객사 측 이벤트나 급성장으로 인한 외부 요인의 급증이 포함된다.
- MQ의 정의: 메시지 큐의 줄임말로, 인스턴스 사이에서 데이터를 주고받을 때 쓰는 통신 방법이다.
- MQ의 용도: 대용량 데이터를 배치로 처리하거나 비동기로 동작시켜야 할 때 활용한다.
- 프레임워크의 한계: 동기 처리 구조에서는 요청이 늘수록 응답 시간이 늘어나고 결국 서비스가 버티지 못한다.
- 생산자-소비자 관점: 요청을 만들어내는 쪽과 처리하는 쪽이 분리되지 않고 붙어 있으면 처리 속도가 곧 응답 속도가 된다.
- 글은 기술 비교에 앞서 각 기술을 간략히 설명해 두는 구성을 취한다.
왜 읽나트래픽이 몰릴 때 큐를 붙일지 서버를 늘릴지 판단해야 하는 팀에게, 두 접근이 각각 해결하는 문제의 성격 차이를 정리해 준다.