WebRTC? WebSockets?

장서연·2021년 9월 9일
0

웹소켓을 이해하려면 http를 먼저 알아야 한다.
브라우저와 서버는 http를 이용해서 소통할 수 있다. 이는 인터넷 데이터 교환에서 필수 요소라 할 수 있다.

업로드, 다운로드, 이미지, 문서... 인터넷에서 오가는 그 무엇이든, 모두 http 덕분에 오가고 있는 것이다.

http의 작동원리는 심플하다. 예를들면, 유튜브. 브라우저는 유튜브 서버에게 http request 를 보낸다.

유튜브 서버는 해당 request를 보고, 그에 맞는 http response를 브라우저에게 보낼 것이다. 페이지를 구성하는 모든 자료들을 몽땅 담아서!!! 그게 다임.

여기서 기억해야할 것은, 서버가 브라우저의 요청에 응답하고 나면, 브라우저-서버 간 통신은 끝나게 된다. 즉, 한번 응답이 끝나고 나면 브라우저에 더이상 무엇도 보낼 수 없다는 뜻이다.

여기서 핵심은, 서버가 브라우저에게 데이터를 보낼 수 있는 건 오직 브라우저가 요청을 했을 때 뿐이다.
서버가 그냥 브라우저에게 뭘 보낼수가 없다. 먼저 요청이 없다면...

만약 오직 http 를 이용하여 채팅을 만든다면 새로운 메시지가 왔는지 보려면 뭐 2초마다 새로고침을...해달라고 요청을 해야할 것이다. 매우 불-편

바로 이러한 문제점 때문에 웹소켓이 생겨난 것이다.

웹소켓 프로토콜은 http와 많이 다르다. request-response가 있는 것이 아니라,커넥션이 open-close 된 여부이다.

즉, 브라우저가 웹소켓을 이용해 서버와 연결을 하면, 브라우저-서버간 통신은 열려있을 것이고(open)

해당 통신은 원하는 순간까지 계속 열려있을 것이다.
웹소켓은 브라우저, 서버 둘 다 메시지를 보내고 받을 수 있다. 통신이 열려있는 동안엔 자유롭게!!!
웹소켓에선, 서버는 request 를 기다릴 필요도 없다
웹소켓은 채팅, 주식거래앱, 게임처럼 리얼타임 경험을 위해 쓴다.

사실, 채팅방에 입장하면 사실 친구들과 연결된건 아니다.

사실은 모두 다 같은 웹소켓 서버에 입장한 것이다.

내가 웹소켓 서버에 메시지를 보내면,

웹소켓서버는 해당 메시지를 채팅방 사람들에게 보내주는 것이다.

그런데 문제가 있는게, 웹소켓에서는 서버의 '메모리 파워'가 중요하다. 모든 통신을 추적하기 위함이다. 유저가 많을수록, 더많은 메모리가 필요하고, 서버에 돈을 더 써야함을 의미한다. 또한 서버도 빠르게 해야하는데, 메시지를 받으면 다르사람에게 이걸 포워딩 해야하니까! 거의 리얼타임으로, 엄청 빠르게!

하지만 서버에 이미 수많은 커넥션이 오고있다면, 그렇다면 딜레이가 발생할 수 있고 이는 좋지 못한 유저경험을 준다. 서버가 내려가면, 누구도 대화할 수 없다는 문제도 있고.

그렇다면, 브라우저를 서버에 연결하는 것이 아니라 그냥 브라우저끼리 연결하면 어떻게 될까?

바로 이때 WebRTC 가 필요한 것이다!!!


webrtc 는 브라우저끼리 연결되게 도와준다.

메시지를 보내면,

이는 서버를 통해서 전달되는 것이 아니라

너에게 바로 전달이 되게.
peer to peer 커뮤니케이션, 즉 p2p 커뮤니케이션인 것이다!!!

여기에서 그치지 않고. 단순 텍스트 뿐만 아니라

영상, 오디오 등도 다 주고받을 수 있다.

덕분에 영상, 오디오, 채팅, 모두 리얼타임으로 할 수 있는 것이다. 이 모든걸 걍 브라우저에서 할 수 있고, 이 모든 자료들을 서버를 통해서 전달하지 않는다는 것! 당연히, 서버를 이용하는 것보다 더 빠르겠지! 중개자가 없으니까! 그냥 나의 브라우저에 직접적으로 연결하는 것이니까.

물론 WebRTC에도 문제점들이 있다. 예를들면 비디오 채팅방에 엄청 많은 사람들, 1천명이 있다면 너의 컴퓨터는 999개비디오, 오디오를 다운받아야 한다.

또한 너의 비디오, 오디오를 999명에게 업로드 해줘야한다는 소리가 된다.

즉 WebRTC의 확장성에는 제약이 있다.

하지만 그럼에도 불구하고, 브라우저들끼리 직접 연결이 가능하다는 것, 그 자체가 정말 놀라운 일이다!

보다시피, 웹소켓, WebRTC는 정말 무궁무진한 가능성을 열어준다. 리얼타임 서비스를 만드는것을 쉽고, 편리하게 만들어주었다!!!

0개의 댓글