탈잉에서 진행한 누구나VOD 프로젝트에서는 말 그대로 누구나 VOD(콘텐츠 영상)를 등록할 수 있어야 했습니다. 튜터가 동영상을 등록하면 수강생은 웹의 미디어 플레이어로 이를 시청합니다.
이 과정이 진행되려면 카테노이드 사의 콜러스라는 외부 시스템을 사용해야 합니다.
즉, 탈잉 웹에서 동영상을 업로드할 때 콜러스 측 미디어 서버에도 영상을 업로드 해야 하며, 업로드된 영상을 플레이어에서 재생할 수 있도록 미디어 식별값(Key)을 받아오는 작업이 필요했습니다.
1차 업로드: 클라이언트 → S3
2차 업로드: S3 → 람다 → 내부 API → 외부 API → 내부 API
클라이언트에서 동영상 업로드 요청 시 서버는 S3 버킷에 파일을 직접 업로드할 수 있는 S3 presignedURL을 제공한다.
S3 presingedURL을 통해 클라이언트에서 S3 버킷으로 동영상 파일을 업로드한다.
S3에 파일이 업로드되면 putObject 트리거에 의해 람다 함수가 실행된다.
람다 함수는 탈잉웹 서버의 콜러스 미디어 업로드 API를 비동기로 호출하고 끝난다.
람다 함수에 의해 실행된 API는 S3에 업로드된 파일을 내려받아 콜러스 미디어 서버로 업로드를 진행한다. 업로드가 완료(또는 실패)되면 업로드 결과에 대한 응답을 받아 저장한다.
콜러스 서버에 영상이 업로드되면 자체적으로 트랜스코딩을 진행한다. 트랜스 코딩이 완료되면 콜러스 측에서 콜백으로 탈잉웹 서버 API를 호출한다.
호출된 탈잉웹 API는 트랜스코딩 결과에 맞게 미디어 업로드 상태를 갱신하고, 미디어키를 저장한다.