AWS 플랫폼을 사용하고 PHP를 기반으로 하는 온라인 스트리밍 교육 서비스 구축을 제안하기 위해 만든 기초 자료입니다.

전체 시스템 구성 (개요)

1
1
Browser
Browser
Firewall
Firewall
Elastic Load Balancing
Elastic...
EC2
EC2
EC2
EC2
EC2
...
EC2...
nginx
nginx
Amazon RDS
Amazon...
PHP
PHP
PHP FastCGI
Process Manager
PHP Fast...
Slave
Slave
Master
Master
2
2
3
3
4
4
5
5
S3
S3
Lambda
Lambda
Elastic Transcoder
Elastic...
WebEX API
WebEX API
6
6
7
7
8
8
Viewer does not support full SVG 1.1
  1. Firewall: 내부 네트워크와 외부 네트워크 사이 불법 적인 사용자 접근을 차단하고 시스템을 보호하기 위한 장치 입니다.
  2. Load Balancing: 대량의 트래픽을 효과적으로 관리하기 위하 부하를 분산하기 위한 장치 입니다. 컴퓨팅 자원을 나누어 사용하게 함으로써 자원을 최대한 활용하고 응답 시간을 최적화 할 수 있습니다.
  3. EC2: 가상 서버 인스턴스 입니다. 사용량이 적을 경우 작은 개수로 운영할 수 있고 사용량이 많아질 경우 인스턴스 개수를 늘려가며 사용할 수 있습니다. SPOF(single point of failure)1를 피하고 Failover를 구현하는 안정적인 서비스 운영을 위해 최소 2개 이상의 인스턴스로 운영할 것을 추천합니다.
  4. 서비스: Nginx, PHP 를 이용해서 구성할 예정입니다. 고성능의 웹 서버인 Nginx와 동적 웹페이지를 만들기 위한 언어인 PHP를 이용해서 개발될 예정이며, 이 구성은 EC2 인스턴스 마다 각각 개별적으로 설치됩니다.
  5. RDS: 데이터베이스(MariaDB)는 AWS RDS를 이용합니다. (optional) MasterSlave로 구성하여 성능 최적화 하고 장애 상황에 대비할 수 있습니다. 비용과 서비스 규모에 따라 Master로만 구성할 수도 있습니다.
  6. S3: 아마존에서 제공하는 온라인 스토리지 서비스 입니다. CDN(Contents Delivery Network)을 이용해 빠른 전송 속도로 파일을 전송할 수 있습니다. 원본 영상 파일과 인코딩 된 영상파일, 썸네일 들이 S3를 이용해 관리하여 사용자에게 빠른 응답을 줄 수 있습니다.
  7. Lambda: AWS에서 제공하는 서버리스 컴퓨팅 플랫폼 입니다. 물리적인 서버 없이 동작할 수 있다는 점과 사용량에 따라 컴퓨팅 리소스를 자동으로 증가 및 축소할 수 있는(Auto Scaling) 장점이 있습니다. 이 기능을 이용해 Transcoder와 연결하고 동영상 파일의 트랜스 코딩 및 정보 업데이트 작업을 진행할 예정입니다. 부하가 큰 동영상 트랜스 코딩은 상시 리소스를 할당할 필요가 없기 때문에 사용량에 따라 서비스 규모에 따라 자동으로 운영하는 것은 비용적인 측면에서도 장점이 있습니다.
  8. Webex: Webex2의 외부 API를 이용해 회의 생성, 정보, 회의 삭제 상태가 구축되는 온라인 교육 시스템과 연동됩니다.3 서비스 상황에 따라 라이브 스트리밍이 필요한 경우 사용됩니다.

비디오 트랜스 코딩

전체 시스템 구성 중 Lambda를 이용한 비디오 트랜스 코딩에 관한 내용입니다.

트랜스 코딩이 필요한 이유

여러 소스에서 촬영한 영상은 코덱의 문제로 스마트폰이나 PC에서 재생이 되지 않을 수 있습니다. 재생하는 기기가 모든 코덱을 포함하고 있을 수 없는 것이 그 이유인데, 트랜스 코딩 작업을 통해 가장 범용적인 포맷으로 동영상을 변환할 뿐만 아니라 재생 환경에 최적화 된 영상을 스트리밍으로 제공할 수 있습니다.

2. Lambda 실행
2. Lambda 실행
S3
1. 파일 업로드
S3...
4. 작업 실행
4. 작업 실행
Lambda
3. transcode 작업 실행
Lambda...
6. 업로드
6. 업로드
Elastic Transcoder
5. 비디오 트랜스 코딩
Elastic...
8. 알림 트리거
8. 알림 트리거
S3
7. 파일 저장
S3...
알림 트리거
알림 트리거
알림 트리거
알림 트리거
9. 알림 배포
9. 알림 배포
알림 트리거
알림 트리거
Notification
Notificat...
Lambda
10. 권한 수정
Lambda...
Lambda
12. 썸네일 업데이트
13. 메타정보 업데이트
Lambda...
S3
11. 파일 권한 업데이트
S3...
S3
14. 썸네일 업데이트
S3...
S3
15. 메타정보 업데이트
S3...
Amazon RDS
17. 인코딩 파일 및
썸네일 정보 업데이트
Amazon...
Lambda
16. 인코딩 완료
정보 업데이트
Lambda...
Viewer does not support full SVG 1.1
  1. 온라인 교육 서비스에 업로드된 영상은 S3에 저장됩니다.
  2. S3에 저장되는 이벤트를 트리거로 Lambda를 실행합니다.
  3. Transcode 관련 Lambda를 실행합니다.
  4. LambdaTranscoder서비스를 실행하고
  5. 비디오 트랜스 코딩 작업을 시작합니다.
  6. 비디오 트랜스 코딩이 완료되면 인코딩된 파일을 S3에 저장합니다.
  7. AWS Notification Service를 통해서
  8. 알림을 전달합니다.
  9. Notification Service는 또 다른 Lambda에 결과를 통지합니다.
  10. 권한 수정 기능이 구현된 Lambda에서는
  11. S3에 올라온 인코딩 파일의 권한을 수정합니다.
  12. 썸네일 업데이트 Lambda
  13. 메타정보 업데이트 Lambda를 통해
  14. S3에 영상의 썸네일을 업데이트하고
  15. S3에 메타 정보를 업데이트합니다.
  16. 마지막으로 인코딩이 완료됨을 알리는 Lambda에서는
  17. 온라인 교육 시스템의 데이터베이스에 해당 영상의 인코딩 정보를 업데이트하고 서비스 될 수 있도록 설정합니다.

References