WebRTC(Web Real-Time Communication)
WebRTC(Web Real-Time Communication)는 웹 브라우저와 모바일 애플리케이션 간에 플러그인이나 추가 소프트웨어 없이도 **실시간 음성 통화, 비디오 통화 및 데이터 전송**을 가능하게 하는 기술입니다. Google이 주도적으로 개발했으며, W3C 및 IETF의 표준화 과정을 통해 발전했습니다.
---
### **WebRTC의 주요 특징**
1. **실시간 통신**:
- 브라우저 간 실시간 데이터 교환이 가능하며, 대기 시간을 최소화합니다.
2. **플러그인 불필요**:
- 별도의 소프트웨어 설치 없이 브라우저 기반으로 동작합니다.
3. **P2P 통신**:
- 클라이언트-서버 구조가 아닌, 브라우저 간 직접 데이터 전송(Peer-to-Peer)을 지원합니다.
4. **다양한 데이터 전송**:
- 비디오, 오디오, 텍스트, 파일 등의 다양한 데이터 유형을 지원합니다.
---
### **WebRTC의 주요 구성요소**
1. **GetUserMedia**:
- 사용자 디바이스(카메라, 마이크 등)에서 미디어 스트림(비디오/오디오)을 가져오는 API입니다.
2. **RTCPeerConnection**:
- 브라우저 간 P2P 연결을 생성하고, 데이터 스트림(비디오, 오디오 등)을 교환합니다.
- ICE (Interactive Connectivity Establishment)를 사용하여 네트워크 경로를 찾고 연결을 설정합니다.
3. **RTCDataChannel**:
- 실시간 비디오 및 오디오 데이터 이외의 데이터를 전송하기 위한 채널입니다.
---
### **WebRTC의 사용 사례**
1. **화상 회의**:
- Zoom, Google Meet 등에서 사용됩니다.
2. **라이브 스트리밍**:
- 실시간 게임 스트리밍 및 방송에 활용됩니다.
3. **온라인 교육**:
- 비디오 강의 및 원격 학습 플랫폼에서 채택.
4. **P2P 파일 전송**:
- 대용량 파일 전송 앱이나 서비스에서 WebRTC의 RTCDataChannel 사용.
---
### **WebRTC의 장점**
- **무료 및 오픈 소스**: 누구나 사용할 수 있고, 개발자 친화적입니다.
- **낮은 대기 시간**: 실시간 애플리케이션에 최적화된 기술.
- **다양한 플랫폼 지원**: 주요 웹 브라우저(Chrome, Firefox, Edge 등) 및 모바일에서도 동작.
---
### **WebRTC의 단점**
- **네트워크 환경 의존성**: P2P 연결 특성상 방화벽, NAT(Network Address Translation) 환경에 따라 연결이 어려울 수 있음.
- **보안 이슈**: 실시간 통신 과정에서 암호화 및 인증 메커니즘을 철저히 설계해야 함.
- **복잡한 설정**: P2P 연결 관리, ICE 서버 설정 등 초기 구현이 다소 까다로울 수 있음.
---
### **동작 구조 요약**
1. 브라우저가 미디어 데이터를 가져옴 (GetUserMedia).
2. P2P 연결 설정 (RTCPeerConnection).
3. 연결을 통해 데이터 송수신 (RTCDataChannel).
WebRTC는 강력한 실시간 통신 도구로 다양한 실시간 애플리케이션 개발에 사용됩니다.