본문 바로가기
백엔드/Java

MQTT vs HTTP CPU 사용량 비교

by david100gom 2024. 11. 17.

1. 프로토콜 오버헤드
• MQTT:
o 경량화된 프로토콜로, 메시지 전송 시 헤더가 2바이트에서 시작합니다.
o 데이터 전송에 필요한 최소한의 메타데이터만 포함되어 있어 패킷 처리 및 생성에 필요한 CPU 리소스가 적습니다.
o 상태 정보를 유지하고, 연결이 지속되므로 매번 연결 설정을 하지 않아도 됩니다.
• HTTP:
o 요청-응답 방식으로, 각 요청마다 헤더와 상태 정보를 포함합니다. 헤더 크기가 크고 데이터 패킷이 무거워, 처리하는 데 더 많은 CPU 리소스가 필요합니다.
o 요청마다 연결 설정과 해제 과정(TCP 핸드셰이크 포함)이 반복되며, 이 과정에서 추가적인 CPU 소모가 발생합니다.
________________________________________
2. 데이터 전송 방식
• MQTT:
o 지속 연결 (Persistent Connection): MQTT는 클라이언트와 브로커 간 연결을 지속적으로 유지하며, 데이터 전송 시 연결 설정에 따른 CPU 오버헤드가 없습니다.
o 가벼운 메시지 처리: 메시지 브로커를 통해 전송되므로, 클라이언트는 데이터 생성과 수신만 처리하며 CPU 소모가 낮습니다.
• HTTP:
o 요청-응답 기반 연결 (Non-persistent Connection): 각 요청마다 TCP 연결이 생성되고 종료됩니다. 이는 CPU에 부하를 가합니다.
o 헤더 처리 비용: HTTP의 헤더와 응답 데이터의 크기가 커질수록 CPU가 처리해야 하는 작업량이 증가합니다.
________________________________________
3. CPU 사용량 차이
다음은 실험에서 관찰되는 대략적인 경향입니다:
• MQTT: CPU 사용량이 낮음. MQTT는 연결 설정과 해제가 없으며, 간단한 패킷 구조로 CPU 리소스를 최소화합니다.
o 초당 데이터 전송량이 많아도 CPU 소모가 상대적으로 일정하게 유지됩니다.
• HTTP: CPU 사용량이 높음. 요청마다 새로운 연결을 설정하고 헤더를 처리해야 하기 때문에 데이터 전송량이 증가하면 CPU 부하가 선형적으로 증가합니다.
________________________________________
4. 실시간성 및 전력 효율
• MQTT:
o 실시간 데이터 전송이 필요한 환경에서 최적화되어 있어 CPU 자원을 적게 소모합니다.
o 데이터 패킷 크기가 작아 전송 속도가 빠르고, 처리 시간이 짧습니다.
• HTTP:
o HTTP는 요청-응답 주기가 길어, 실시간 통신에서는 더 많은 CPU 자원을 소모하게 됩니다.
o 데이터를 지속적으로 주고받아야 할 경우 CPU와 네트워크 자원을 더 많이 소비합니다.
________________________________________
5. TI CPU에서의 실제 사용 사례
TI CPU와 같은 저전력 MCU에서 MQTT와 HTTP를 비교하면 다음과 같습니다:
• MQTT는 저사양 장치에서 CPU 소모량과 전력 소비를 모두 줄이는 데 적합합니다. 배터리 수명이 중요한 IoT 센서, 스마트 디바이스에서 선호됩니다.
• HTTP는 단순한 설정과 기존 인프라의 통합이 용이하지만, CPU 리소스 사용량이 커서 제한된 하드웨어에서는 비효율적입니다.
________________________________________
결론
• CPU 소모량: MQTT가 HTTP보다 3~5배 정도 적은 CPU 리소스를 소비하는 것으로 관찰됩니다(상황에 따라 다를 수 있음).
• IoT와 같은 저전력, 저사양 환경에서는 MQTT가 CPU 소모 측면에서 더 효율적입니다.
• HTTP는 간단한 요청-응답 구조를 요구하는 간헐적 통신에서는 적합할 수 있지만, 지속적인 데이터 송수신 환경에서는 MQTT가 훨씬 더 적합합니다.

댓글