← 쉽게 읽는 IT

카카오톡 메시지는 어떻게 상대방에게 전달될까?

보내기 버튼에서 알림과 읽음 표시까지, 짧은 메시지의 여정

퇴근길, 민수는 친구에게 카카오톡을 보냈습니다.

"나 지금 출발했어. 20분 뒤에 보자."

말풍선이 나타났지만 바로 답장은 오지 않았습니다. 친구는 지하철을 타고 있었고, 잠시 뒤 휴대폰에 알림이 뜨자 채팅방을 열었습니다.

민수의 휴대폰은 친구가 지금 어느 기기를 쓰는지 어떻게 알았을까요? 친구가 앱을 열어 두지 않았는데도 메시지가 전달되는 건 왜일까요?

이야기 속 IT 개념

민수의 짧은 메시지를 따라가 보겠습니다. 카카오가 2023년에 공개한 안정성 보고서의 전송 흐름을 중심으로, 일반적인 메신저와 모바일 알림 원리를 곁들여 설명합니다. 공개 당시의 설명이므로 현재의 세부 구현과는 차이가 있을 수 있습니다.

1. 휴대폰끼리 바로 보내는 대신 서버에 발송을 요청합니다

민수의 카카오톡 앱은 메시지 전송을 요청하는 클라이언트입니다. 글만 보내는 것이 아니라 누가 어느 채팅방에 보내는지도 함께 전달해야 합니다. 같은 "출발했어"라도 친구와의 대화인지 회사 단체방인지에 따라 목적지가 완전히 다르기 때문입니다.

카카오 보고서에서는 연결을 관리하는 서버를 거쳐 처리 요청을 보내며, 서버가 유효성을 확인한다고 설명합니다. 이 경로는 카카오 안정성 보고서의 프롤로그에 공개되어 있습니다. 우편을 바로 이웃집에 던져 넣는 대신 접수 창구에서 발신인과 목적지를 확인하는 구조로 생각하면 쉽습니다. 민수는 친구를 골라 글을 썼지만, 시스템에는 이 요청을 받아도 되는지 확인하는 단계가 필요한 것입니다.

2. 글을 처리하는 곳과 사진을 보관하는 곳의 역할이 다릅니다

보고서에 따르면 백엔드는 채팅방 참여 여부 등을 검증하고 메시지를 암호화해 데이터베이스에 저장합니다. 사진과 영상은 별도 미디어 처리 과정을 거쳐 객체 스토리지에 보관하고, 앱이 접근할 주소를 활용합니다. 글과 큰 파일을 모두 똑같은 방식으로 다루지는 않는 것입니다.

이 카카오 처리 방식은 보고서의 메시지 저장 설명을 바탕으로 했습니다. 장부에는 짐의 기록을 정리하고 큰 짐은 창고에 따로 두는 모습과 비슷합니다. 친구에게 사진까지 보낸 상황을 떠올리면, 대화 내용을 정리하는 일과 큰 파일을 보관하는 일이 왜 구분되는지 이해하기 쉽습니다. 다만 저장 시 암호화한다는 말은 참여자만 해독할 수 있는 종단간 암호화와 같은 뜻이 아닙니다. 저장 장소를 잠그는 것과 전달 과정 전체에서 누가 열쇠를 갖는지는 다른 질문입니다.

3. 앱이 연결되어 있을 때와 닫혀 있을 때는 전달 경로가 달라집니다

카카오가 공개한 흐름에서는 수신자의 설정을 확인해 메시지를 전달하고, 상대가 앱을 사용하지 않을 때는 알림을 보냅니다. 이후 앱이 서버에 연결해 메시지를 받습니다. 민수의 친구가 채팅방을 열어 두지 않았어도 새 대화를 알 수 있는 이유입니다. 이 부분 역시 카카오의 수신 과정 설명에 나옵니다.

일반적인 모바일 앱에서 알림은 앱의 대화 연결과 별도로 운영체제의 푸시 체계를 활용할 수 있습니다. 예를 들어 Android의 Firebase Cloud Messaging은 앱이 배경에 있을 때 알림 메시지를 시스템 알림 영역으로 전달하는 동작을 설명합니다. 이는 모바일 알림의 일반 원리를 보여 주는 예시이며, 카카오톡이 모든 환경에서 이 경로만 쓴다는 뜻은 아닙니다. 알림 권한, 네트워크와 기기 상태에 따라 도착이 늦어질 수도 있습니다. 자세한 동작은 Firebase의 알림 수신 문서에 설명되어 있습니다.

4. 전송과 알림, 읽음은 같은 순간을 뜻하지 않습니다

이제 민수가 메시지 옆 표시를 보며 기다리는 상황을 생각해 볼 수 있습니다. 메시지를 보내려 했다는 것, 서버가 처리했다는 것, 친구 기기에 알림이 나타났다는 것, 채팅 화면을 확인했다는 것은 서로 다른 사건입니다. 이런 구분은 일반적인 메신저를 이해하는 데도 유용합니다. 민수 입장에서는 전부 '메시지 보내기'지만, 문제를 조사할 때는 어느 단계까지 진행됐는지 나눠야 하기 때문입니다.

특히 앱의 읽음 상태가 사람의 이해나 답장할 여유까지 측정해 주는 것은 아닙니다. 친구가 메시지를 열어 봤어도 이동 중이라 답하지 못했을 수 있습니다. 휴대폰 화면에는 말풍선 하나만 나타나지만, 그 뒤에서는 요청 확인과 저장, 전달과 상태 갱신이 이어집니다. 민수의 친구에게 도착한 짧은 한 문장은 휴대폰 두 대의 직접 대화라기보다, 여러 시스템이 역할을 나눠 완성한 전달의 결과였습니다.