마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

1111111321312312

0 추천
1
ghozi1 (650 포인트) 님이 2017년 1월 24일 질문
ghozi1님이 2018년 6월 22일 수정

1개의 답변

0 추천
뭐 따지자면 전문용어로는 폴링이라고 하는데 폴링 주기에따라 그리고 사용자 수에 따라 기하 급수적으로 트래픽이 늘겠지요.

비용적인 측면이라고는 1도 생각하지 않으신 외부작업자 분이시네요.

서버보다도 사용자 측면에서 보았을때 그럼 채팅을 하는동안 쓸데없이 데이터를 계속적으로 소모하는것이 되는데 그에따른 이슈는 어떻게 감당하시려고...
Development Guy (70,570 포인트) 님이 2017년 1월 24일 답변
Development Guy님이 2017년 1월 24일 수정
처음에 사용자가 몇 명 없다고 했으면 폴링으로 간단히 처리해도 되지 않나요?
그렇군요 ㅠ.. 그럼 채팅같은 경우는 어떤 방식으로 구현하는 것이 가장 이상적인가요?
지금 쓰는 이 폴링 방식으로는 동접자 수가 꽤 늘어났을 때 서버 감당이 안되는 수준인가요?
감당이 되고 안되고는 서비스를 운영하기 전에는 정확히 알기 힘듭니다. 그러나 리소스를 최대한 아끼고 아껴서 수용 범위를 늘릴수 있는 방법은 많지요. 위 같은 방법은 제약적인 상황이나 론칭이 급한데 시간이 없는경우 가장 원초적인 방법인데 일반적으로 안드로이드로 실시간 통신이 필요하다고 하면 push를 떠올릴 것이고 이게 그렇게 오래걸리는 작업도 아닌데 위처럼 할 이유는 없다고 생각합니다.
계속 답변해주셔서 정말 감사합니다.
선생님 말씀을 들어보니 채팅구조를 바꿔야겠네요..
그런데 푸시는 무슨 말씀이신가요?
데이터를 주기적으로 뿌려주지 않고, 그냥 냅두고 푸시로 메세지 도착을 알린 후에 사용자가 다시 새로고침을 해서 하는 방법인가요?

제가 개인이다보니 작업자분께 원하는 바를 말해야 개발이 되는 것인데.. ㅠ 참 안배우니 모르는게 많네요..
서버에서 디바이스로 보내주는 메시지 입니다.
제가 설명하는것보다 공식 페이지에서 한글로 잘 번역 되어 있으니 보면 더 이해가 잘 갈거에요.
https://firebase.google.com/docs/cloud-messaging/?hl=ko
감사합니다.. 정말 많은 정보 알게되었습니다.
"일정 시간을 두고 주기적으로" 라면.. batch 방식 이네요.
batch가 나쁘다는 것은 아닙니다. 서비스를 최우선으로 이해하고 있는 개발자분께서 그리 설계한 의도가 있겠죠.
우선 그 의도를 파악하는 것이 먼저 일 것 같구요...

요즘은... 이런 방식을 쓰지는 않습니다.
일반적으로는 FCM (이전에는 GCM)을 이용하여 실시간으로 데이터를 갱신하고 사용자에게 최신 데이터를 제공합니다.
또는 TCP Socket 으로 처리합니다.

이미지는 모르겠지만.....
두 유저간의 대화를 수집해야한다면, 서버에 저장하면 되고....
수집할 필요가 없다면, 두 유저간의 pushKey만 제공하고 알아서 메시지를 전달하면 될 것 같은데요.
안녕하세요. 채팅기능은 일단 이미지 전송도 지원합니다.
그럼 FCM과 TCP Socket 방식중 어떤것으로 바꾸는것이 나을까요?
개인적으로 추천해 드리고 싶은 방법은 FCM이랑 Firebase에서 지원하는 스토리지를 조합해서 사용하시는게 어떨까 합니다.
서버 개발자분이 상주하시는게 아니니까 무모하게 로우레벨로 직접 구축하기 보다는 과금을 하더라도 안정적으로 구축 되어있는 클라우드 서비스를 사용하시는게 나을거 같아요
그럼 일단 채팅은 FCM과 firebase 스토리지 조합해서 만들고,
서버를 단독서버 같은 것을 사용하지 않고 클라우드서버로 구축하면 될까요?
제가 하이브리드앱을 곧 제작하는데, 그럼 채팅은 웹에서 만든다치고, 서버는 웹작업자분에게 맡겨야하나요? 아니면 앱 작업자분께 맡겨야하나요??

저는 그냥 정보를 모아서 작업자분께 어떻게 만들어달라고 주문만 하는 입장이라.. 참 ㅠㅠ 힘드네요..

작업자분들이 하시는 방법은 제가 구체적으로 뭐로 해달라하지않으면 본인이 원하는대로하셔서..
어떻게 작업자분한테 전해드려야 개발꾼 선생님이 말씀해주신 대로 작업을 해줄지.. 원 ㅠ
일반적으로 개발 프로젝트 진행할때 질문자님처럼 요구사항에 개발 방법까지 자세하게 제시하지는 않습니다. 물론 상황에 따라 다르지만 예를들어 "푸쉬 서비스를 활용한 채팅기능" 까지가 요구사항이고 이 실시간 푸쉬기능을 FCM으로 할지 MQTT로 할지 폴링방식으로 할지 TCP로 할지 등 이런 방법들은 개발자 재량입니다. 개발자가 해야할 고민을 질문자님이 하실 필요는 없으세요. 반대로 개발자가 이런 고민을 질문자님에게 제시하면서 선택을 요구할수는 있어도  저같은 경우 누군가가 이런 개발 방법까지 제시하면 기분이 나쁠거 같습니다.

여기에 답변 달아주시는 분들만 봐도 방법이 제각각이듯이 그릇된 방법이 아닌 경우에는 그 개발자의 재량을 존중해주어야 합니다.
그렇군요.. 채팅같은 경우 폴링? 그 방식으로 하셔서 이제 그냥 주문할때 아예 방식까지 주문하려고 했는데 그럴수도 있겠군요..ㅠ
하여튼 답변 정말 감사합니다. 많이 알게되었습니다.!!
비용 지불이 가능하다면 SendBird 추천합니다.
MAU 1000 까지는 무료 사용도 가능합니다.
...