'IT 관련/기타'에 해당되는 글 2건

MQTT 프로토콜

IT 관련/기타 2019. 11. 20. 17:36

1. Mqtt 프로토콜이란?


Message Queue for Telemetry Transport


 발행-구독 기반 메시징 프로토콜로, 보통 TCP/IP 기반으로 구현된다.



2. 구조

사진 출처 : https://www.segger.com/products/security-iot/emmqtt/

 

 Mqtt는 하나의 브로커 서버와 다수의 클라이언트로 구성된다.


 위 그림에서 보듯이 냉장고, 스마트폰, PC 등이 클라이언트로 브로커 서버와 연결하고, 브로커 서버는 클라이언트들과 데이터를 주고 받는다.


 한 클라이언트가 메시지를 Publish하면 해당 메시지의 Topic을 Subscribe해둔 클라이언트들에게 메시지가 전달된다.


 클라이언트는 브로커 서버에게 어떤 Topic을 Subscribe하여 관심있는 메시지를 받아 볼 수 있다.


3. 특징


1) 발행-구독 기반

2) 가볍다

3) 1서버 - 다수의 클라이언트 구조

4) 3단계의 QoS 지원

5) 다양한 개발언어, 다양한 클라이언트 지원



1) 발행(Publish) - 구독(Subscribe) 기반

 Mqtt 프로토콜에서 주고받는 메시지는 (Topic + 메시지)로 구성되고, 각 클라이언트들은 특정 토픽들을 구독(Subscribe) 할 수 있다.

 한 클라이언트가 메시지를 발행(publish)하면 메시지의 Topic을 구독한 클라이언트들은 모두 그 메시지를 받고, 구독하지 않은 클라이언트들은 메시지를 받지 못한다.


2) 가볍다.

 Mqtt 프로토콜은 주고받는 메시지의 크기가 작기 때문에 IoT 디바이스 등 대역폭이 제한되는 디바이스에서 사용하기 좋다.


3) 1서버 - 다수의 클라이언트 구조

 Mqtt 프로토콜은 하나의 서버에 다수의 클라이언트가 연결하는 구조를 가진다.


4) 3단계의 QoS 지원

 Qos(Quality of Service).

 Mqtt 프로토콜은 0,1,2 세단계의 QoS를 지원한다.


 0 (fire and foget) 

 최대 1회 전송. Topic을 동해 메시지를 전송하고 클라이언트가 메시지를 제대로 받았는지 보장하지 않는다.


 1 (acknowledged delivery)

 최소 1회 전송. 구독하는 클라이언트가 메시지를 받았는지 불확실하면 정해진 횟수만큼 재전송한다.(중복 전송의 위험성 존재)


 2 (assured delivery)

등록된 클라이언트는 요구된 메시지를 정확이 한 번 수신할 수 있게 보장한다.


5) 다양한 개발언어, 다양한 클라이언트 지원

 C, 자바, Node.js, 파이썬 등 다양한 개발언어로 Broker/Client를 개발할 수 있는 라이브러리가 존재한다.


4. 레퍼런스

http://woowabros.github.io/experience/2017/08/11/ost_mqtt_broker.html

https://en.wikipedia.org/wiki/MQTT

http://mqtt.org/

'IT 관련 > 기타' 카테고리의 다른 글

MIT 라이센스  (2) 2019.09.26
블로그 이미지

서기리보이

,

MIT 라이센스

IT 관련/기타 2019. 9. 26. 10:32

1. MIT 라이센스란

 MIT 라이센스는 MIT 공대에서 나온 소프트웨어 라이센스다.

 MIT 라이센스 표기는 다음과 같은 형식으로 되어있다.

MIT License

Copyright (c) 2017 gwiazdorrr

 

Permission is hereby granted, free of charge, to any person obtaining a copy

of this software and associated documentation files (the "Software"), to deal

in the Software without restriction, including without limitation the rights

to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

copies of the Software, and to permit persons to whom the Software is

furnished to do so, subject to the following conditions:

 

The above copyright notice and this permission notice shall be included in all

copies or substantial portions of the Software.

 

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

SOFTWARE.



2. 제약 및 허가 사항

 오픈소스 라이브러리들의 경우 MIT 라이센스를 따르는게 자주 보이며, 다른사람이 만든 오픈소스를 사용할 때마다 이걸 수정해서 써도 되는가, 상용 소프트웨어에 활용해도 되는가 등이 헷갈리기 때문에, 확실히 알아두고 갈 필요가 있다.


 MIT 라이센스는 다음의 사항들을 제약하고, 허가한다.


- MIT 라이센스 소프트웨어는 누구라도 무상으로 제한없이 취급해도 된다.

- MIT 라이센스 소프트웨어를 취급할 땐 사용한 소프트웨어의 저작권 허가 표시를 모든 복제물이나 중요한 부분에 기재해야한다.

- MIT 라이센스 소프트웨어를 사용해서 발생한 문제는 저작권자가 책임지지 않는다.


 쉽게 말해, 개발하는 프로젝트에 라이센스 문구를 표시해주면 상용으로도 사용 가능하고, 수정해서 사용하는 것도 자유라는 것이다.



3. MIT 라이센스 표기 예시

 MIT 라이센스 표기 예시로, 게임 개발 엔진인 유니티 엔진 에셋 중, Better Streaming Assets 라는 에셋이 있다. 무료로 이용가능하고, MIT 라이센스 표시를 달고 나오는데, 이 에셋을 다운로드 받으면 README.txt 파일 내에 MIT 라이센스가 표기되어있다.


 MIT 라이센스는 이처럼 프로젝트 폴더 내에 표기를 해 두면 되고, LICENSE.txt, README.txt 등 파일에 표기하면 된다.




4. 라이센스 소프트웨어 사용 표기 예시


 이 예시들은 MIT 라이센스 뿐만 아니라 라이센스 표기를 요구하는 다른 라이센스들 모두에 해당되는 사항이다.

 문서 파일 뷰어인 Polaris office의 모바일 앱에서는 다음과 같이 라이센스들을 표기한다.


 


 

폴라리스 오피스 모바일 앱의 라이센스 표기



 폴라리스 오피스는 라이센스를 조금 약식으로 표기한 것으로 보인다.


 구글 플레이 스토어가 라이센스 표기를 정말 잘 해놓은 예시인데, 각 라이센스들에 대한 카피라이트 전문을 볼 수 있게 해 뒀다.




이 항목들 중 하나를 선택하면 다음과 같이 카피라이트 전문을 확인 할 수 있다


   

카피라이트 전문


 오픈소스를 사용 할 때 라이센스 표기는 이 예시들과 비슷하게 해두도록 하자.



5. 레퍼런스

https://ko.wikipedia.org/wiki/MIT_%ED%97%88%EA%B0%80%EC%84%9C - 위키피디아:MIT 라이센스

https://www.olis.or.kr/license/qnaDetail.do?bbsNum=27161 - OLIS 오픈소스SW 라이센스 종합정보 시스템 관련 질문 글.

https://kyeonjung.tistory.com/15 - continue 블로그. 외부 라이브러리 라이센스 고지 방법


'IT 관련 > 기타' 카테고리의 다른 글

MQTT 프로토콜  (0) 2019.11.20
블로그 이미지

서기리보이

,