안드로이드 개발을 하려고 하는 초보입니다.
푸시 서버에 대해 검색을 해보니 대부분 GCM으로 구현한다 라고 써있더군요.
GCM의 경우 구글에서 제공하는 걸로 알고 있고, 특징을 보니 메시지 전송 순서를 신경쓰지 않는다고 하더군요.
제가 질문 하고자 하는 것은 다음과 같습니다.
1. 푸시 서버 구현 방법에 어떤 어떤 것들이 있으며 차이 점이 무엇인가요? (gcm, xmpp, c2dm )
2. 보통 푸시를 이용하는 프로젝트를 하실 때 gcm을 이용하시는지
3. 구글에서 지원해주는 gcm을 이용하지 않고 직접 구현 하시는 이유는 무엇인가요?
4. gcm이 메시지의 전달과 순서를 보장 하지 않는다고 하는데, 무슨 말인가요?
- 메시지 전달의 순서를 보장해야 하는 프로젝트의 경우 gcm을 사용 할 수 없나요?
5. gcm을 사용하지 않는다면, 어떤 프로토콜을 이용하여 푸시 서버를 구현 해야 하는가요? 또한 구현 방법에 대한 추천을 부탁드립니다.
최대한 검색 해서 찾아보고는 있지만 이해가 안가는게 한둘이 아닙니다.
이에 대해 아시는 분 답변 부탁 드립니다. ㅠ
4번에 대해서 제가 아는 만큼만 답변드리겠습니다.
전송여부와 순서가 보장되지 않습니다. 이건 GCM 문서에 나와있는 내용입니다.
순서가 보장되지 않는건 제 생각에는 재시도 때문이라고 생각되네요.
전달시기는 휴대폰이 awake 상태이고 Throttling에 제한이 없다면 즉시 전송입니다.(폰이 꺼져있거나, 네트워크 이상등등 때문에 재시도 간격이 늘어나게 되니까 늦게 받는 경우가 생기고, 서버 상황에 따라 다르지만 정상적인 경우 즉시 전송입니다.)
늦었지만 답변이 될까요?
1.
처음 답변해 주신 분이 XMPP를 개량한게 C2DM이라고 하셨는데. 이건 제가 알고 있는 거랑은 다르네요.
XMPP는 보통 메신저의 통신 프로토콜 표준입니다. XML을 사용하고요. google talk 등이 이 프로토콜을 사용하지요. 푸시기능에서 이 XMPP를 사용한다는 것은 pc의 메신저처럼 디바이스와 서버가 tcp 컨넥션을 계속 유지시켜주는 방법을 사용하는 것으로 알고 있습니다.
이 방법의 장점은 서버의 응답이 무척 빠르다는 것입니다. ^^;
단점은 : 3g와 wifi의 망 이동에 따라 컨넥션을 계속 유지시켜주는 것이 쉽지 않고요, 백그라운드 서비스로 컨넥션을 24시간 유지시켜줘야 해서 배터리 소모도 심하죠. 그리고 서버를 구축해야 하는데 상대적으로 가장 많은 코딩과 로직이 필요할 것 같습니다. (0.01초의 시간도 중요한 경우가 아니면 일반적으로 비추)
c2dm은 안드로이드 초기 버전에는 없었는데 구글이 아이폰의 push를 보고 따라 만들었습니다. ^^;; 그래서 기능이 아이폰 푸시랑 비슷해욤~
장점 : 별도로 컨넥션 유지를 위한 백그라운드 서비스가 필요 없어서 배터리 소모량이 적고요, 구현도 비교적 어렵지 않고요~
단점 : 앱마다 최대 전송 건수가 있었습니다. 대규모 서비스하기에는 무리가 있었고요. 결국 구글이 단종(?) 시켜 버렸네여;;;
GCM은 구글이 C2DM을 단종시켜버리고 대신 내세운 서비스 입니다. 그래서 C2DM이랑 대부분 비슷해욤. 쓰는 방식만 좀 틀리고요..
저는 잘 모르겠는데 신뢰성이 좋아졌다는 분들도 있습니다~ 최대 전송 건수 한계도 없습니다~
암튼 이런 서비스를 해주는 오픈소스도 있고요. 업체들도 있습니다. 잘 활용해 보세요~
푸시클라우드 http://www.pushcloud.co.kr/
아놔...실수로 자꾸 Command + W 눌러서 꺼지네요 -_-;;
1. 제가 아는 것만 기술하면 XMPP, C2DM, GCM 이 있고요.
XMPP 를 개량한게 C2DM 이고 이걸 개선한게 GCM 입니다.
2. 용도에 따라 다른데요. 주로 단방향(통보 같은..) 위주는 GCM 을 쓰고요. 양방향(채팅 같은..) 위주는 자체 푸시를 사용합니다.
3. C2DM 의 유실율이 90%에 육박하던 시절이 있어서죠...GCM 은 유실율은 미미한대. 리비전 된지 5개월도 안됐죠..
4. 순서는 보장되는데요. 전달 시기가 보장이 안됩니다. 데이터 최대 보관 시기가 4주이긴 하지만 푸시는 당장 정보를 주는게 목적인데 빠르면 1분이내 보내주지만 늦으면 5분도 걸리거든요.
5. 알려지진 않았지만 딱 로그만 봐서는 XMPP 쓰는 앱들이 한두개가 아니죠...^^
추천할만한 오픈소스가 있긴 한대 비교적 정보 구하기 쉬우니 그건 플란도스님 몫으로 남겨두죠