라떼군 이야기
온라인 스트리밍 교육 서비스 구축 안
AWS
플랫폼을 사용하고 PHP
를 기반으로 하는 온라인 스트리밍 교육 서비스 구축을 제안하기 위해 만든 기초 자료입니다.
전체 시스템 구성 (개요)
- Firewall: 내부 네트워크와 외부 네트워크 사이 불법 적인 사용자 접근을 차단하고 시스템을 보호하기 위한 장치 입니다.
- Load Balancing: 대량의 트래픽을 효과적으로 관리하기 위하 부하를 분산하기 위한 장치 입니다. 컴퓨팅 자원을 나누어 사용하게 함으로써 자원을 최대한 활용하고 응답 시간을 최적화 할 수 있습니다.
- EC2: 가상 서버 인스턴스 입니다. 사용량이 적을 경우 작은 개수로 운영할 수 있고 사용량이 많아질 경우 인스턴스 개수를 늘려가며 사용할 수 있습니다.
SPOF
(single point of failure)1를 피하고Failover
를 구현하는 안정적인 서비스 운영을 위해 최소 2개 이상의 인스턴스로 운영할 것을 추천합니다. - 서비스:
Nginx
,PHP
를 이용해서 구성할 예정입니다. 고성능의 웹 서버인Nginx
와 동적 웹페이지를 만들기 위한 언어인PHP
를 이용해서 개발될 예정이며, 이 구성은EC2
인스턴스 마다 각각 개별적으로 설치됩니다. - RDS: 데이터베이스(
MariaDB
)는AWS RDS
를 이용합니다. (optional)Master
와Slave
로 구성하여 성능 최적화 하고 장애 상황에 대비할 수 있습니다. 비용과 서비스 규모에 따라Master
로만 구성할 수도 있습니다. - S3: 아마존에서 제공하는 온라인 스토리지 서비스 입니다.
CDN
(Contents Delivery Network)을 이용해 빠른 전송 속도로 파일을 전송할 수 있습니다. 원본 영상 파일과 인코딩 된 영상파일, 썸네일 들이 S3를 이용해 관리하여 사용자에게 빠른 응답을 줄 수 있습니다. - Lambda:
AWS
에서 제공하는 서버리스 컴퓨팅 플랫폼 입니다. 물리적인 서버 없이 동작할 수 있다는 점과 사용량에 따라 컴퓨팅 리소스를 자동으로 증가 및 축소할 수 있는(Auto Scaling
) 장점이 있습니다. 이 기능을 이용해Transcoder
와 연결하고 동영상 파일의 트랜스 코딩 및 정보 업데이트 작업을 진행할 예정입니다. 부하가 큰 동영상 트랜스 코딩은 상시 리소스를 할당할 필요가 없기 때문에 사용량에 따라 서비스 규모에 따라 자동으로 운영하는 것은 비용적인 측면에서도 장점이 있습니다. - Webex:
Webex
2의 외부 API를 이용해 회의 생성, 정보, 회의 삭제 상태가 구축되는 온라인 교육 시스템과 연동됩니다.3 서비스 상황에 따라 라이브 스트리밍이 필요한 경우 사용됩니다.
비디오 트랜스 코딩
전체 시스템 구성 중 Lambda
를 이용한 비디오 트랜스 코딩에 관한 내용입니다.
트랜스 코딩이 필요한 이유
여러 소스에서 촬영한 영상은 코덱의 문제로 스마트폰이나 PC에서 재생이 되지 않을 수 있습니다. 재생하는 기기가 모든 코덱을 포함하고 있을 수 없는 것이 그 이유인데, 트랜스 코딩 작업을 통해 가장 범용적인 포맷으로 동영상을 변환할 뿐만 아니라 재생 환경에 최적화 된 영상을 스트리밍으로 제공할 수 있습니다.
- 온라인 교육 서비스에 업로드된 영상은
S3
에 저장됩니다. S3
에 저장되는 이벤트를 트리거로Lambda
를 실행합니다.Transcode
관련Lambda
를 실행합니다.Lambda
는Transcoder
서비스를 실행하고- 비디오 트랜스 코딩 작업을 시작합니다.
- 비디오 트랜스 코딩이 완료되면 인코딩된 파일을 S3에 저장합니다.
AWS Notification Service
를 통해서- 알림을 전달합니다.
Notification Service
는 또 다른Lambda
에 결과를 통지합니다.- 권한 수정 기능이 구현된
Lambda
에서는 S3
에 올라온 인코딩 파일의 권한을 수정합니다.- 썸네일 업데이트
Lambda
와 - 메타정보 업데이트
Lambda
를 통해 S3
에 영상의 썸네일을 업데이트하고S3
에 메타 정보를 업데이트합니다.- 마지막으로 인코딩이 완료됨을 알리는
Lambda
에서는 - 온라인 교육 시스템의 데이터베이스에 해당 영상의 인코딩 정보를 업데이트하고 서비스 될 수 있도록 설정합니다.