SSAFY-Seoul-20-Study / book-system-design-interview

1 stars 1 forks source link

7주차] 14장 유튜브 설계 한태희 #48

Closed nyanpasu-life closed 5 months ago

nyanpasu-life commented 6 months ago

유튜브는 우리에게 친숙한 서비스이다. 언뜻 보기엔 간단하다. 그렇기 때문에 유트브 서비스의 그 규모와 복잡성에 대해서 간과하기 쉽다. 유튜브는 일간 50억회의 동영상 재생 요청을 처리하고 있으며, 엄청난 규모로 돈을 벌어들이고 있다.

1단계 : 문제 이해 및 설계 범위 확정

2단계 개략적 설계안 제시 및 동의 구하기

유튜브를 설계하기 위해서 중요한 개념은 CDN과 BLOB 스토리지이다.

CDN(콘텐츠 전송 네트워크): 전세계에 분산된 서버를 사용하여 콘텐츠를 더 빠르게 전송하는 기술 BLOB 스토리지: 이진 대형 객체(예: 이미지, 동영상등의 비정형 데이터)를 저장하는 데 사용되는 스토리지 시스템

이런 미디어 서버는 일반적으로 직접 구축하는 것보다 외부 서비스를 이용하는 것이 더 저렴하다. 전문 업체는 규모의 경제와 운영 전문성으로 더욱 효율적으로 서버를 운영하기 때문이다.

따라서 아래와 같은 설계로 서비스를 구성한다.

image

비디오는 CDN에 저장하고, 그 외의 요청은 API 서버가 처리한다.

비디오 업로드 절차

전체 구조

image

비디오 업로드

image

메타데이터 갱신

image

비디오 스트리밍 절차

image

3단계 : 상세 설계

비디오 트랜스코딩

비디오 압축 포맷을 다른 형태로 변환하는 작업

여러 해상도의 동영상 파일을 준비 vs 하나의 동영상 파일에서 여러 버전의 청크를 준비

인코딩 포맷의 두 가지 요소

유향 비순환 그래프 모델 (DAG)

비디오 트랜스코딩 작업은 서비스 플로우에 따른 형태로 진행되어야 한다. 따라서 DAG 모델 형태로 작업 구조를 형상화한다. 아래의 예시는 섬네일 추출과 워터마크 삽입 기능, 기타 등등이 필요할 때의 서비스 구조이다.

image

비디오 인코딩은 다양한 해상도, 코덱, 비트레이트 조합으로 진행하여 서로 다른 대역폭에서 원활한 스트리밍이 가능하도록 준비한다.

비디오 트랜스코딩 아키텍처

image

전처리기

DAG 스케줄러

스케줄러는 그래프를 분할 한 다음에 임의의 작업을 자원 관리자의 작업 큐에 넣는다.

자원 관리자

작업 서버

DAG에 정의된 작업을 수행한다.

임시 저장소

작업 서버가 빈번히 참조하는 데이터를 저장하는 보관소이다. 비디오 프로세싱이 끝나면 삭제한다.

인코딩된 비디오

funny_720p.mp4

시스템 최적화

속도 최적화: 비디오 병렬 업로드

비디오를 하나의 스트림으로 업로드하지 않고, 여러개의 GOP로 분할해 업로드한다.

GOP?
`곱` 이라고 발음함
https://tell-mia.tistory.com/46

저자가 임의로 만든 단위가 아니라, 인코딩에서 사용되는 프레임의 종류

하나의 GOP는 I프레임, P프레임, B프레임이 섞인 2~15개의 프레임 묶음으로 구성된다.

I프레임 : 사진과 동일한 정보를 가지고 있음
P프레임 : 이전 I 프레임을 기준으로 변화량만 저장함 (I프레임의 33% 용량)
B프레임 : I 프레임과 P 프레임 사이에 껴서 양쪽 프레임 모두를 참조 (I프레임의  11% 용량)

속도 최적화 : 업로드 센터를 근거리에 지정

CDN을 굳이 사용하는 핵심 이유.

사용자와 물리적으로 가까운 서버를 미디어 프록시 서버로 이용한다.

속도 최적화 : 모든 절차를 병렬화

메세지 큐를 도입하여 각각의 모듈들이 유후 상태에 빠지지 않도록 관리한다. 오버헤드가 큰 인코딩 묘듈 등을 더 크게 만들면, 병목 현상을 해결할 수 있다.

안정성 최적화 : 미리 사인된 업로드 URL

원본 저장소에 업로더 외의 타인이 접근하지 못하도록 원본 저장소에 업로드 할 때, pre-signed URL을 사용하도록 만든다.

안정성 최적화 : 비디오 보호

DRM, AES 암호화, 워터마크 등을 이용해 업로드된 비디오가 도난 당하지 않도록 보호한다.

AES 암호화는 접근 권한을 가진 사람이 복제를 시도하면 막을 방법이 없다.
DRM은 로우 레벨에서 크랙하거나 캡쳐 카드를 이용해 비디오를 통째로 재녹화 하는 방법으로 우회가 가능하기 때문에 원천적으로 데이터를 보호할 수 없다.
워터마크는 원본 동영상을 훼손하는 대신 저작권 주장이 가능한 가장 현실적인 옵션이었지만, 최근 AI를 사용한 동영상 워터마크 제거 기술이 슬금슬금 올라오고있다.

비용 최적화

사람들은 보는 비디오만 보고, 인기 없는 것은 거의 보지 않는다.

유튜브도 외국인이 올린 조회수 50 영상 같은걸 로딩하면 심할 땐 1분 이상 로딩이 걸리기도 한다.

인기 없는 비디오는 CDN을 이용하지 않고, 따로 비디오 서버를 만들어 서비스 한다. 짧고 인기없는 비디오는 인코딩 과정조차 미리 하지 않고, 원본만 가지고 있다가, 필요할 때 인코딩을 시작해도 된다.

오류 처리

회복 가능 오류 vs 회복 불가능 오류

회복 가능 오류

회복 불가능 오류

4단계 : 마무리

추가적인 논의