알고 있으면 너무 좋은 프론트엔드 웹 기술 : WebRTC
- WebRTC는 웹에서 실시간으로 데이터를 주고받는 P2P 통신 API로, 서버 중계 없이 클라이언트 간 직접 연결을 가능하게 합니다. 🌐
- 원래 화상 채팅 목적으로 개발되었으나, 오디오, 비디오뿐만 아니라 텍스트, 파일, 게임 데이터 등 모든 종류의 데이터를 주고받을 수 있습니다. 📦
- P2P 연결 설정이 가장 복잡한 부분이며, 이를 위해 시그널링 서버가 필요하지만, 실제 데이터 통신은 서버를 거치지 않고 피어 간에 직접 이루어집니다. 🤝
- 피어 간 연결을 위해 **SDP (Session Description Protocol)**와 ICE (Interactive Connectivity Establishment) 정보가 시그널링 서버를 통해 교환됩니다. 📨
- SDP는 미디어 형식, 프로토콜 정의, 네트워크 정보를 포함하며, Offer/Answer 방식으로 교환됩니다. 📝
- ICE는 공인 IP 및 포트 설정 등 최적의 네트워크 경로를 찾기 위한 후보 정보를 제공하며, 발견 즉시 상대 피어에게 전송됩니다. 📡
RTCPeerConnection 객체를 사용하여 WebRTC 연결을 관리하며, STUN 서버 (예: Google STUN)를 통해 공인 IP 및 ICE 후보를 얻고 NAT 트래버설을 지원받습니다. 🧊
createDataChannel()을 통해 피어 간 텍스트, 파일 등 다양한 데이터를 주고받을 수 있는 통로를 생성하고 관리합니다. 💬
- WebRTC는 서버 리소스 사용을 최소화하고 매우 빠른 실시간 통신을 제공하지만, 연결 피어 수가 증가할수록 각 피어의 부담이 커지는 확장성 문제가 있습니다. 📈
- 적절한 서비스에 적용될 경우 최고의 기술 선택이 될 수 있으며, P2P 연결 후 데이터 통신은 상대적으로 간단합니다. ✨