기존 로직 : music 정보가 DB에 업로드 될 때 인코딩이 일어남
변경될 로직 : music이 Object Storage에 업로드 될 때 인코딩이 일어나고,
m3u8 파일을 url로 반환
** 기존 로직을 고수한 이유: 사용자가 빈번히 새로운 music 정보를 업로드 하게 된다면, 업로드 할 때마다 무거운 인코딩 과정이 발생하여 부하가 생길 것 같음
⇒ 사용자가 요청을 정해진 시간 안에 정해진 횟수로 보낼 수 있도록 제한하자!
⇒ 사용자 관점에서 음악 인코딩 과정이 좀 걸리는데, 완료 버튼을 누른 뒤에 인코딩을 하면 기다려야 하지만 업로드 할 때 인코딩을 하면 다른 음악 정보를 입력하는 등의 다른 활동이 가능해짐
멘토님!
저희가 cloud functions에서 음악 인코딩을 성공했습니다!
그런데 사용자가 업로드 요청을 보낸 후 인코딩이 완료되기 전까지 사용자에게 그 음악이 보이지 않게 하기 위해서(사용자가 음악 실행 못하도록) 인코딩 완료 시점까지 DB insert 를 늦추는 방법으로 생각을 해봤습니다.
다만 인코딩을 완료한 후 Object Storage(=S3)에 저장되는 시점을 서버에서 알 수 없어, 인코딩된 파일의 url(https://kr.object.ncloudstorage.com/catchy-tape-bucket2/music/13607fa7-64c9-4dae-9e0a-f9a38959ba49/music.m3u8
)을 클라이언트에게 바로 전달해주어도 인코딩이 완료된 url인지 식별이 불가능하여 위의 그림과 같은 로직을 구상하게 되었습니다.
그러나 제가 생각했을 때는 Cloud Functions(=Lambda) 자체에서 서버에게 API를 호출해주는게 어색하다는 느낌이 들었습니다. 이 방식이 괜찮을까요? 혹시 다른 좋은 방식이 있을까요?