Synchronous 🆚 Asynchronous | RabbitMQ 기반 비동기 처리 구조
·
TIL (Today I Learned)
⏱️ 동기와 비동기동기(Synchronous)한 작업이 완료될 때까지 대기한 후 다음 작업을 수행하는 방식하나의 요청이 끝나기 전까지 다음 처리를 하지 못합니다.특정 작업이 오래 걸릴 경우 다른 작업이 블로킹(Blocking) 됨순차적으로 실행되므로 코드의 실행 흐름을 예측하기 쉽지만, 속도가 느릴 수 있음 비동기(Asynchronous)한 작업을 실행하는 동안 다른 작업을 동시에 수행하는 방식 (대기하지 않음)요청을 보낸 뒤 응답을 기다리지 않고 바로 다음 작업을 진행시간이 오래 걸리는 작업(예: API 호출, 데이터베이스 조회, 파일 처리)을 비동기로 처리하면 성능이 향상됨 비교 동기비동기작업 처리 방식순차적으로 실행동시에 여러 작업 가능응답 대기 여부요청이 끝날 때까지 대기결과를 기다리지 않고 즉시..
[table-now] 1:1(예약자:가게) 채팅 기능 고도화를 위해 RabbitMQ Relay를 적용한 이유
·
Dev Projects
🔍 개요TableNow의 1:1 채팅 기능은 예약자와 가게 사장이 실시간으로 원활하게 소통할 수 있도록 제공된 기능이다. 초기에는 Spring의 SimpleBroker를 사용해 간단하게 구현되었지만, 멀티 인스턴스 환경에서 채팅 메시지가 공유되지 않는 문제점이 있었다.이에 따라 RabbitMQ를 도입하고, STOMP Relay 구조로 전환함으로써 실시간성과 확장성을 확보하고자 했다.이 글에서는 기존 구조의 한계와 개선 이유, 그리고 RabbitMQ Relay 구조를 선택하게 된 배경과 테스트 결과를 정리한다. ⚠️ 기본 채팅 구조의 한계 - SimpleBroker의 구조적 문제점Spring의 기본 메시지 브로커인 `SimpleBroker`는 다음과 같은 한계를 가지고 있었다:단일 서버 메모리 기반메시지..