MQTT 5 구독 식별자(Subscription Identifier) 실무 활용
MQTT 5의 Subscription Identifiers 개념과 전달 흐름, 라우팅·필터링 사례 및 운영 시점 고려사항을 초보자도 이해하기 쉽게 정리한 설명서
목차
개요
MQTT 5의 Subscription Identifier는 브로커가 발행자와 구독자 간 메시지 흐름을 더 효율적으로 관리하도록 돕는 메커니즘이다. 이 글은 기본 개념부터 실제 활용 예와 운영 시 고려사항까지 단계적으로 설명한다. 처음 접하는 사람도 이해할 수 있도록 용어를 풀어 서술한다.
Subscription Identifier 기본 개념
Subscription Identifier는 구독 요청과 함께 전송되는 정수 식별자다. 한 구독자 클라이언트가 여러 구독을 등록할 때 각 구독에 ID를 지정할 수 있다. 브로커는 해당 ID를 수신되는 PUBLISH 메시지에 포함하여 어떤 구독이 메시지를 유발했는지 알려준다. 따라서 구독자나 중간 처리 로직에서 메시지 분류와 라우팅을 간단히 처리할 수 있다.
왜 필요한가
- 동일한 토픽을 여러 규칙으로 처리할 때 출처별 분기 가능
- 브로커 측에서 필터나 로깅 정책 적용 시 근거 제공
- 단일 연결에서 다중 구독을 구별해 별도 처리할 때 편의성 향상
작동 원리 요약
구독자는 SUBSCRIBE 메시지에 Subscription Identifier를 포함시킨다. 브로커는 이후 그 구독과 매칭되는 모든 PUBLISH에 같은 식별자를 붙여 전송한다. 구독자가 하나의 메시지를 여러 구독 규칙으로 받는 경우, 브로커는 해당 메시지에 다수의 식별자를 포함시킬 수 있다.
중요 포인트
- 식별자는 바이트 범위의 정수로 표현된다.
- 브로커와 클라이언트는 MQTT 5 프로토콜을 지원해야 사용 가능하다.
- 식별자는 구독 단위로 설정되며, 메시지 단위가 아니다.
실무 활용 시나리오
아래는 운영 환경에서 자주 쓰이는 활용 패턴이다. 각 사례는 구독 식별자를 통해 메시지 흐름을 제어하거나 상태를 추적한다.
1) 라우팅과 처리 분기
동일 토픽을 수신한 뒤 서로 다른 처리를 적용해야 할 때 식별자를 이용해 분기 규칙을 단순화한다. 예를 들어 트랜잭션 로깅과 알림 전송을 같은 토픽으로 처리하더라도 식별자에 따라 별도의 파이프라인으로 보낼 수 있다.
2) 비용·사용량 기반 메터링
서비스별 요금 산정이나 사용량 집계를 위해 어떤 구독에서 발생한 메시지인지를 식별자 기반으로 집계한다. 브로커 로그나 소비자 쪽에서 손쉽게 처리할 수 있다.
3) 멀티테넌시와 권한 분리
같은 브로커를 여러 고객이 공유하는 환경에서 구독별 권한과 정책을 연동해 각 고객의 메시지만 별도로 추적한다. 식별자는 권한 검증 로그와 결합해 감사 추적을 돕는다.
구현 예시
아래는 구독 요청과 브로커가 전송하는 PUBLISH의 페이로드 구조 예시다. API마다 옵션 표기 방식이 다르므로 실제 코드 사용 시는 사용중인 클라이언트 라이브러리 문서를 참고한다.
{
"subscribe": {
"topic": "sensors/temperature",
"qos": 1,
"subscriptionIdentifier": 42
}
}
/* 브로커가 전송하는 PUBLISH 페이로드 예시 */
{
"publish": {
"topic": "sensors/temperature",
"payload": "23.5",
"subscriptionIdentifiers": [42]
}
}
운영 시 고려사항
도입 전에 아래 항목을 점검하면 안정적으로 활용할 수 있다.
- 브로커와 클라이언트의 MQTT 버전 호환성 확인
- 식별자 충돌 방지 정책 수립(범위와 할당 규칙)
- 로그·모니터링에서 식별자 포함 여부 설계
- 다중 식별자 전송 시 처리 중복을 피하기 위한 애플리케이션 로직
주의사항
식별자는 편리하지만 과도한 의존은 복잡도를 높인다. 분배 로직이 식별자에 과도하게 결합되면 향후 토픽 설계 변경 시 리팩토링 비용이 커진다. 또한 브로커의 메시 변형 정책이나 보안 설정에 따라 식별자 전달 여부가 달라질 수 있으므로 테스트로 검증한다.
정리
MQTT 5의 Subscription Identifier는 구독 단위의 메타데이터를 전달해 라우팅, 모니터링, 멀티테넌시 관리에 유용하다. mqtt5 구독 식별자 개념을 이해하고, mqtt5 subscription identifier 사용 사례와 subscription identifier 예제 수준에서 작은 프로토타입으로 먼저 검증한 뒤 운영 환경에 적용하는 것을 권장한다.