앞 절에서 인코딩 순서를 정했습니다. 그런데 더 앞의 질문이 남아 있습니다. 모든 영상에 5단계를 다 만들어야 하나요.
조회는 극단적으로 몰린다
상위 1퍼센트 영상이 조회의 90퍼센트입니다. 나머지 99퍼센트는 거의 보이지 않습니다.
그 99퍼센트에도 다섯 화질을 만들면, 만든 것의 대부분이 한 번도 쓰이지 않습니다. 인코딩 비용과 저장 비용을 내고 아무것도 얻지 못합니다.
업로드 하루 5만 개 x 5화질 = 하루 25만 번의 인코딩
그중 대부분이 쓰이지 않는다
두 단계로 나눈다
| 단계 | 무엇을 만드나 | 대상 |
|---|---|---|
| 올릴 때 | 낮은 화질 하나나 둘 | 모든 영상 |
| 조회가 붙은 뒤 | 나머지 화질 | 실제로 보이는 영상 |
올릴 때 낮은 화질은 반드시 만듭니다. 그것이 없으면 재생 자체가 안 되고, 만드는 값도 가장 값쌉니다.
높은 화질은 조회가 일정 수를 넘은 뒤 만듭니다. 그때는 그 영상이 보인다는 것을 알고 있으므로 값을 낼 근거가 있습니다.
승급 판단을 어떻게 하나
기준을 정해야 합니다.
| 기준 후보 | 문제 또는 이점 |
|---|---|
| 총 조회 수 | 단순하다. 오래된 영상이 천천히 넘는다 |
| 최근 조회 속도 | 지금 뜨는 것을 잡는다 |
| 높은 화질 요청이 왔는가 | 가장 정확하다. 첫 요청자는 못 본다 |
세 번째가 흥미롭습니다. 시청자가 높은 화질을 골랐는데 없으면 그때 만들기 시작할 수 있습니다. 다만 인코딩이 몇 분 걸리므로 그 시청자는 못 봅니다. 다음 시청자부터 보게 됩니다.
그래서 실제로는 최근 조회 속도로 미리 만들고, 요청을 신호로 함께 씁니다. 뜨는 영상을 조회가 몰리기 전에 준비하는 것이 목적입니다.
만들지 않은 것을 어떻게 감추나
높은 화질이 없는 영상은 목록에 그 화질을 적지 않습니다. 시청자에게는 선택지가 적게 보일 뿐이고 재생은 정상입니다.
목록이 화질의 존재를 정한다는 것이 여기서 다시 쓰입니다. 인코딩이 끝나면 목록에 한 줄이 추가되고, 그다음 시청자부터 그 화질을 고를 수 있습니다.
되돌리는 쪽도 있다
한때 인기였다가 식은 영상은 높은 화질이 있는데 아무도 안 봅니다. 저장비가 계속 나갑니다.
오래 조회가 없으면 높은 화질을 지운다
원본은 남아 있으므로 다시 뜨면 다시 만든다
이것이 앞 절에서 원본을 지우지 않기로 한 결정 덕분에 가능합니다. 원본이 없으면 한 번 지운 화질을 되살릴 수 없어서 지우는 판단 자체를 못 합니다.