Foundry
동영상 스트리밍 설계
심화
핵심

인코딩을 어떤 순서로 하나

하나라도 재생되면 공개할 수 있다

화질 5단계를 만드는 일은 오래 걸립니다. 10분 영상을 다섯 화질로 만드는 것은 원본을 다섯 번 훑는 것과 같습니다. 그 순서를 정하는 것이 이 절입니다.

하나라도 되면 공개한다

낮은 화질을 먼저 만들어 공개하고 높은 화질은 뒤이어 붙인다 한 화질을 다 만든 뒤 다음 화질 낮은 화질 완료 여기서 공개한다 높은 화질은 뒤이어 붙는다 모든 화질을 다 만든 뒤 공개하면 올린 사람이 오래 기다린다 하나라도 재생되면 공개할 수 있다 조각 단위로 나눠 만들면 여러 대가 함께 만든다 한 조각이 실패하면 그 조각만 다시 만든다

모든 화질이 끝날 때까지 기다리면 올린 사람이 오래 기다립니다. 그런데 재생에 필요한 것은 화질 하나입니다.

그래서 낮은 화질을 먼저 만들고 그것이 끝나면 공개합니다. 높은 화질은 뒤이어 붙습니다. 목록 파일에 있는 화질만 시청자가 고를 수 있으므로, 목록을 갱신하는 것으로 화질이 추가됩니다.

낮은 화질을 먼저 하는 이유가 둘입니다.

이유내용
빨리 끝난다만들 데이터가 적다
가장 필요하다느린 네트워크의 마지막 방어선이다

조각 단위로 나눠 만든다

인코딩을 영상 단위로 하면 한 영상이 한 대를 오래 붙잡습니다. 조각 단위로 나누면 여러 대가 한 영상을 함께 만듭니다.

조각 240개를 여러 대에 나눠 준다
다 만들어지면 순서대로 이어 붙인다

이것이 가능한 이유는 앞 절에서 조각이 스스로 재생 가능하게 만들어졌기 때문입니다. 앞 조각을 참조하지 않으므로 순서와 무관하게 만들 수 있습니다.

실패 단위도 함께 작아집니다. 한 조각이 실패하면 그 조각만 다시 만듭니다. 영상 단위였다면 10분을 처음부터 다시 해야 합니다.

무엇을 먼저 처리하나

인코딩 대기줄에 여러 영상이 있으면 순서를 정해야 합니다.

기준판단
짧은 영상 먼저짧은 것이 뒤에서 오래 기다리는 것을 막는다
먼저 올린 것 먼저공평하지만 긴 영상이 줄을 막는다
인기 계정 먼저조회가 많을 것이 빨리 공개된다

긴 영상 하나가 줄을 막는 것이 실제로 가장 흔한 문제입니다. 대기줄을 길이에 따라 나눠 두면, 짧은 영상은 긴 영상을 기다리지 않습니다. 알림 시스템에서 급한 줄을 따로 둔 것과 같은 구조입니다.

원본을 언제까지 두나

인코딩이 끝나면 원본이 필요할까요. 필요합니다.

새 화질을 추가할 때
인코딩 방식을 바꿔 다시 만들 때
잘못 만들어진 것을 다시 만들 때

원본은 가장 큰 파일인데 거의 읽히지 않습니다. 자주 읽지 않는 것을 위한 값싼 저장소로 옮기는 것이 이 성질에 맞습니다. 꺼내는 데 시간이 걸려도 됩니다.

면접에서 이렇게 나옵니다

Q.모든 화질이 완성될 때까지 공개를 기다려야 합니까

아닙니다. 하나라도 재생되면 공개할 수 있습니다.

재생에 필요한 것은 화질 하나입니다. 낮은 화질을 먼저 만들고 그것이 끝나면 공개하고, 높은 화질은 뒤이어 붙입니다.

낮은 화질을 먼저 하는 이유내용
빨리 끝난다만들 데이터가 적다
가장 필요하다느린 네트워크의 마지막 방어선이다

목록 파일에 있는 화질만 고를 수 있으므로 목록 갱신이 곧 화질 추가입니다.

흔한 실수: 공개 시점을 정하지 않고 전부 끝난 뒤로 두는 것. 올린 사람은 자기 영상이 언제 보일지 몰라 계속 확인하게 되고, 그 조회가 또 부하가 됩니다.

Q.인코딩을 조각 단위로 나눠 만드는 이점이 무엇입니까

여러 대가 한 영상을 함께 만들고, 실패 단위가 작아집니다.

조각 240개를 여러 대에 나눠 준다
다 만들어지면 순서대로 이어 붙인다

한 조각이 실패하면 그 조각만 다시 만듭니다. 영상 단위였다면 10분을 처음부터 다시 해야 합니다.

이것이 가능한 이유는 조각이 스스로 재생 가능하게 만들어졌기 때문입니다. 앞 조각을 참조하지 않으므로 순서와 무관하게 만들 수 있습니다.

흔한 실수: 조각을 나눠 만들면서 화질 설정이 조각마다 달라지는 것. 이어 붙였을 때 화면이 튑니다. 설정을 한 곳에서 정해 모든 조각에 같게 넘겨야 합니다.

Q.인코딩 대기줄에서 무엇을 먼저 처리하시겠습니까

대기줄을 영상 길이에 따라 나눕니다.

기준판단
짧은 영상 먼저짧은 것이 오래 기다리는 것을 막는다
먼저 올린 것 먼저공평하지만 긴 영상이 줄을 막는다

긴 영상 하나가 줄을 막는 것이 가장 흔한 문제입니다. 줄을 나눠 두면 짧은 영상이 긴 영상을 기다리지 않습니다.

알림 시스템에서 급한 줄을 따로 둔 것과 같은 구조입니다.

흔한 실수: 우선순위를 점수로 계산해 한 줄에서 뽑는 것. 줄이 하나면 앞에 있는 긴 작업이 자원을 차지하는 동안 뒤의 짧은 작업은 여전히 기다립니다. 줄을 나누는 것과 순서를 정하는 것은 다릅니다.

Q.인코딩이 끝난 뒤 원본을 어떻게 하시겠습니까

값싼 저장소로 옮겨 보관합니다.

원본이 필요한 경우가 있습니다.

새 화질을 추가할 때
인코딩 방식을 바꿔 다시 만들 때
잘못 만들어진 것을 다시 만들 때

원본은 가장 큰 파일인데 거의 읽히지 않습니다. 자주 읽지 않는 것을 위한 값싼 저장소가 이 성질에 맞습니다. 꺼내는 데 시간이 걸려도 됩니다.

흔한 실수: 저장을 아끼려고 원본을 지우는 것. 인코딩 설정을 한 번 바꾸고 싶어지는 순간 이미 올라온 모든 영상을 고칠 수 없게 됩니다. 되돌릴 수 없는 절약입니다.

먼저 스스로 답해보고 아래 답변과 견줘보세요. 막히는 부분은 문제로 확인할 수 있어요.

읽었으면 문제로 확인해보세요

동영상 스트리밍 설계 문제를 풀면 틀린 문제가 자동으로 노트에 쌓입니다. 가입 없이 5문제를 먼저 풀어볼 수도 있어요.