결국 푸시 자체서버 개발에 착수하려한다..
맙소사.... 막막하구나 싶은분들께 도움이 되고자 ㅋㅋㅋ
열라게 조사하고 파해친 자료들을 공유하려함
모두모두 화이팅
MQTT 세부내용 PPT (http://www.slideshare.net/ultrasonic/android-push-server-mqtt)
MQTT (Message Queuing Telemetry Transport) - MQ 원격측정 전송
1. 개발 시기
- 1999년 (개발 이후 지속적으로 개발 및 유지보수가 진행중)
- 2013년 4월 기준 MQTT는 OASIS에서 프로토콜 표준화를 진행중
(2013-04-25 : https://www.oasis-open.org/news)
- OASIS(Organization for the Advancement of Structured Information Standards)
2. 최초 개발자
- IBM의 Dr Andy Stanford-Clark과 EUROTECH(구 ARCOM)의 Arlen Nipper
3. 개발 목적
- 제한된 장치, 낮은 대역폭, 높은 대기시간, 신뢰 할 수 없는 네트워크 환경에 최적화된 프로토콜 개발
4. 원리
- 서버와 TCP통신(1883 Port)을 열고 일정 주기마다 heartbeat 패킷을 주고받으며 통신을 유지
- Publisher가 Topic을 발행하면 연결되어있는 장치들이 heartbeat패킷에 얹혀오는 데이터를 전달받는 형태
5. 성능 (서버 스펙 : System x3650 M3 Xeon 5660 2.80GHz x 12Core / 32GB RAM / 10Gbit Ethernet)
- IBM Hursley 연구소 확장성 테스트에 의하면
- 1개의 WebSphere MQ Queue Manager 에
- 240,000개 MQTT 클라이언트 동시연결(더 많은 연결이 가능하였으나, 시스템부족으로 인해 240,000 까지만 테스트 수행)
- 초당 480개의 메시지(200bytes)를 송수신
- 5% 미만의 CPU 사용
- 반면, Apache 웹서버는 25,000 개의 동시 연결이 최대치 이다.
6. 장점
- 주기적으로 폴링(polling)하는데 비해 베터리 소모량 및 패킷 전송량이 적다.
- 메시지 전송에 대한 신뢰성을 보장하기 위해 3단계 QoS 제공
: QoS 0 - 최대 1회 전달, 전송확인 X, 유실가능성이 있다.
: QoS 1 - 최소 1회 전달, 전송확인 O, 중복전달 가능성이 있다.
: QoS 2 - 4단계 HandShaking을 통해 정확히 1회 전달 (종단 간 지연이 늘어나게 되는 단점이 있다)
(PUBLISH > PUBREC > PUBREL > PUBCOMP)
7. 단점
- 다수의 Publisher/Subscriber 가 하나의 공통된 Topic을 공유할 경우 메시지의 순차적 처리를 보장하지 못한다.
(ex:그룹채팅 / 네트워크 환경에 의한 예외현상)
8. 주요 사용 용도
- 원격검침(Telemetry)
: 대부분 소형이며 통신 대역폭과 전원이 한정적인 환경에서 동작
: 강우량체크, 사람의 맥박체크, 위성통신(온도, 전압, 제트연료 압력 ...)등
: 베터리 용량이 제한적이고 통신 품질을 일정 수준으로 유지하기 어렵다는 점에서 스마트폰 환경과 매우 유사
9. 사용 사례
- 한국통신학회 논문지 (2013)
: "통합 SNS 게이트웨이의 상위 구조 및 MQTT 기반의 푸시 알림 프로토콜 설계"
: http://www.kics.or.kr/Home/UserContents/20130607/130607_094422236.pdf
- Facebook Messenger (2011)
: 외국 그룹메시징 서비스의 하나인 Beluga에 도입된 MQTT 프로토콜 방식을 가져와 Facebook Messenger에 도입
: 수백밀리초에 메시지 전달이 가능합니다.(Facebook Engineer - Lucy Zhang / 2011.10)
: Facebook 사용자는 2013년 3분기 기준 8억7천4백명
- Say It, Sign It (2007)
: IBM Blue projects, 아바타를 통해 실시간으로 음성을 수화로 번역 (Micro broker 사용)
- Location Aware Messaging for Accessibility (2006)
: IBM Blue projects, 장애인을 위한 실시간 위치 인식 메시징 (WebSphere Message Broker 사용)
- Smart Lab (2005)
: 화학과의 실험실 실험을 모니터링 하고 자바기반의 휴대폰에서 실시간 체크 (IBM broker 사용)
10. 리치푸시 적용가능 여부
- Android, IOS 기반 라이브러리를 제공하는 Broker로서 Mosquitto Broker 사용 예정
- Android 클라이언트 라이브러리로는 Eclipse Paho Project의 소스 내용으로 볼 때 문자열 이외의 데이터는 지원하지 않음
* OPEN SOURCE : MqttMessage.java 발췌
/**
* Returns a string representation of this message's payload.
* Makes an attempt to return the payload as a string. As the
* MQTT client has no control over the content of the payload
* it may fail.
* @return a string representation of this message.
*/
public String toString() {
return new String(payload);
}
- 하지만, 다른 방식으로 Android 에서 리치푸시 형태의 서비스 제공은 가능
(특정 탬플릿 및 타입을 규격화 하고, 기준이 되는 타입값에 의해 푸시알림의 형태를 변형하여 노출 시킬 수 있다.)
댓글
댓글 쓰기