본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://fastcampus.info/4n8ztzq
안녕하세요 :)
오늘은 "50일의 기적 AI 환급반_ 대규모 채팅 플랫폼으로 한 번에 끝내는 실전 대용량 트래픽 커버 완전판 " 챌린지에 도전하는 열여섯번째 날입니다.
열다섯번째 날에는 프로토콜은 왜 필요한가 JSON을 선택한 이유에 대해 배웠었는데요. 오늘은 과연 어떤 내용들을 배울 수 있을지 공부하고 포스팅 하도록 하겠습니다.
오늘 학습할 내용의 제목은,
Part 2. 채팅 뼈대 프로젝트 개발 > Ch 2. Rest API와 WebSocket의 기본 >
07. 메시지 브로드 캐스팅이란 무엇인가-
입니다.
📣 메시지 브로드캐스팅이란 무엇인가?
- 개발에서 흔히 쓰이는 브로드캐스트(broadcast)라는 용어는 사실 농사에서 유래되었습니다. 씨앗을 흩뿌리듯 정보를 한 번에 여러 대상에게 전달한다는 의미죠. 이후 라디오, TV, 네트워크, 그리고 소프트웨어 서비스 영역까지 개념이 확장되면서 기술적으로도 다양한 방식으로 사용되고 있습니다.
- 이번 글에서는 네트워크 레벨의 브로드캐스트와 서버(WebSocket 기반)의 브로드캐스트 구현이 어떻게 다른지를 비교하며 설명합니다.
🌐 네트워크 브로드캐스트
- 네트워크 계층(L2, L3)에서는 스위치나 라우터를 통해 한 번의 패킷 전송으로 같은 네트워크 내 모든 호스트에게 메시지를 전달할 수 있습니다.
🧱 특징
- 브로드캐스트 도메인이라는 영역 안에서만 동작
- 대표적인 예:
- ARP (Address Resolution Protocol): IP 주소에 대응하는 MAC 주소를 찾을 때 사용
- DHCP (Dynamic Host Configuration Protocol): 클라이언트가 서버를 모를 때 네트워크 내에 자신을 알림
- 이처럼 브로드캐스트는 운영체제 수준이나 네트워크 장비 수준에서 작동하는 로우 레벨 동작입니다.
🧭 서버(WebSocket) 브로드캐스트
- 채팅 서버처럼 클라이언트와 WebSocket으로 연결된 환경에서는 실제 브로드캐스트는 불가능합니다. 왜냐하면, 서버는 각 클라이언트와의 연결이 TCP 기반의 일대일 연결이기 때문입니다.
- 따라서, 서버가 메시지를 모든 사용자에게 보내고자 한다면 내부적으로는 각 클라이언트에게 개별적으로 반복 전송해야 합니다. 이를 멀티플 유니캐스트라고 부릅니다.
- 이 차이를 무시하면, 마치 서버가 "한 번에 모두에게 메시지를 날릴 수 있다"고 오해할 수 있습니다. 실제로는 서버가 루프를 돌면서 각 클라이언트에 메시지를 보내야 하며, 참여자가 많을수록 부하가 급격히 증가합니다.
🛠️ 왜 이 차이가 중요할까?
- 그룹 채팅 서비스에서 사용자 수에 제한을 두는 주된 이유 중 하나가 바로 이 브로드캐스트 구조 때문입니다.
- 서버는 동시에 1만 명과 연결될 수 있다고 해도, 하나의 채널에 1만 명을 몰아넣고 모든 메시지를 전달하려면 막대한 처리량이 필요합니다.
- 따라서 기술적으로는 "브로드캐스트"가 아니라 멀티플 유니캐스트라는 사실을 명확히 이해해야 합니다.
- 이번 내용을 정리하면서 브로드캐스트라는 단어 하나가 도메인마다 의미가 어떻게 다르게 적용되는지, 그리고 그 차이가 실제 구현에 얼마나 큰 영향을 미치는지 깊이 느꼈습니다.
- 그룹 채팅처럼 "모두에게 메시지를 보낸다"는 단순한 요구도 기술적 관점에서 보면 많은 고려사항이 필요하다는 걸 알게 되었고, 성능이나 확장성에 대한 이해 없이 기능만 구현하는 것은 위험하다는 생각이 들었습니다.
- 앞으로는 용어 하나도 그 기원과 계층을 따져가며 더 깊이 있게 이해하고, 기술적인 설계까지 연결지어 사고하는 연습을 해야겠다는 생각이 들었습니다.