"카톡"
"인스타 디렉트 메시지가 도착했어요"
우리는 하루종일 수만가지 app push를 받는다. 귀찮아서 push를 끄기도 하고 app push때문에 물건을 사기도 하며, 친구와 관계가 멀어지기도 돈독해지기도 한다.
그렇다면 이런 app push기능은 어떻게 구현되는 것일까?
push notification server는 어떻게 만드는 것일까?
서버 개발자라면 궁금할만한 "push notification server 만들기 대장정"을 시작할까한다.
오늘은 바로 그 첫번째 이야기이다.
아마 이글을 다읽고 나면 간단한 push notification server 하나 정도는 만들수 있을 것이다. 적어도 push notification server의 전반적인 개념과 앞으로 어떤 공부를 해야 할지또한 알수 있을 것이다.
그리고 시리즈를 다읽고 나면 큰 push notification server하나는 만들수 있을 것이다.
push notification server란 무엇일까?
push notification를 보내는 서버이다.
하지만 중요한건 그게 아니다.
누구에게 보내는 서버인가?
이 질문의 답이 push notification server의 정체성을 만든다.
youtube에서 누군가 새로운 영상을 올렸다. 모든 구독자들에게 푸시가 간다. 여기서 누구는 구독자이다.
카카오톡에서 오픈채팅방을 하나 열었다. 그리고 우리는 챗을 하나 보냈다. 여기서 누구는 오픈 채팅방의 인원이다.
마케터가 새로운 앱버젼 출시를 알리기 위해 특정 앱버젼의 한국에 마케팅 푸시를 보냈다. 여기서 누구는 특정 앱버젼의 한국인이다.
'누구에는'는 사실 개발 용어가 아니기에 우리는 이제 '누구에게'를 '타겟팅' 라고 칭하겠다.
위에서 보았듣이 누구에게 보내느냐에 따라서 push notification server의 정체성은 전혀 틀려진다. 무엇을 보낼지도 틀려진다. 그리고 개발 난이도도 천차 만별이다. 그럼 약속을 지키기 위해 가장 쉬운 push notification server를 하나 설계해보자. 어떤게 가장 쉬울까?
그건 바로 채팅방 push notification server이다. 왜? 누구에게(타겟팅)가 명확하기 때문이다. 그리고 DB에서 아주 쉽게 조회를 할수 있기 때문이다.
아래와 같이 다이어그램도 쉽게 나올수 있다.
1. clientA가 message를 만든다. 그리고 message server에 요청한다.
2. message가 만들어지면 trigger가 발동되어 방 아이디와 제목, 내용이 push server에게 전달된다.
3. push server는 openRoomId로 DB에서 방에 있는 유저의 userID와 notificationID를 조회한다.
3.5. push server는 아이디와 제목으로 push payload를 만들다.
4. 만들어진 payload는 fcm 또는 APNS로 전달한다.(with notificationID)
5. fcm과 APNS는 오픈방 클라이언트에게 푸시한다.
자 약속대로 아주 쉬운 push notification server 하나가 나왔다. 어렵다고?? 음... 어려울수 있다고 생각한다. 그래서 다음편에 아주 자세히 다시 한번 설명할거니깐 다음편도 봐라!! 피가 되고 살이 되는 고급진 정보다. 어디서 이런 현업 고급정보를 얻어갈수 있단 말인가??
이게 여러분이 알고 있는 기본적인 채팅방 push notification server이다. 생각보다 간단하지 않는가? 물론 많은 인원에게 보내기 위해선 분산처리를 해야만 한다. 또 payload도 안드로이드 ios에 따라 분기 처리를 해야 한다. 그리고 잘 보내졌는지 확인을 위해 DB에 추적용 데이터도 쌓아야 한다. 그건 다음 또는 다다음 시간에 한번 풀어보도록 하겠다.
이걸 기본적으로 할수 있다는 전재하에 우리는 좀더 진화된 타겟팅의 push notification server를 만들수 있다.
예를 들면 이런거다. "마케터가 특정 앱버젼을 지닌 한국인에게만 푸시를 보내고 싶다!" 고 강렬히 외치고 있다. 어쩌겠는가? 만들어야지!!
아래 다이어그램을 보자.
물론 예약 기능도 되어야만 하고, 실제로는 위 다이어그램보다 더 복잡하다. 우선 이해를 돕기 위해 간단히 그린거니, 다음 또는 다다음 시간이 깊게 풀어보도록 하겠다.
그리고 이런 까리하진 않지만 기능이 되는 push view도 만들어줘야만 한다.
머 이렇게??
오!!! 이러면 우리는 특정 타겟팅된 유저 푸시를 보낼수 있게 된다. 훌륭하다. 마테터는 박수를 치며 좋아 한다. 그리고 의미심장한 미소를 지으며 말한다. "가입한지 한달도 채 되지 않은 2번 접속한 사용자에게 푸시를 보내고 싶어..." 어안이 벙벙하다. 하지만 어쩌겠는가? 우리 마케터님이 하고 싶다는데 만들어 줘야지... 하지만 위에서 처럼 매번 view를 만들어주는건 참 헛된일이다. 그럼 방법은 간단하다. 마케터가 query를 배우면 된다. 그리고 view에 쿼리 입력창만 추가해주면 된다.
와~~~~~ 마케터도 해피,,, 회사도 해피!! 개발자도 해피(???)한 상황이 되었다. 농담이고 해피한 상황 맞다. 쿼리까지 마케터가 할줄 앎으로써 좀더 가볍게 만들수 있었다. 그리고 역할도 분담됨으로써 빠르게 만들수 있게 된것이다. 그리고 마케터는 해당 푸시view로 지속적으로 실험하면 된다. 물론 마케터가 접근할수 없는 정보의 DB도 있기 때문에 때로운 데이터 담당자가 붙어 DB에서 css파일로 직접 보낼수 있도록 만들어줘야만 한다.
이제 우리는 아주 섬세한 타겟팅을 해서 push를 보낼수 있다.(개발자는 죽어간다...) 만세!!!! 이제 끝인걸까? 아니다. IT 사람들이 얼마나 괴물들인데 여기서 끝을 보겠는가? 여기서 한번 더 고도화 해야 한다. 이를 테면 이런거다. 갑자기 유튜브가 뜬금없이 푸시를 보냈다. "너 이런 영상 좋아할거 같아 한번 시청해줘, 그리고 시청 많이해서 우리 부자되게 해줘!!", 쿠팡이 갑자기 "야 너 이런물건 사고 싶지 않아? 상세페이지 봐바. 사면 더 좋고" 지금까지의 타겟팅과 다른점이 느껴지는가? 지금까지는 모두 특정 그룹에게 타겟팅 되었다. 하지만 위 예시는 개인에게 철저하게 커스터마이징 되어 있다. 물론 특정 그룹군에게 보낸것일수도 있다. 단지 개인에게 커스터마이징 된것처럼 느끼게 한것일수도 있다. 하지만 결국 푸시의 최고도 난이도는 개인 커스터마이징 푸시를 보내는 것이다. 그럼 이런 푸시 시스템은 어떻게 만들수 있을까?
답은 빅데이터 그리고 머신러닝에 있다. 훗 기승전 머신러닝이군.... IT판이 요즘 이렇게 돌아가는걸 나보고 어쩌란 말인가? 이건 아직 필자도 능력 부족으로 만들어보진 못했다. 물론 데이터 사이언티스트와 같이 풀어야 하는 문제이기도 하다. 백엔드 개발자는 많은 사람에게 푸시를 보낼수 있도록 인프라를 뒷바침 해주면 된다. 하지만 필자는 궁금증도 많고 성취욕도 있기때문에 좀더 공부해서 한번 만들어보고는 싶다. 만든다고는 안했다. 만들어보고 싶다는 것일 뿐이다. (필자는 데이터를 참 좋아한다.)
자 오늘 기초 같지만 기초같지 않은 푸시의 세계에 대해서 알아보았다. 가볍에 훑었기 때문에 디테일이 많이 부족하다. 예를 들면 분산처리는 어떻게 해야 하나요? 예약은 어떻게 해야 하나요? 무엇을 보내야 하나요? 마케팅 push notification server에 대해서 좀더 자세히 설명해 주세요! 데이터처리는 어떤걸 쌓아야 하나요? 등등 풀어야할 이야기가 산더미다. 시간은 많으니 차차 풀어가보겠다. 대신 많이 들어와달라... 그래야 글쓸맛이 난다. 그리고 홍보도 좀 해주고!! ㅋㅋㅋ 하여튼 읽어주셔서 감사합니다!!
'개발 > 푸시 서버' 카테고리의 다른 글
마케팅 푸시 서버 구축기 3탄 - 예약기능 (2) | 2022.05.10 |
---|---|
마케팅 푸시 서버 구축기 2탄 - 마케터를 위한 푸시view 만들기 (0) | 2022.05.05 |
마케팅 푸시 서버 구축기 1탄 -마케팅 푸시 알람의 꽃!! 데이터!! (2) | 2022.01.19 |