본문 바로가기

개발

6. WebRTC 성능 비교(P2P vs SFU) WebRTC 이론부터 구현까지 1. WebRTC 정리하기 2. WebRTC 구현 방식 3. WebRTC 구현하기(1:1 P2P) 4. WebRTC 구현하기(1:N P2P) 5. WebRTC 구현하기(1:N SFU) 6. WebRTC 성능 비교(P2P vs SFU) 1. 서론 지난 포스팅을 마지막으로 P2P(Mesh)와 SFU 방식의 1:N 화상회의 WebRTC 구현을 마쳤다. 구현의 마지막은 항상 성능 테스트 아닌가 해서 정말 간단하게 성능 테스트를 진행해봤다. 테스트를 위해서는 서버와 클라이언트가 독립적인 공간이 좋았겠지만 상황상 불가능했다는 것을 이해해줬으면 한다. 2. 성능 테스트(Performance Test) 2-1. 기기(Devices) device description CPU AMD Ryze.. 더보기
5. WebRTC 구현하기(1:N SFU) WebRTC 이론부터 구현까지 1. WebRTC 정리하기 2. WebRTC 구현 방식 3. WebRTC 구현하기(1:1 P2P) 4. WebRTC 구현하기(1:N P2P) 5. WebRTC 구현하기(1:N SFU) 6. WebRTC 성능 비교(P2P vs SFU) 1. 서론 지난 시간에는 WebRTC를 이용한 1:N P2P 통신에 대해서 포스팅했다. SFU 방식에 대해 포스팅을 할까 말까 고민을 했는 데 그래도 하는 게 낫지 않을까 싶어 이렇게 글을 남긴다. SFU는 Media Server의 한 종류로 그에 대한 설명은 여기를 눌러 지난 포스팅을 확인해보기 바란다. 미디어 서버는 Kurento와 mediasoup 등을 이용하여 상용화 단계에서 사용한다. 하지만 글쓴이는 이론을 바탕으로 미디어 서버, 그중.. 더보기
[Go] 구조체를 Class처럼 사용하기 1. 서론 최근 Go언어를 독학하기 시작했는 데 기존의 Javscript 생태계와는 다른 매력이 있는 것 같다. 나는 기존의 C++, JAVA, C# 등의 객체지향 컴파일 언어들을 이용해서 프로젝트를 진행해본 적이 있다. 이때 class 상속 및 멤버 함수 등을 이용해서 편리하게 코딩을 경험이 있다. Go언어에 대한 정보를 들었을 때 큰 특징 중 하나는 Go언어에는 class가 없다는 점이었다. class가 없는 Go언어에서 객체 지향만큼 편리하게 코딩을 할 수 있을까? 이 내용에 대해서 포스팅을 해보도록 하겠다. 2. Go언어에서 제시한 대안 Go언어에서는 내가 위에서 말한 부분의 대체제를 명확하게 제시한다. 바로 Receiver와 Embedding이다. 이 둘을 구조체에서 사용하게 되면 객체 지향의 .. 더보기
4. WebRTC 구현하기(1:N P2P) WebRTC 이론부터 구현까지 1. WebRTC 정리하기 2. WebRTC 구현 방식 3. WebRTC 구현하기(1:1 P2P) 4. WebRTC 구현하기(1:N P2P) 5. WebRTC 구현하기(1:N SFU) 6. WebRTC 성능 비교(P2P vs SFU) 1. 서론 지난 시간에는 WebRTC를 이용한 1:1 P2P 통신에 대해서 포스팅했다. 이번 포스팅은 저번 포스팅에서 설명한 개념은 안다고 가정하고 작성할 예정이기 때문에 혹시나 이 글을 먼저 본다면 이전 글을 다 읽고 오기를 추천한다. 1:N 연결이라고 해도 이전에 구현했던 1:1 연결과 같은 P2P 연결(Signaling 서버 형식)을 구현할 것이기 때문에 크게 다른 점은 없다. 동적으로 연결되고 종료되는 일련의 과정을 설명하는 데 집중하도.. 더보기
[Docker] Jenkins in Docker 1. 서론 jenkins는 배포 자동화를 구현할 때 인기 있는 CI/CD 툴이다. 글쓴이도 몇 달 전 AWS 배포 자동화를 구현할 때 jenkins를 써본 적이 있는 데, Docker in Docker로 jenkins를 구현해보면 어떨까 해서 진행해봤는 데 나름 괜찮은 것 같아 이 포스팅을 남긴다. 이 포스팅은 ubuntu18.04 버전에서 구현된 내용을 작성하는 것이므로 다른 os에 대해서는 조금씩 수정해서 쓰길 바란다. 2. 구현 방법 2-1. jenkins docker 실행 우선 jenkins의 docker image를 가져온다. 이후 8080 외부 포트로 젠킨스를 연동하고, volume을 공유한다. 여기서 docker.sock을 공유하는 이유는 도커 안에 있는 젠킨스가 내부 도커를 실행할 때 외부.. 더보기
3. WebRTC 구현하기(1:1 P2P) WebRTC 이론부터 구현까지 1. WebRTC 정리하기 2. WebRTC 구현 방식 3. WebRTC 구현하기(1:1 P2P) 4. WebRTC 구현하기(1:N P2P) 5. WebRTC 구현하기(1:N SFU) 6. WebRTC 성능 비교(P2P vs SFU) 1. 서론 이전까지의 포스트에서는 WebRTC가 어떤 기술을 사용하고 개발자가 상황에 따라 어떤 서버를 같이 개발해야 하는지에 대해 알아봤다. 드디어 기다리고 기다리던 구현의 시간이다. 오늘의 목표는 ReactJS와 Typescript를 이용한 Client 1:1(P2P) WebRTC 구현과 node.js를 이용한 Signaling Server를 구현하는 것이다. 만약 이 말이 이해가 잘 되지 않는다면 이전의 포스트를 보고 오기 바란다. 또한,.. 더보기
2. WebRTC 구현 방식 WebRTC 이론부터 구현까지 1. WebRTC 정리하기 2. WebRTC 구현 방식 3. WebRTC 구현하기(1:1 P2P) 4. WebRTC 구현하기(1:N P2P) 5. WebRTC 구현하기(1:N SFU) 6. WebRTC 성능 비교(P2P vs SFU) 1. 서론 저번 포스트에서 작성했듯이 WebRTC는 ICE, STUN, TURN, SDP로 작동된다. 이 서버들과 프로토콜로만 작동이 된다면 매우 간편하겠지만 현실은 그렇지 않다. P2P 연결을 완성시키기 위해서는 개발자가 peer간의 offer와 answer를 통한 session 정보를 중계해주는 서버를 만들어줘야한다. 하지만 P2P 연결로 3인, 4인 그리고 그 이상의 인원의 데이터 송수신을 지원하게 되면 클라이언트 측면에서의 과부하가 심하.. 더보기
1. WebRTC 정리하기 WebRTC 이론부터 구현까지 1. WebRTC 정리하기 2. WebRTC 구현 방식 3. WebRTC 구현하기(1:1 P2P) 4. WebRTC 구현하기(1:N P2P) 5. WebRTC 구현하기(1:N SFU) 6. WebRTC 성능 비교(P2P vs SFU) 1. WebRTC란 무엇일까? WebRTC(Web Real-Time Communication)란 웹 브라우저 환경 및 Android, IOS 애플리케이션에서도 사용 가능한 비디오, 음성 및 일반 데이터가 피어간에 실시간으로 전송되도록 지원하는 오픈 소스이다. 공개 웹 표준으로 구현되며 모든 주요 브라우저에서 일반 JavaScript API로 제공한다. (Apple, Google, Microsoft 및 Mozilla가 지원) 2. WebRTC의 .. 더보기