MQTT · 2026-05-03

MQTT 브로커 수평 확장 아키텍처 설계

대규모 디바이스 환경에서 안정적인 연결을 제공하기 위한 MQTT 브로커 수평 확장의 핵심 요소와 아키텍처 구성, 운영 고려사항 설명

작성일 : 2026-05-03 ㆍ 작성자 : 관리자
post
목차

소개

사물인터넷 환경이 커지면 단일 MQTT 브로커로는 처리 한계에 봉착한다. 수평 확장은 부하 분산과 고가용성을 통해 연결 수와 메시지 처리량을 확장하는 방법이다. 이 글에서는 초보자도 이해할 수 있도록 핵심 개념부터 설계 패턴, 운영 포인트까지 단계별로 정리한다.

기본 개념과 목표

수평 확장의 목적

수평 확장은 브로커 인스턴스를 늘려 동시 연결 수, 메시지 처리량, 내결함성을 확보하는 데 목적이 있다. 단일 실패 지점을 제거하고 트래픽 급증에 유연하게 대응할 수 있다.

중요 고려사항

  • 세션 지속성: 클라이언트 세션과 QoS 보장을 어떻게 유지할지
  • 토픽 라우팅: 메시지가 적절한 소비자에게 전달되는 방식
  • 상태 동기화: 구독 목록, 메시지 큐 상태 등
  • 운영 자동화: 모니터링, 오토스케일, 롤링 업데이트

아키텍처 패턴

로드밸런서 + 브로커 클러스터

가장 일반적인 패턴은 앞단에 TCP/SSL 로드밸런서를 두고 여러 브로커 노드로 요청을 분산하는 구조다. 로드밸런서는 연결을 라운드로빈이나 소스 IP 기반으로 분산한다. 이 방식은 연결 분산에 유리하지만 세션 스티키니스와 메시지 일관성 설계가 필요하다.

브로커 간 클러스터링

일부 브로커(예: EMQX, VerneMQ, HiveMQ)는 네이티브 클러스터링을 제공한다. 클러스터링으로 구독 정보와 메시지 메타데이터를 공유해 라우팅과 QoS 보장을 노드 간에 처리할 수 있다. 네이티브 클러스터는 복제, 파티셔닝 정책에 따라 성능과 일관성 특성이 달라진다.

브리지와 샤딩

브리지 방식은 브로커들을 토픽 기반으로 연결해 트래픽을 분산한다. 샤딩은 토픽 네임스페이스를 분할해 특정 브로커가 부분 집합을 책임지게 하는 방법이다. 샤딩은 스케일아웃 시 확장 비용 제어에 유리하지만 토픽 재배치 전략이 필요하다.

세션 및 메시지 일관성

세션 관리 전략

영속 세션을 유지해야 하는 시스템에서는 세션 상태를 중앙 저장소(예: Redis)나 브로커 클러스터가 관리해야 한다. 단기 접속 위주의 시스템은 스태틱 세션 없이도 쉽게 확장된다. 세션 상태를 외부화하면 노드 교체 시 유연성이 높아진다.

QoS와 메시지 보존

QoS 1·2 보장은 메시지 중복과 재전송 규칙을 잘 정의해야 한다. 메시지 지속성을 위해 영속 큐를 외부 데이터베이스나 분산 스토리지에 보관하면 내구성이 향상된다. 단, 성능 요구와 저장 비용 간의 균형을 설계해야 한다.

운영과 모니터링

모니터링 지표

  • 동시 연결 수
  • 메시지 입출력률(Pub/Sub TPS)
  • 큐 지연 시간 및 메시지 보존량
  • 노드 CPU, 메모리, 네트워크 사용률
  • 에러와 재연결 빈도

오토스케일과 장애 대응

오토스케일은 연결 지표와 메시지 처리량을 기준으로 노드를 증감한다. 롤링 업데이트 시 세션 손실을 막기 위해 스티키 세션이나 세션 외부화를 고려한다. 장애 발생 시 자동 페일오버와 빠른 복구 절차를 준비해야 한다.

실전적 설계 체크리스트

  • 목표 동시 연결 수와 메시지 처리량 산정
  • 세션 지속성 요구사항 정의
  • 토픽 네임스페이스와 샤딩 계획 수립
  • 브로커 종류 선택(클러스터링·브리지 지원 여부)
  • 모니터링·로그·알림 체계 설계
  • 오토스케일 및 배포 전략 마련

예제: Mosquitto 브리지 기본 구성

작은 규모에서 브리지로 토픽을 연결하는 간단한 예시다. 실제 환경에서는 보안과 인증 설정을 추가해야 한다.

connection bridge-to-central
address central-broker.example.com:1883
topic sensors/# out 0
topic commands/# in 0

요약과 권장 접근

수평 확장은 단순히 노드를 늘리는 것 이상이다. 세션 관리, 토픽 라우팅, 메시지 지속성, 운영 자동화까지 종합적으로 설계해야 한다. 시작은 요구량 산정과 클러스터/브리지 중 적합한 패턴 선택에서 출발한다. 이후 모니터링을 기반으로 오토스케일 정책을 적용하면 안정적인 대규모 MQTT 아키텍처를 운영할 수 있다.

mqtt 스케일 아웃 설계 수평 확장 mqtt 브로커 대규모 mqtt 아키텍처 mqtt 클러스터 브로커 샤딩 로드밸런서 mqtt emqx 스케일링 mqtt 모니터링