https://growth-coder.tistory.com/257
이전 포스팅에서 기본적인 WebRTC, KMS, OpenVidu의 개념에 대해서 알아보았다.
이번에는 OpenVidu를 사용해서 화상 회의 웹 사이트를 배포해보려고 한다.
그 전에 OpenVidu 애플리케이션 아키텍처에 대해서 알아보자.
OpenVidu 아키텍처
아래 링크의 공식 문서를 살펴보면 OpenVidu 아키텍처에 대해서 자세하게 설명되어 있다.
https://docs.openvidu.io/en/2.29.0/developing-your-video-app/
자세한 내용은 위 문서를 참고하고 간단하게 정리해보자.
1. OpenVidu deployment
실시간으로 오디오, 비디오 스트리밍에 필요한 모든 인프라를 제공한다.
이전 포스팅에서 WebRTC, KMS에 대해서 알아볼 때 실시간으로 미디어 스트리밍을 하기 위해서 여러 제한이 있다고 했었다.
그래서 signaling server, stun server, turn server, media server 등등을 추가로 구축해야 원활한 미디어 스트리밍이 가능하다.
이를 직접 구축해도 되지만 OpenVidu를 사용하면 필요한 모든 것들을 구축해준다.
위 아키텍처에서 OpenVidu deployment가 이를 담당한다.
2. application server
OpenVidu를 배포했다면 애플리케이션 서버에서 SDK 또는 REST API를 통해서 이를 사용할 수 있다.
SDK 또는 REST API를 통해서 세션을 생성하고 이 세션에 참가할 유저만큼 커넥션을 생성한다.
그리고 세션에 연결할 수 있도록 토큰을 클라이언트에게 준다.
3. application client
클라이언트는 토큰을 openvidu-browser.js를 사용해서 세션에 연결하고 stream을 게시할 수 있다.
이제 OpenVidu를 배포해보자.
OpenVidu 배포
OpenVidu를 배포하기 위해서는 docker, docker-compose, SSL/TLS 인증서에 대한 개념을 이해하고 오는 것을 추천한다.
(몰라도 아래 과정을 따라한다면 배포 할 수는 있긴 하다.)
<docker 설명>
https://growth-coder.tistory.com/216
<docker-compose 설명>
https://growth-coder.tistory.com/230
<https 설명>
https://growth-coder.tistory.com/261
EC2 인스턴스는 이미 실행 중이라는 가정 하에 진행한다.
AMI는 Amazon Linux 2023을 사용하여 만들었다. (패키지 관리 명령어 yum 사용)
먼저 docker와 docker-compose를 설치해야 한다.
1. 루트 권한 획득
sudo su
2. docker 설치
yum install docker
3. docker-compose 설치
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
4. docker-compose 실행 권한 주기
chmod +x /usr/local/bin/docker-compose
5. docker 실행
service docker start
openvidu를 배포해보자.
1. /opt 디렉토리로 이동
cd /opt
2. 스크립트 실행
curl https://s3-eu-west-1.amazonaws.com/aws.openvidu.io/install_openvidu_latest.sh | bash
3. openvidu 디렉토리 이동
cd openvidu
4. .env 파일 편집
vi .env
설정 파일인 .env 파일을 편집하기에 앞서 유효한 도메인 혹은 public ip 주소(aws 기준 탄력적 ip 주소)이 필요하다.
도메인이 없다면 탄력적 ip 주소를 사용하고 도메인이 있다면 도메인을 사용하자.
나는 옛날에 사용하고 남은 도메인이 있어서 도메인을 사용했다.
텍스트 에디터로 .env 파일을 편집하자.
모든 준비가 끝났고 ./openvidu start 명령어를 작성하여 실행해보자.
도메인 이름으로 접속해보자.
댓글