배너 이미지

동기 vs 비동기 & 메시지 브로커 개념 정리

2025. 5. 1. 20:14·CS공부/인프라

 

✅ 동기(Synchronous) vs 비동기(Asynchronous)

구분 동기(Synchronous) 비동기(Asynchronous)

처리 방식 요청 → 응답 완료까지 대기 요청 후 즉시 반환, 결과는 나중에 처리
예시 함수 호출, REST API 콜백 함수, 이벤트 큐, Kafka
장점 구현 단순, 흐름 예측 쉬움 사용자 응답 속도 향상, 시스템 확장성 우수
단점 병목 발생 가능, 서버 부하 증가 흐름 추적 복잡, 장애 처리 고려 필요
사용 예 사용자 인증, 결제 등 로그 저장, 알림 처리, 비동기 이메일 발송

🔁 예시

[동기 방식]
클라이언트 → 서버에 요청 → 응답 받을 때까지 대기 → 다음 처리

[비동기 방식]
클라이언트 → 서버에 요청 → 응답 대기 없이 바로 다음 로직 수행
                    ↘ (결과는 메시지 큐 등으로 별도 전달)

 


✅ 메시지 브로커(Message Broker)란?

서로 독립적인 시스템 간 데이터를 전달해주는 중간 매개체

💬 언제 메시지 브로커를 쓸까?

  • 비동기 알림 처리: 댓글, 채팅 알림 등 빠른 응답 + 느린 처리 분리
  • 로그 처리/이벤트 스트리밍: 사용자 행동 분석, Clickstream 처리
  • 시스템 간 통합: 서로 다른 서비스 간 데이터 전달 (예: 주문 → 결제 시스템)
  • 장애 복구 고려: 처리 실패 시 재전송 및 메시지 적재 가능

🎯 메시지 브로커의 역할

  • 생산자(Producer) → 메시지 생성 및 발행
  • 브로커(Broker) → 메시지를 수신하고 보관 (예: Kafka, RabbitMQ)
  • 소비자(Consumer) → 메시지를 비동기로 구독하고 처리

🔄 주요 특징

항목 설명

비동기 처리 요청과 응답이 분리되어 독립적으로 처리 가능
내결함성(Fault Tolerance) 메시지가 브로커에 일시 저장되므로 장애 시 재처리 가능
확장성 다수의 Consumer가 메시지를 병렬로 처리 가능
느슨한 결합 Producer ↔ Consumer 간 직접 의존성 없음

🔍 메시지 브로커별 장단점, 추천 사용 상황 및 프로젝트 규모

브로커 장점 단점 추천 사용 예 적합한 프로젝트 규모

종류 장점 단점 사용 사례 적합한 환경
Kafka 초고속 처리량, 대용량 스트리밍, 메시지 내구성 강함 운영 복잡도, 실시간성이 약간 느릴 수 있음 실시간 로그, Clickstream, 이벤트 소싱, 대용량 데이터 파이프라인 대규모 시스템, 데이터 중심 아키텍처, 마이크로서비스 기반 환경
RabbitMQ 다양한 라우팅 방식(Fanout, Topic 등), 메시지 우선순위 설정 가능 브로커 상태가 복잡할 수 있음, 처리량은 Kafka보다 낮음 단순한 큐잉, 알림 전파, 업무 시스템 메시징, RPC 스타일 통신 중소 규모 서비스, 워크플로우 기반 시스템, 유연한 메시징 필요 환경
Redis Pub/Sub 지연 시간 매우 짧음, 설정 단순, 의존성 최소화 메시지 내구성 없음(구독 중에만 수신 가능) 단순한 내부 이벤트 브로드캐스트, 캐시 기반 메시지 전파 소규모 서비스, 내부 통신, 빠른 알림 트리거 환경
Amazon SQS 완전 관리형, 확장성 뛰어남, 운영 필요 없음 실시간 처리에 적합하지 않음, 기본 큐는 순서 보장 없음 클라우드 기반 백오피스 처리, 느긋한 작업 큐, 비용 효율적 처리 클라우드 중심의 스타트업, 관리 부담 줄이고 싶은 중소 규모 서비스

 

'CS공부 > 인프라' 카테고리의 다른 글

Prometheus & Grafana 기반 Springboot 모니터링 구축(with 401에러)  (0) 2025.05.08
모니터링 시스템 비교: ELK vs Prometheus & Grafana  (0) 2025.05.08
OAuth2 인증 로직 및 Google 기반 구현  (0) 2025.04.27
GitHub 웹훅 기반 Jenkins CI/CD 파이프라인 설계  (0) 2025.04.23
Docker로 Redis 클러스터 구축하기  (0) 2025.04.22
'CS공부/인프라' 카테고리의 다른 글
  • Prometheus & Grafana 기반 Springboot 모니터링 구축(with 401에러)
  • 모니터링 시스템 비교: ELK vs Prometheus & Grafana
  • OAuth2 인증 로직 및 Google 기반 구현
  • GitHub 웹훅 기반 Jenkins CI/CD 파이프라인 설계
quokkaST
quokkaST
  • quokkaST
    stquokka
    quokkaST
    • 개발자 (77)
      • n8n (2)
      • CS공부 (46)
        • Java & Spring (15)
        • 인프라 (7)
        • 운영체제 & 시스템 (9)
        • 기타 CS지식 (7)
        • 네트워크 (6)
        • 데이터베이스 (2)
      • 알고리즘 (16)
      • 프로젝트 (8)
        • 감정&금융챗봇 (8)
      • 리팩토링 (5)
        • horong (5)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
상단으로

티스토리툴바