본 내용은 노마드 코더님의 WebRTC? WebSockets? 5분 개념 정리! 강의를 토대로 작성하였습니다.
1. http
http란
- 브라우저와 서버가 소통하는 방식
- 인터넷 데이터 교환에서 필수 요소
- 업로드, 다운로드, 이미지, 문서
- 인터넷에서 오가는 모든 것이 http로 이루어짐
작동원리
- 브라우저가 서버에게 http request(요청)을 보냄
- 서버는 해당 request를 보고 브라우저가 정보를 요구하는 것을 확인
- 서버가 http response를 브라우저에게 보냄
http의 특징
- 서버가 브라우저에게 데이터를 보낼 수 있는 것은 브라우저가 요청을 했을 때만 가능
- 서버가 브라우저의 요청에 응답하고 나면, 브라우저 - 서버간 통신은 끝남
- 한번 응답이 끝나고 나면, 브라우저에 더이상 데이터를 보낼 수 없음
- 채팅과 같은 지속적인 요청-응답이 필요한 애플리케이션에 사용하기에는 부적합
2. WebSocket
WebSocket이란
- 프로토콜의 하나
- 연결이 Open or Close된 여부를 봄
- 양방향 통신
작동원리
- 브라우저가 웹소켓을 이용해 서버와 연결
- 브라우저 - 서버간 통신은 열려있을 것임(open)
- 해당 통신은 계속 열려 있음
- 일종의 전화 통화와 같은 상태
WebSocket의 특징
- 양방향 통신이므로 열려있는 상태에서 데이터를 주고받을 수 있음
- 서버가 브라우저의 Request를 기다릴 필요가 없음
- 서버는 업데이트를 원하는 때에 보낼 수 있음
- 채팅방, 주식거래앱과 같은 리얼타임 경험을 위한 애플리케이션을 만들 수 있음
- 모든 통신을 추적하기 위해 서버의 메모리 파워가 중요
- 유저가 많으면 많을 수록 더 많은 메모리가 필요(비용 증가)
- 또한, 사용자들에게 데이터를 포워딩하기 위해 서버를 빠르게 유지해야 함
- 서버에 수많은 연결이 오고 있다면, 딜레이가 발생할 수 있음
- 서버가 꺼진다면 서비스도 사용할 수 없음
채팅방 예시
- 채팅방에 입장한 사용자들은 모두 같은 웹소켓 서버에 입장한 상태
- 사용자가 웹소켓 서버에 메시지를 보내면, 서버는 해당 메시지를 채팅방 사람들에게 보여줌
3. WebRTC
WebRTC란?
- Web Real Time Communication
- 브라우저 - 서버를 연결하는 WebSocket과 달리 사용자들의 브라우저간 연결
- P2P 커뮤니케이션
WebRTC 특징
- 데이터가 서버를 통해서 전달 되는 것이 아닌 유저간 바로 전달이 됨
- 텍스트 뿐만 아니라, 영상, 오디오 등도 실시간으로 주고 받을 수 있음
- 서버를 이용하는 것보다 빠름
WebRTC 문제점
- 확장성에 제약이 있음
- 많은 사람들이 사용하기에는 한계
- ex) 수많은 사람이 접속하고 있는 비디오 채팅방의 경우 각 사용자들의 비디오를 다운받고 내 비디오를 다른 사람에게도 업로드 해줘야 함
Reference
[노마드 코더] WebRTC? WebSockets? 5분 개념정리!