줌 화상채팅 프로그램을 작성하기 위해서는 먼저 프로그램 전체의 구조를 이해하고 있어야 한다. 실시간으로 채팅과 이미지, 동영상이 화상채팅에 참여한 peer들에게 공유되어야 한다. 이를 위해서 사용하는 API가 RTCPeerConnection이다. 여기서 createDataChannel() 메소드는 원격 peer들과 연결하여 어떤 종류의 데이터도 전송이 가능한 새로운 '채널'을 생성해준다. RTCPeerConnection을 이용하면 Socket.IO나 웹소켓을 사용할 필요없이 Peer들 간의 효율적인 데이터 전송이 가능해진다.
줌 프로그래밍 네트워크 설계 문제
약 30명 정도의 Peer가 참여하는 프로그래밍을 설계한다고 가정해보자. 첫번째 네트워크는 모든 peer들이 연결된 그물망 형태의 네트워크 구조다. 2명의 Peer에서는 문제가 없지만 한명이 더 참가하게 된다면 Peer들 사이에 커넥션인 기하급수적으로 증가하게 되고 서비스는 느려질 수 밖에 없다.
2명 정도가 참여하는 Peer to Peer 네트워크를 사용하기 힘든 다수의 참가자가 있는 상황이라면 SFU 네트워크 구조가 훨씬 유용하다. SFU는 Selective Forwarding Unit은 중앙식 네트워크의 일종으로 Peer들이 서버에 의존하고 있는 네트워크다. 한개의 Peer에서 전송받은 데이터를 서버에서는 압축과정을 거치게 되고, 다시 참여한 다른 Peer들에게 데이터를 뿌려주는 기능을 하게 된다.
줌 프로그래밍 기술 스택
Frontend
React
socket.io
typescript
Backend
Express
Node.js
MongoDB
SocketIO
WRTC
WebSocket
'Programming' 카테고리의 다른 글
스프링 부트 SpringBoot 웹 애플리케이션 개발 #3 CRUD 구현하기 (1) | 2022.03.31 |
---|---|
자바 JAVA 제네릭 Generic이란? (0) | 2022.03.31 |
스프링 부트 SpringBoot 웹 애플리케이션 개발 #2 백엔드 개발 (0) | 2022.03.29 |
SpringBoot 웹 애플리케이션 개발 #1 프로젝트 시작 (0) | 2022.03.28 |
자바 배열 선언 2차 배열 0으로 초기화 하는 방법 java.lang.NullPointerException (0) | 2022.03.22 |
Kotlin kotlin-android-extentions가 제거된 안드로이드 4.1 XML 객체 선택하는 방법 (0) | 2022.03.09 |
댓글