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

무엇을 미리 만들지 정한다

얼마나 보일지 모른 채로 값을 다 내지 않는다

앞 절에서 인코딩 순서를 정했습니다. 그런데 더 앞의 질문이 남아 있습니다. 모든 영상에 5단계를 다 만들어야 하나요.

조회는 극단적으로 몰린다

상위 일부 영상이 조회의 대부분을 차지하므로 전량 인코딩은 낭비가 된다 영상 수 보라색이 상위 1퍼센트 조회 수 그 1퍼센트가 조회의 90퍼센트를 만든다 모든 영상에 5화질을 미리 만들면 대부분이 한 번도 안 쓰인다 얼마나 보일지 모른 채로 만드는 값을 다 내지 않는다

상위 1퍼센트 영상이 조회의 90퍼센트입니다. 나머지 99퍼센트는 거의 보이지 않습니다.

그 99퍼센트에도 다섯 화질을 만들면, 만든 것의 대부분이 한 번도 쓰이지 않습니다. 인코딩 비용과 저장 비용을 내고 아무것도 얻지 못합니다.

업로드 하루 5만 개 x 5화질 = 하루 25만 번의 인코딩
그중 대부분이 쓰이지 않는다

두 단계로 나눈다

단계무엇을 만드나대상
올릴 때낮은 화질 하나나 둘모든 영상
조회가 붙은 뒤나머지 화질실제로 보이는 영상

올릴 때 낮은 화질은 반드시 만듭니다. 그것이 없으면 재생 자체가 안 되고, 만드는 값도 가장 값쌉니다.

높은 화질은 조회가 일정 수를 넘은 뒤 만듭니다. 그때는 그 영상이 보인다는 것을 알고 있으므로 값을 낼 근거가 있습니다.

승급 판단을 어떻게 하나

기준을 정해야 합니다.

기준 후보문제 또는 이점
총 조회 수단순하다. 오래된 영상이 천천히 넘는다
최근 조회 속도지금 뜨는 것을 잡는다
높은 화질 요청이 왔는가가장 정확하다. 첫 요청자는 못 본다

세 번째가 흥미롭습니다. 시청자가 높은 화질을 골랐는데 없으면 그때 만들기 시작할 수 있습니다. 다만 인코딩이 몇 분 걸리므로 그 시청자는 못 봅니다. 다음 시청자부터 보게 됩니다.

그래서 실제로는 최근 조회 속도로 미리 만들고, 요청을 신호로 함께 씁니다. 뜨는 영상을 조회가 몰리기 전에 준비하는 것이 목적입니다.

만들지 않은 것을 어떻게 감추나

높은 화질이 없는 영상은 목록에 그 화질을 적지 않습니다. 시청자에게는 선택지가 적게 보일 뿐이고 재생은 정상입니다.

목록이 화질의 존재를 정한다는 것이 여기서 다시 쓰입니다. 인코딩이 끝나면 목록에 한 줄이 추가되고, 그다음 시청자부터 그 화질을 고를 수 있습니다.

되돌리는 쪽도 있다

한때 인기였다가 식은 영상은 높은 화질이 있는데 아무도 안 봅니다. 저장비가 계속 나갑니다.

오래 조회가 없으면 높은 화질을 지운다
원본은 남아 있으므로 다시 뜨면 다시 만든다

이것이 앞 절에서 원본을 지우지 않기로 한 결정 덕분에 가능합니다. 원본이 없으면 한 번 지운 화질을 되살릴 수 없어서 지우는 판단 자체를 못 합니다.

면접에서 이렇게 나옵니다

Q.모든 영상에 다섯 화질을 미리 만들면 무엇이 문제입니까

만든 것의 대부분이 한 번도 쓰이지 않습니다.

상위 1퍼센트 영상이 조회의 90퍼센트입니다. 나머지 99퍼센트는 거의 보이지 않습니다.

업로드 하루 5만 개 x 5화질 = 하루 25만 번의 인코딩
그중 대부분이 쓰이지 않는다

인코딩 비용과 저장 비용을 내고 아무것도 얻지 못합니다.

흔한 실수: 조회 분포를 확인하지 않고 전량 인코딩을 기본으로 두는 것. 분포가 고르다면 전량이 맞습니다. 이 결정은 요구사항의 조회 분포 항목에서 나오는 것이므로, 그 줄이 없으면 물어봐야 합니다.

Q.올릴 때 무엇을 만들고 나중에 무엇을 만드시겠습니까

올릴 때는 낮은 화질을, 조회가 붙은 뒤에 높은 화질을 만듭니다.

단계무엇을대상
올릴 때낮은 화질 하나나 둘모든 영상
조회가 붙은 뒤나머지 화질실제로 보이는 영상

낮은 화질은 반드시 만듭니다. 없으면 재생 자체가 안 되고 만드는 값도 가장 값쌉니다.

높은 화질은 그 영상이 보인다는 것을 알고 나서 값을 냅니다.

흔한 실수: 올릴 때 아무것도 만들지 않고 전부 요청 시로 미루는 것. 그러면 첫 시청자가 몇 분을 기다립니다. 값이 가장 싼 것 하나는 미리 만들어 두어야 합니다.

Q.높은 화질을 만들 시점을 무엇으로 판단하시겠습니까

최근 조회 속도로 미리 만들고, 높은 화질 요청을 신호로 함께 씁니다.

기준성질
총 조회 수단순하다. 오래된 영상이 천천히 넘는다
최근 조회 속도지금 뜨는 것을 잡는다
높은 화질 요청가장 정확하다. 첫 요청자는 못 본다

요청만 신호로 쓰면 인코딩이 몇 분 걸리므로 그 시청자는 못 봅니다. 목적은 조회가 몰리기 전에 준비하는 것입니다.

흔한 실수: 총 조회 수만 쓰는 것. 오래된 영상이 조금씩 쌓아 기준을 넘는데, 그것은 지금 뜨는 것이 아닙니다. 속도를 봐야 지금 필요한 것이 잡힙니다.

Q.식은 영상의 높은 화질을 지우시겠습니까

지웁니다. 원본이 남아 있어서 되돌릴 수 있기 때문입니다.

한때 인기였다가 식은 영상은 높은 화질이 있는데 아무도 안 봅니다. 저장비가 계속 나갑니다.

오래 조회가 없으면 높은 화질을 지운다
다시 뜨면 원본에서 다시 만든다

원본을 지우지 않기로 한 결정이 여기서 이자를 돌려줍니다. 원본이 없으면 지우는 판단 자체를 못 합니다.

흔한 실수: 지운 뒤 목록을 고치지 않는 것. 목록에 그 화질이 남아 있으면 시청자가 그것을 골랐을 때 받을 수 없습니다. 지우는 것과 목록에서 빼는 것은 함께 해야 하고, 목록을 먼저 고쳐야 합니다.

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

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

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