메뉴 건너뛰기

Extra Form

1. MQTT
MQTT는 경량의 Publish/Subscribe(Pub/Sub) 메시징 프로토콜이다. M2M(machine-to-machine)와 IoT(Internet of things)에서의 사용하려고 만들었다. IoT를 위해서 낮은 전력, 낮은 대역폭 환경에서도 사용할 수 있도록 설계됐다.
IoT 관련 일들을 하고 있는데, 저전력/소규모 디바이스를 위한 통신 프로토콜들을 살피면서 자연스럽게 관심을 가지게 됐다.


2. 응용 분야
1.png


MQTT는 저전력, 신뢰할 수 없는 네트워크, No TCP/IP 기반에서 운용할 수 있다는 장점이 있다. 소형기기의 제어와 센서정보 수집에 유리하다. 이런 특징들로 특히 IoT 영역에서 주목받고 있다.


2.1. 센서(Sensor) 정보 수집
가전기기, 빌딩, 도시, 산업, 개인 등 다양한 영역에서의 센서정보를 수집할 수 있다. 네트워크 영역으로 보자면 LAN(가정/소규모 오피스), PAN(개인 네트워크), BAN(빌딩 네트워크), MAN(도시영역 네트워크)등에서 사용할 수 있다.
개인적으로 건강과 질병관리 분야에 관심이 간다. 지금 당장 서비스를 개발하기에는 센서장비의 품질 개선이 필요한 것 같다. 지금의 헬스케어 센서들은 "건강한 사람을 위한 악세사리"정도 인것 같다. 이런 용도로 사용하기에는 센서 품질이 별로 중요하지 않겠지만 질병/건강관리를 위해서 본격적으로 사용하려면 품질개선이 필요 할 것 같다.


2.2. 제어
센서로 부터 받은 데이터를 토대로 기기들을 제어할 수 있다. 기기제어 역시 MQTT를 이용하면 된다. 이를 위해서는 각 기기에 MQTT broker를 설치하거나 혹은 중앙에 있는 MQTT broker에 bind할 수 있어야 한다.


2.3. Message Push Server
모바일 애플리케이션을 위한 메시지 Push 서버로 사용 할 수 있다. MQTT의 특징을 살려서 낮은 전력에서 작동하는 Push 서비스를 만들 수 있다. 페이스북의 경우 MQTT를 이용해서 메시지를 push 하고 있다.


3. MQTT 특징


3.1. Publish/Subscribe
MQTT 프로토콜은 메시지를 발행(publishing) 하고, 관심 있는 주제를 구독(subscribe) 하는 것을 기본 원칙으로 한다.

2.png


Publisher과 Subscriber은 모두 Broker에 대한 클라이언트로 작동한다. Publisher는 토픽을 발행하기 위한 목적으로 Subscriber은 토픽을 구독하기 위한 목적으로 Broker 서버에 연결한다. 하나 이상의 Pub와 Sub가 브로커에 연결해서 토픽을 발행 하거나 구독할 수 있다. 또한 다수의 클라이언트가 하나의 주제를 구독할 수도 있다.


3.2. 토픽
Pub와 Sub는 토픽을 기준으로 작동한다. 토픽은 슬래시(/)를 이용해서 계층적으로 구성할 수 있어서 대량의 센서 기기들을 효율적으로 관리 할 수 있다. 예를들어 컴퓨터의 다양한 상태를 측정하는 센서가 있다고 다음과 같이 구성할 수 있을 것이다.

3.png


3.3. 메시지 버스
MQTT는 메시지 버스 시스템이다. MQTT Broker가 메시지 버스를 만들고 여기에 메시지를 흘려보내면, 버스에 붙은 애플리케이션들이 메시지를 읽어가는 방식이다. 메시지 버스에는 다양한 주제의 메시지들이 흐를 수 있는데, 메시지를 구분하기 위해서 "Topic"을 이름으로 하는 메시지 채널을 만든다.

4.png


애플리케이션들은 Message Bus에 연결하고 관심있는 토픽(Topic)을 등록 해서 메시지를 구독(SUB)하거나 발행(PUB)한다.


3.4. QoS
MQTT는 3단계의 QoS(Quality of service)를 제공한다. 0 : 메시지는 한번만 전달하며, 전달여부를 확인하지 않는다. Fire and Forget 타입이다.
1 : 메시지는 반드시 한번 이상 전달된다. 하지만 메시지의 핸드셰이킹 과정을 엄밀하게 추적하지 않기 때문에, 중복전송될 수도 있다.
2 : 메시지는 한번만 전달된다. 메시지의 핸드셰이킹 과정을 추적한다. 높은 품질을 보장하지만 성능의 희생이 따른다.
서비스의 종류에 따라서 적당한 QoS 레벨을 선택해야 한다.
No TCP/IP와 TCP/IP가 섞여있는 로컬 네트워크에서는 QoS 1, 2를 선택하는게 좋을 것 같다. 네트워크 구간을 신뢰할 수 없으며, 메시지 전송이 실패 했을 때, 메시지 박스에 저장하는 일을 하는 소프트웨어 시스템을 구축하기가 쉽지 않기 때문이다.
원격 네트워크에서는 0번이 좋을 것 같다. QoS 1이 적당할 것 같지만, 1이나 2를 선택할 경우 메시지 관리가 힘들어진다. 예를들어 offline 모드에서의 메시징을 지원하기 위해서 메시지 박스 서비스를 제공한다고 가정해 보자. QoS 1로 설정을 하면, 다음 연결에 메시지를 보내기 위해서 자체 queue에 저장을 한다. 그러면 시스템 입장에서는 MQTT queue에 있는 메시지를 읽어야 하는데, 메시지 박스에서 읽어야 하는지를 판단해야 한다.
또한 클라이언트는 MQTT queue에 있는 메시지를 읽기 위해서 이전에 연결했던 MQTT에 연결을 해야 하는데, 이러한 요구사항은 클러스터 구성을 어렵게 한다. 설계 관점에서도 비슷한 일을 하는 두 개의 모듈을 두는 것은 좋지 않은 설계다. 그냥 QoS 레벨은 0으로 하고, 소프트웨어에서 QoS를 처리하는게 깔끔할 것 같다.

5.png


4. MQTT 브로커들
MQTT 서버라고 하지 않고 중개인(브로커)라고 하는 이유는 MQTT가 발행인과 구독자가 메시지를 주고 받을 수 있도록 다리를 놔주는 역할만을 하기 때문이다. 다른 기능들은 중계를 도와주는 부가 기능일 뿐이다. 다양한 종류의 브로커들이 있는데, 여기에서 확인하자.
내가 경험한 브로커들만 간단히 정리한다.


4.1. Mosquitto MQTT broker
모스키토(Mosquitto)는 (2014년 6월 현재)MQTT 프로토콜 3.1을 구현한 BSD 라이센스 기반의 오픈소스 메시지 브로커다. 나는 모스키토를 이용해서 PUB,SUB,Broker 테스트를 진행하기로 했다.


4.1.1. 테스트 환경

6.png

VirtualBox를 이용해서 PUB, SUB, Broker를 위한 3개의 게스트 운영체제를 실행했다. 호스트 이름은 각각 pub.local, sub.local, broker.local 이다.
게스트 운영체제 : 우분투 리눅스 14.04로 통일


4.1.2. Mosquitto 브로커 설치

설치가 끝나면 바로 bind 된다.


4.1.3. Mosquitto 클라이언트 설치
모스키토 클라이언트 프로그램을 설치했다.


4.1.4. Pub/Sub 테스트
hello/world 토픽을 subscribing 한다.

hello/world토픽에 Publishing을 했다.


Sub 클라이언트는 "Hello World"를 전송 받는다.
modquitto_sub를 하나 더 실행 한다음 "Hello World"를 publishing 해보자. 토픽에 subscribing한 모든 클라이언트에 메시지가 전달되는 걸 확인할 수 있다.


4.1.5. 장점과 단점
MQTT 전용 브로커로 매우 가벼우며, MQTT 브로커가 가져야 할 대부분의 기능을 충실히 지원한다는 장점이 있다. 소형기기에 올려서 사용하기에 적당하다.

현재 최신 안정 버전 1.3.5는 아직 WebSocket을 지원하지 않는다. 1.4에서 지원하는데, 지금은 직접 빌드해서 사용해야 한다. 클러스터를 지원하지 않는 것도 단점이다. 대규모의 메시징 시스템을 구축하려면 노가다를 뛰어야 한다. 메시징 서비스 인프라에 고가용성은 필수 요소이기 때문에 중요한 문제가 될 수 있다.


4.2. RabbitMQ
AMQP를 지원하는 메시지 큐 서버로 플러그인(Plug-in)방식으로 MQTT를 지원한다. AMQP를 이용한 범용 메시징 서버라서 좀 무겁기는 하지만 클러스터링을 지원하고 다양한 플러그인을 이용해서 기능을 확장할 수 있다. STOMP, 웹 소켓, HTTP(S)등 다양한 통신 프로토콜을 지원하기 때문에, 메시징 서버 인프라의 개발에 적당하다.


4.2.1. MQTT Plugin 실행
RabbitMQ를 설치하면 20개 정도의 플러그인들도 함께 깔린다. rabbitmq-plugins를 이용해서 간단하게 mqtt를 올릴 수 있다.


4.2.2. 장점과 단점
RabbitMQ는 범용 메시징 서버로 다양한 메시징 방식을 제공한다. AMQP, MQTT 프로토콜을 지원하며 HTTP(S), STOMP, 웹소켓, JSONRPC 등의 다양한 통신 방식을 지원한다. 다양한 활용이 가능하다는 것은 장점이라고 볼 수 있겠는데, 기능이 많은 만큼 무겁다. 자원이 빈약한 소형기기에 사용하기에는 무리가 있다. 메시징 인프라 구축에는 RabbitMQ, 소형기기의 메시징 브로커로는 모스키토의 사용을 고려해 봄직하다.


4.3. 메시징 서비스 인프라 제안
서비스 마다 달라질 수 있겠다. IoT를 기준으로 제안한다.
서버 인프라는 가용성과 확장성이 유리한 RabbitMQ로 구축한다. 모스키토로도 구축할 수 있기는 하지만 노가다를 뛰어야 한다. 기타 보안, 인증, 다양한 프로토콜 지원, 플러그인 개발 등을 고려해보면 RabbitMQ를 선택해야 할 것 같다.
기기들은 모스키토를 이용한다. 가볍고 간단해서 소형기기에 집어 넣기에 적당하다.


5. Chatting 프로그램
MQTT를 이용한 Pub/Sub 테스트는 끝냈으니, 이제 좀 그럴 듯한 서비스를 만들어봐야 겠다. MQTT를 이용한 chatting 프로그램을 개발할려고 한다. 이 chatting 프로그램은 아래의 기능을 지원한다. 채팅방 생성 : 채팅방을 Topic으로 하면 된다. Topic을 늘리는 것으로 여러 개의 채팅방을 운용할 수도 있을 거다. 채팅방을 임의로 만들게 하는 건 귀찮으니.. 그냥 "chat/public", "chat/private" 두개의 채팅방만 만들기로 했다.
채팅방 Join : 원래는 채팅방 목록을 확인해서 Join해야겠으나 귀찮으니, chat/public, chat/private 모두를 sub 하는 걸로 join을 대신하겠다. 유저는 nickname을 만들어서 두개의 topic에서 메시지를 받아본다. 채팅 클라이언트 프로그램은 Sub와 Pub를 모두 해야 하니 멀티 쓰레드로 작동해야 한다.

7.png

MQTT 브로커로는 앞서 다룬 모스키토를 사용했다.
쓰레드 하나는 Sub 전용이다. 토픽으로 받은 정보를 화면에 출력한다. chat/public : 공개 채널의 메시지를 받기 위해서 사용한다.
chat/public/nickname : 자신의 nicname 토픽에 메시지를 받기 위함.

쓰레드 하나는 Pub 전용이다. 표준입력을 토픽에 publishing 한다. chat/public : 공개 채널에 publishing 한다.

chat/public/other : 특정 유저에게 publishing 하기 위해서 사용한다.

  • ?
    정보제공 2019.12.22 13:17 (*.168.0.1)
    경량 통신 프로토콜입니다.

    1990년대 센싱 네트워크에 적용할 목적으로, 데이터사이즈를 최대한 줄여서 사용하기 위해 나왔는데,

    2010년이후 스마트폰시대에 스마트폰 푸시서비스(카톡,라인) 등의 서비스가 발전하면서 다시 관심을

    받기 시작하여, 현재 각종 IoT 센싱 디바이스에서 많이 사용하고 있다.

    Mosquitto 라는 미들웨어에서 이 프로토콜을 지원한다.

  1. No Image

    Tableau Server 설치

    Tableau Server 설치 by Lee Ho Sung 11 JAN 2020 tableau dashboard 이 글은 “Tableau로 사무실 대시보드 구축하기” 시리즈의 두 번째 글입니다. Tableau 에 대한 간단한 소개와 구축 동기 Tableau Server 설치하기 Prep Builder 로 데이터 흐름 만들기 Table...
    Date2023.03.06 Reply0 Views422
    Read More
  2. No Image

    콜센터(IPCC) 솔루션 - 이아이씨엔

    콜센터(IPCC) 솔루션 - 이아이씨엔 UB Contact 구축형 (주)이아이씨엔의 ONLY ONE 서비스 개요 1.jpg UB Contact 구축형 UB Contact 구축형 서비스는 고객사에 필요한 IPCC 솔루션을 고객사 업무 특성에 최적화하여 공급하는 Only One 서비스로서, 고객사 전용...
    Date2023.03.06 Reply0 Views368
    Read More
  3. No Image

    큐냅, 악성 코드 실행 가능한 PHP 보안 취약점 경고

    큐냅, 악성 코드 실행 가능한 PHP 보안 취약점 경고 1.jpg 큐냅(QNAP)이 자사 제품에서 원격으로 악성 코드를 실행할 수 있는 PHP 취약점(CVE-2019-11043)이 발견됐다고 밝혔다. 이번 취약점은 Nginx 구성이 잘못된 경우 PHP 버전 7.1.x 7.1.33 미만, 7.2.x 7....
    Date2023.03.06 Reply0 Views450
    Read More
  4. No Image

    java에서 독립된 단위테스트 프레임워크 중에 하나인 JUnit 사...

    java에서 독립된 단위테스트 프레임워크 JUnit JUnit이란? JUnit(제이 유닉)은 자바 프로그래밍 언어용 단위 테스트 도구로 보이지 않고 숨겨진 단위 테스트를 끌어내어 정형화시켜 단위 테스트를 쉽게 해주는 테스트용 Framework입니다. 플러그인 형태로 Ecli...
    Date2023.03.06 Reply0 Views383
    Read More
  5. No Image

    HASIM Framework, 정보시스템 구축 발주자를 위한 표준프레임워...

    정보시스템 구축 발주자를 위한 표준프레임워크 및 공통컴포넌트 적용가이드 v3.10 표준프레임워크의구성요소.JPG [ 표준프레임워크의 구성요소 ] <목차> □ 전자정부 표준프레임워크란 ? ○ 소프트웨어 프레임워크의 정의 ○ 전자정부 표준프레임워크 개념 ○ 표...
    Date2023.03.06 Reply0 Views505
    Read More
  6. No Image

    JBoss와 Tomcat의 차이점

    JBoss와 Tomcat의 차이점 주요 차이점 – JBoss vs Tomcat 웹 개발에 사용되는 몇 가지 일반적인 용어는 웹 서버, 서블릿 컨테이너 및 응용 프로그램 서버입니다. 웹 서버는 HTTP (Hyper Text Transfer Protocol)를 사용하여 요청에 따라 사용자에게 웹 페이지...
    Date2020.09.15 Reply0 Views899
    Read More
  7. No Image

    Was Server와 Web Server

    웹서버 [Web Server] 백과사전 : 웹 서버 (소프트웨어) : 웹 브라우저클라이언트로부터 HTTP요청을 받아들이고, HTML문서와 같은 웹 페이지에서 흔히 찾아 볼 수 있는 자료 콘텐츠에 따라 HTTP에 반응하는 컴퓨터 프로그램 웹 서버 (하드웨어) : 위에 언급한 ...
    Date2020.09.09 Reply0 Views284
    Read More
  8. 클래식한 오픈소스 인프라 ‘JBoss’ 따라잡기

    클래식한 오픈소스 인프라 'JBoss' 따라잡기 리눅스로 대표되는 오픈소스가 기업의 중요한 인프라로 점차 확대되고 있습니다. 오픈소스를 사용해 보신 개발자나 관리자면 모두들 아는 JBoss에 대해서 오늘 자세히 다뤄보도록 하겠습니다. 기업들의 대표적인 웹...
    Date2020.09.09 Reply0 Views410 file
    Read More
  9. SSO 구현 방식

    SSO 구현 방식 1. 개요 SSO(Single Sign On)는 사용자가 하나의 ID/Password로 여러 응용시스템을 접근할 수 있는 기술로써 여러 개의 사이트를 운영하는 대기업이나 인터넷 관련 기업이 각각의 회원을 통합 관리할 필요성이 생김에 따라 개발된 사용자 인증 ...
    Date2020.08.24 Reply0 Views526 file
    Read More
  10. 크로미움, 크롬 브라우저 차이점

    크로미움, 크롬 브라우저 차이점 - 네이버웨일 브라우저도 크로미움으로 만들었다고 합니다. 2018년 12월 엣지(Edge)브라우저가 고유의 엔진을 포기하고 크로미움 코드를 적용한다고 공개하면서 관심이 생겨 찾아보았더니 필자가 가장 좋아하는 브라우저인 크...
    Date2020.06.22 Reply0 Views551 file
    Read More
  11. MQTT : 경량의 Publish/Subscribe(Pub/Sub) 메시징 프로토콜

    1. MQTT MQTT는 경량의 Publish/Subscribe(Pub/Sub) 메시징 프로토콜이다. M2M(machine-to-machine)와 IoT(Internet of things)에서의 사용하려고 만들었다. IoT를 위해서 낮은 전력, 낮은 대역폭 환경에서도 사용할 수 있도록 설계됐다. IoT 관련 일들을 하고...
    Date2019.12.22 Reply1 Views582 file
    Read More
  12. 파이썬 (python) 설치 방법, Shell 실행과 IDLE Editor 실행

    파이썬 (python) 설치 방법, Shell 실행과 IDLE Editor 실행 https://blog.naver.com/makitcodelab/221447729861
    Date2019.11.19 Reply0 Views437 file
    Read More
  13. Power BI 데이터시각화 솔루션 주요기능

    Power BI 데이터시각화 솔루션 주요기능 몇 분 안에 데이터를 통찰력 있는 정보로 변환하는 파워 BI 여러분은 데이터를 어떻게 활용하고 계시나요? 혹시 엑셀을 사용하고 계시나요? 최근 들어 데이터 분석 방법으로 시각화에 대한 관심이 커지면서 엑셀보다 고...
    Date2019.11.19 Reply0 Views412 file
    Read More
  14. No Image

    Enterprise Application Integration (기업애플리케이션통합)

    Enterprise Application Integration (기업애플리케이션통합) EAI(기업애플리케이션통합)은 비즈니스 프로세스를 중심으로 기업 내 각종 애플리케이션 간에 상호 연동이 가능토록 통합하는 솔루션. 전사적자원관리(ERP), 고객관계관리(CRM), 공급망계획(SCP) ...
    Date2019.07.27 Reply0 Views354
    Read More
  15. No Image

    피싱, 스미싱, 파밍, 메모리해킹은 무엇일까?

    피싱, 스미싱, 파밍, 메모리해킹은 무엇일까? 전자금융범죄가 점점 더 다양해지고 있습니다. 과거보다 수법이 더 다양하고 교묘해지고 있으며, 지능형으로 변하고 있어 한층 주의가 필요합니다. 알면 도움이 되는 정보! 오늘은 SK인포섹에서 전자금융범죄에서 ...
    Date2019.07.24 Reply0 Views402
    Read More
  16. No Image

    객체지향언어

    객체지향언어 객체 지향 프로그래밍의 특징은 기본적으로 자료 추상화, 상속, 다형 개념, 동적 바인딩 등이 있으며 추가적으로 다중 상속 등의 특징이 존재한다. 객체 지향 프로그래밍은 자료 추상화를 기초로 하여 상속, 다형 개념, 동적 바인딩이 시스템의 ...
    Date2019.07.22 Reply0 Views344
    Read More
  17. No Image

    레거시 시스템 - legacy. 유산

    현재까지 남아 사용되고 있거나 현재의 체계에 영향을 미치는 과거의 체계를 뜻한다. 가족이나 혈통이 남긴 유산이란 뜻으로도 많이 쓰인다. 광범위하게 쓸 수 있으나 단, 정치에 쓰는 말은 아니다. 구체제란 용어는 Ancien regime이란 말이 따로 있다. legacy...
    Date2019.07.19 Reply0 Views316
    Read More
  18. No Image

    Tuxedo 턱시도 [ Transactions for Unix, Extended for Distri...

    Tuxedo 턱시도 [ Transactions for Unix, Extended for Distributed Operations ] 분산 컴퓨팅 환경의 분산 트랜잭션 처리(DTP) 시스템에 사용되는 미들웨어. 턱시도(Tuxedo)는 분산 트랜잭션 제어나 부담의 분산 등을 관리하는 기본 기능인 System/T, 개인용 ...
    Date2019.07.18 Reply0 Views370
    Read More
  19. 인벤터 2012 마스터하기

    저 : 송정식, 서범석 출판사 : 청담북스 발행 : 2011년 11월 15일 쪽수 : 744 ISBN : 9788994636214 정가 : 32,000원 : 28,800원 (10%할인)
    Date2019.03.09 Reply0 Views380 file
    Read More
  20. No Image

    엔터프라이즈콘텐츠관리(ECM) 시스템

    http://inzent.com/ https://pacesystem.co.kr 엔터프라이즈콘텐츠관리(ECM) 시스템 ◇ECM의 특징  엔터프라이즈콘텐츠관리(ECM)나 콘텐츠관리시스템(CMS)이라는 용어가 최근 국내에서도 회자되고 있다. 미국에서는 3년전부터 CMS가 논의되더니 작년부터는 ECM...
    Date2019.01.15 Reply0 Views357 file
    Read More
목록
Board Pagination Prev 1 2 3 4 5 Next
/ 5