비디오 데이터 저장과 조회 관련 로직에 대한 자세한 설명은 아래 블로그를 참고하세요.
곰터뷰와 IDrive e2 (2) - IDrive e2를 사용한 비디오 저장/조회 로직
BE는 현재(2024.01) 비디오 촬영과 비디오 인코딩과 관련한 작업에는 전혀 관여하지 않고 있습니다. 따라서 BE에서 구현했고, 또 앞으로도 수정 및 신규 구현할 기능들은 비디오의 저장과 조회에 관련되어 있을 것입니다. (서버를 스케일링-업하여 인코딩을 서버에서 진행하지 않는다면)
현재 서비스에서 비디오와 관련된 데이터들을 저장하는 스토리지는 3개입니다.
비디오의 소유자(memberId), 비디오의 이름, 비디오와 관련된 문제(questionId), 비디오의 URL, 비디오의 공개 여부 등을 Video 테이블에 저장하였습니다.
IDrive라는 이름 자체가 생소할 수 있겠지만, AWS S3와 유사한 Object Storage 서비스라고 생각하시면 됩니다. 즉, 실제 비디오 영상(.mp4)이 저장되는 스토리지입니다.
클라이언트에서 촬영한 영상을 서버로 이동시킨 후 Object Storage에 저장하는 것이 가장 보안적으로 우수한 방법이지만, 네트워크 비용이나 서버 리소스 등을 고려하였을 때 클라이언트에서 직접 업로드 하는 것이 합리적이라고 판단하였습니다.
클라이언트에서 업로드하는 방식을 사용하되 API 서버에서 발급해주는 pre-signed URL을 사용해서만 Object Storage에 업로드할 수 있게 하는, 권한을 부여하는 방식으로 구현하여 보안을 조금이나마 강화하였습니다.
※ Pre-Signed URL이란?
In-Memory DB인 Redis에 {해시값(uuid) : IDrive에 저장된 비디오 url}의 형태로 데이터들을 저장하였습니다.
이를 사용하여 공개된 비디오인지 상태를 체크하고 이에 대한 정보를 클라이언트에게 반환합니다.
현재 크게 2가지의 방식으로 조회 로직이 구현되어 있습니다. 하나는 자신의 비디오를 조회하는 경우이고 다른 하나는 공개된 타인의 비디오를 조회하는 경우입니다.