Simple&Natural

실시간 채팅앱 개발의 여러가지 이슈 본문

안드로이드(Android)/이슈 및 해결

실시간 채팅앱 개발의 여러가지 이슈

Essense 2019. 12. 13. 13:52
728x90

본 포스팅은 2019. 2. 7. 23:16 네이버 블로그에 작성된 글을 이전한 것임

 

 

 

 

 

구글링을 하다가 발견한 채팅기능 개발 관련 스레드

http://www.todayhumor.co.kr/board/view.php?table=programmer&no=13213

 

Android / 메신저 어플은 GCM으로 하면안되나요?

안녕하세요. 회사에서 게임 내부와 소통할 수 있는, 메신저어플을 만드는중입니다. 기획 당시에는 1. 어플에서 로그인 -> 초기데이터를 전달받음 (친구 정보, 로그인정보

www.todayhumor.co.kr

 

 

우리가 흔히 쓰는 왓츠앱이나 카카오톡과 같은 메시징앱들은 보기에 굉장히 간단해 보이지만

안을 들여다 보면 매우 정교하고 수준 높은 기술들이 들어가 있는 것 같다.

단순히 소켓을 열고 데이터를 주고받고 다시 소켓을 닫는 개념에서는 채팅이 쉬워보일 수 있으나

발생할 수 있는 여러가지의 상황들을 모두 고려하다 보면 난이도는 기하급수적으로 올라간다.

수신 측 유저가 오프라인 일 때 메시지를 처리하는 법

푸쉬 서버를 이용할 때 발생하는 유실 메시지는 어떻게 처리할 것인지

백그라운드 작업을 할 때 소모되는 배터리 이슈는 어떻게 할 것인지

소켓을 언제 열고 닫을 것인지

어떤 프로토콜이 가장 적절한지 등...

이런 여러가지의 이슈들을 모두 고려해야 한다.

원래 정말 완벽한 퀄리티의 채팅앱을 만들고 싶어서 몇 주 동안 공부를 해본 결과

모든 것을 초고퀄로 만드는 건 거의 불가능한 것으로 판단된다.

구글링을 하다가 2015년 경에 작성된 한 글을 보았다.

" 불과 작년에 모바일 메신저서비스 만들고, 최근에도 컨설팅 한 입장에서 말씀드리면 지금 원하시는 조건을 다 만족하는 퍼펙트한 솔루션은 존재하지 않습니다...

제약조건이 android, ios지원을 하며, 서버/클라쪽 자원 사용량이 적으면서 백그라운드 상태에서도 수신 알림이 트리플나인 이상 되는 실시간 메시지 전송 솔루션인 듯 한데 이거 만 족 시킬 수 있는 방법이 없어요...

실시간성에서 타협하거나, 혹은 서버나 클라이언트 자원을 많이쓰거나 둘중 하납니다. "

현업에서 메시징 앱 개발 경력이 많이 보이는 분이었는데 저렇게 설명하고 있었다.

뭐... 현재 상용 서비스에서도 완벽한 기술구현은 불가능하다고 하니 나도 굳이 완벽을 추구할 필요는 없겠다 싶었다.

굉장히 강박증에 가까울 정도로 심적스트레스를 받다 보니 어느 정도 내려놔야 하는데... ㅠㅠ

자꾸 꼼꼼하고 완벽하게 하려는 성향이 있다.

정작 그런다고 안터지는 것도 아니지만...

아무튼 추가로.

푸쉬메시지 서비스의 유실율에 관해서는 다음과 같이 처리하는 듯 싶다.

" 그런데 사실 모바일 환경인 이상 네트워크 환경을 보장할 수 없어서, 높은 실시간 전송률(1분이내 수신률 99%이상)이 보장 되는 메시징을 만드는건 상당히 어렵습니다.

대개 기존 푸시에 의존하고, 앱을 켰을 때 폴링을 하던 TCP 열던 제대로된 메시지 수신을 하죠.

보통은 서버에서 동일한 UID로 푸시를 충분히(전송 보장률이 99%이상 될 정도 횟수로) 많이 보내고, 클라이언트에서 동일한 푸시는 무시하도록 처리하는 경우가 많습니다. "

한번 말해서는 못알아 들으니 20번 30번 말해준다는 뜻이다.

심플.

한 번만 보냈을 때도 알아들어야 한다는 고정관념을 가진 나는 생각하기 어려운 개념...

++ 추가

카카오톡의 경우 스마트 푸쉬라는 걸 이용하는 걸로 보인다.

아마 SK에서만 해당되는 듯...?

http://www.zdnet.co.kr/view/?no=20110921111218

 

SKT, “카카오톡 얼마든지 쓰세요”

SK텔레콤은 메신저-소셜네트워킹서비스(SNS)의 연결유지 신호(킵 얼라이브)를 통합 관리하는 ‘스마트 푸시(Smart Push)’로 통신망 과부하 방지가 가능해졌다고 21일 밝혔다. ​메신저-SNS 애플...

www.zdnet.co.kr

 

 

참고 링크

http://cheonbrave.blogspot.com/

 

:)

 

cheonbrave.blogspot.com

 

https://okky.kr/article/338303

 

OKKY - All That Developer

Editor's Choice OKKY 회원&게시글 관리 정책 믿음 4k2017-05-22 18:23:38 Weekly Best 개발자를 그만두고싶어요 저는 화를 못 냅니다. 퇴직 날짜 당겼습니다. Q&A 테이블 구조 문의드립니다. spring에서 디비링크 안되나요?? sql select sum 쓰는법 커뮤니티 수원 모각코 모집합니다. 0204k 272019-12-13 13:41:20 문득 생각나는 인터뷰 문제 병특 vs 대학 itsfms 402019-12

okky.kr

 

https://www.quora.com/How-does-messaging-work-in-WhatsApp-Is-this-the-right-approach-for-communication-between-client-and-server-Is-the-client-always-connected-to-the-internet-when-waiting-for-a-response

 

How does messaging work in WhatsApp? Is this the right approach for communication between client and server? Is the client alway

Answer (1 of 22): eXtensible Messaging and Presence Protocol is used to massaging in whatsapp. and all working in depends on this protocol. 1. WhatsApp starts and opens two sockets: One to listen on and one to send a message to the server. 2. WhatsApps sta

www.quora.com

 

https://www.reddit.com/r/androiddev/comments/988pgq/how_does_whatsapp_still_receives_messages_on_time/

 

How does whatsapp still receives messages on time after ore background limitations?

Chat apps need background services to deliver notifications on time, how does an application like whatsapp achieve this after the restrictions...

www.reddit.com

++ 추가 봐야될 문서

https://hackernoon.com/how-to-build-your-own-real-time-chat-app-like-whatsapp-9d1d058afd5b

불러오는 중입니다...

 

728x90