"MQTT" 로 구글링해보면 끝도 없이 나온다.
사실 끝은 있더라...😂
대부분 "MQTT는 무엇인가", "MQTT 작동원리", "MQTT 패킷 구조" 등 기초적인 원리를 설명하는 글이다.
예제도 MQTT 사이트에 있는 IoT 관련 내용으로 pub/sub 한번 해보는 내용이다.
그 글들을 무시하려는 것이 아니라, 이걸로 서비스를 만들려고 하면 좀 애매하다는거다.
그 막막함 나도 안다.
그래서 이 글을 연재하기로 마음먹었다.
왜?
채팅이야말로, 모바일 앱의 기본 중 기본이라 생각했다.
자네는 뭘 개발하나?
"네, 저는 웹 서비스 개발합니다"
그러면 게시판 정도는 눈 감고도 짜겠구만.
그렇다. 나에게 채팅 기능은 웹 개발자의 게시판이라 보면 된다.
처음에는 socket.io 로 만들었지만, 사이트에서 주는 예제를 넘어서기가 쉽지 않았다.
그리고 socket.io는 websocket이기에 최초 연결 시 무겁기도 하고, 스마트 폰에서 실행하기에는 많은 리소스를 사용한다.
심지어 먹통이 되기도 한다.
...
그래서 포기했다.
아니 "socket.io는 웹채팅에 양보하자" 라는 말로 정신승리했다.
...
그러다가 MQTT를 알게 되었다.
MQTT는 IoT를 위해 만들어진 것이기에 채팅서버용 프로토콜로는 딱이라는 생각을 했다.
지하철이나 버스를 타고 이동 중, 하나의 AP에서 다음 AP로 넘어갈 때 연결성도 좋았다.
오호 이것 괜찮은데....
...
하지만
"늑대 피하려다 호랭이 만난다"는 속담처럼 이것도 쉽지 않았다.
...
그 호랭이를 어떻게 물리쳤는지(아니 구워 삶았는지)에 대한 글이다.
우리가 익히 아는 Client/Server, 웹 서비스 이런게 아니다.
예를 들어 채팅하기 위해 로그인하다고 해보자.
Broker한데 "로그인 처리 해줘"하면 안된다.
얘는 말 그대로 중계자이다. 오른손을 받아 왼손으로 넘겨주는 놈이다.
여기서 첫번째 장애를 만났다.
...
로그인 처리해 줄 놈을 어떻게 만들지?
...
...
이런 문제는 그 때가서 돈 세면서 생각하면 된다.
...
채팅 사용자가 몇 명 안될 때는 큰 문제가 되지 않는다.
하지만 사용자가 엄청 많아졌을 때, 또는 특정 시간 때에 사용자가 몰리면 어떻게 할 것인가?
채널에 구독하기만 하면 다 볼 수 있는 환경에서, 내 메세지는 나에게만 전송되어야 한다.
안 그러면 쪽팔린다.
평생 들을 욕을 하루에 다 들을 수도 있다.
물론 만들어 달라는 분(돈 주는 사람일 가능성이 높으니까)의 고견에 따라 달라질 수 있다.
1번고객: 야...우리는 메세지를 DB에 저장할 필요 없어.
2번고객: 우리는 회사 서버에 저장해줘. 압색들어오면 싹 지워버리게.
3번고객: 뭐 중요한 것도 없고, 우린 그냥 클라우드 DB에 저장해줘.
돈🤑 주시는 분들은 보통 반말을 많이 사용하더라. ㅠㅠ
다음 정도는 알고 있어야 얻어 걸리는 것이 있을 것이다.
기초적인 것은 여기 velog.io에도 많이 있으니, 여기선 다루지 않겠다.
tl;dr 댓글에 설치법 이런 것 물어보지 마시고...나도 구글링 함ㅠㅠ
앗. 카톡 서버를???