안드로이드 개발자 모임 게시판
(글 수 7,997)
제가 이해하고 있는것이 확실히 맞는지 질문 드릴께요
2일간 생각해보고 검색을 해봐도 명쾌한 답이 나오는곳은 없더군요
각각의 어플리케이션들이 구글c2dm또는 애플의 푸시서버를 쓰지 않고
자체 서버와 소켓 연결을 해서 서비스 할 경우의 단점을 적어 봤습니다
1. 사용자 입장에서의 단점
카카오톡, 마이피플등 여러 어플리케이션들이 백그라운드에서 각각의 사업자 서버와 소켓 연결을 한다면
애플리케이션의 갯수만큼 백그라운드 서비스가 켜지고 또 그 갯수만큼의 소켓 연결이 되어야 하므로
배터리문제, 전체적인 퍼포먼스 하락이 올 수 있다.
2. 통신사 입장에서의 단점
공통의 푸시서버를 쓴다면 단 하나의 소켓만 사용자가 열어 두고 있다가 메시지 도착알림이 왔을 경우와 같이
필요시에만 어플리케이션이 켜저서 각 사업자의 서버와 소켓 연결을 하면 되므로 낭비를 줄일 수 있지만
각각의 서비스들이 서로의 서버들과 소켓 연결 되어있으면 그만큼 부하가 심해진다
그리고 요새 카카오톡의 문제에 대해서 해결방안이 나왔다고 하는데 이 해결방안이란 것은
앞으로 안드로이드 카카오톡에서는 통신사의 푸시서버, 카카오톡의 푸시서버, 구글의 푸시서버를 이용하여
해결하겠다는 것인데요
그렇다면 지금까지 카카오톡은 소켓연결을 통한 양방향 통신이 아닌 클라이언트 애플리케이션이 서버측에 폴링하는 방식으로
데이터를 가져왔다는 건가요? 이건 좀 이상한데요 왜 소켓 통신을 안한거죠? 모든사용자가 2.2이상의 버전이 아니어서
c2dm을 쓸수 없었다는것은 알겠지만 c2dm이 안된다면 일반 소켓 통신으로 양방향 통신은 가능한거잖아요???
참 궁금하네요.....
2일간 생각해보고 검색을 해봐도 명쾌한 답이 나오는곳은 없더군요
각각의 어플리케이션들이 구글c2dm또는 애플의 푸시서버를 쓰지 않고
자체 서버와 소켓 연결을 해서 서비스 할 경우의 단점을 적어 봤습니다
1. 사용자 입장에서의 단점
카카오톡, 마이피플등 여러 어플리케이션들이 백그라운드에서 각각의 사업자 서버와 소켓 연결을 한다면
애플리케이션의 갯수만큼 백그라운드 서비스가 켜지고 또 그 갯수만큼의 소켓 연결이 되어야 하므로
배터리문제, 전체적인 퍼포먼스 하락이 올 수 있다.
2. 통신사 입장에서의 단점
공통의 푸시서버를 쓴다면 단 하나의 소켓만 사용자가 열어 두고 있다가 메시지 도착알림이 왔을 경우와 같이
필요시에만 어플리케이션이 켜저서 각 사업자의 서버와 소켓 연결을 하면 되므로 낭비를 줄일 수 있지만
각각의 서비스들이 서로의 서버들과 소켓 연결 되어있으면 그만큼 부하가 심해진다
그리고 요새 카카오톡의 문제에 대해서 해결방안이 나왔다고 하는데 이 해결방안이란 것은
앞으로 안드로이드 카카오톡에서는 통신사의 푸시서버, 카카오톡의 푸시서버, 구글의 푸시서버를 이용하여
해결하겠다는 것인데요
그렇다면 지금까지 카카오톡은 소켓연결을 통한 양방향 통신이 아닌 클라이언트 애플리케이션이 서버측에 폴링하는 방식으로
데이터를 가져왔다는 건가요? 이건 좀 이상한데요 왜 소켓 통신을 안한거죠? 모든사용자가 2.2이상의 버전이 아니어서
c2dm을 쓸수 없었다는것은 알겠지만 c2dm이 안된다면 일반 소켓 통신으로 양방향 통신은 가능한거잖아요???
참 궁금하네요.....
안녕하세요 자바 개발자 입니다.
2011.04.06 19:26:28
카카오톡의 경우... 폴링방식으로 되는 부분은 메세지 송수신 부분이 아니라, 카카톡 유저가 카카오톡 서버에 접속이 되어있다는 것을 알리는 킵얼라이브 메세지를 보낼 때로 알고 있습니다 'ㅅ'
2011.04.07 11:43:01
뭔가들 잘못알고 계신거 하나가 있는데...
폴링은 "수신자가 요청을 해서 그 응답을 통해 메시지를 받는 형태"를 의미합니다.
푸시는 "연결된 상태에서 수신자에게 메시지를 전달하는 형태" 입니다.
킵얼라이브의 경우도 푸시라고 봐야 됩니다.
그냥 나 살아있소 하고 보내는것밖에 없습니다....
그것을 통해서 메시지를 응답받으면 그것은 폴링방식이 됩니다.
아예 푸시 방식이 아닙니다.
그러나 킵얼라이브 자체가 너무 잦은게 문제가 되는거죠...
왜이리 잦은 킵얼라이브를 하는가? 에 대한 의문은
제가 생각할때는 3g 네트웍때문이 아닌가 싶습니다.
3g자체가 사용중이 아닐때 네트웍을 빨리 끊기 때문입니다.
그냥 메시지를 보내버리면 사용중으로 판단하는거죠.
끊어졌을때 복구하는 방식으로는 오히려 배터리 소모가 클것으로 생각됩니다.(HTTP에 비해서는 덜할테죠...)
물론 단순한 소켓 연결이지만 이게 워낙 자주일어나고 다른 메시지도 (프로토콜에 정해진...) 날아다닐테니까요...
근데 왜 HTTP통신을 자주하는지 알수 없는데요.... HTTP는 절대로 푸시가 될수 없는 구조인데요...
카톡이 정말 푸시인지 부터 검증해야 할듯 한 대목입니다.
폴링은 "수신자가 요청을 해서 그 응답을 통해 메시지를 받는 형태"를 의미합니다.
푸시는 "연결된 상태에서 수신자에게 메시지를 전달하는 형태" 입니다.
킵얼라이브의 경우도 푸시라고 봐야 됩니다.
그냥 나 살아있소 하고 보내는것밖에 없습니다....
그것을 통해서 메시지를 응답받으면 그것은 폴링방식이 됩니다.
아예 푸시 방식이 아닙니다.
그러나 킵얼라이브 자체가 너무 잦은게 문제가 되는거죠...
왜이리 잦은 킵얼라이브를 하는가? 에 대한 의문은
제가 생각할때는 3g 네트웍때문이 아닌가 싶습니다.
3g자체가 사용중이 아닐때 네트웍을 빨리 끊기 때문입니다.
그냥 메시지를 보내버리면 사용중으로 판단하는거죠.
끊어졌을때 복구하는 방식으로는 오히려 배터리 소모가 클것으로 생각됩니다.(HTTP에 비해서는 덜할테죠...)
물론 단순한 소켓 연결이지만 이게 워낙 자주일어나고 다른 메시지도 (프로토콜에 정해진...) 날아다닐테니까요...
근데 왜 HTTP통신을 자주하는지 알수 없는데요.... HTTP는 절대로 푸시가 될수 없는 구조인데요...
카톡이 정말 푸시인지 부터 검증해야 할듯 한 대목입니다.



