Загружаем каталог…
Загружаем каталог…
이번주에는 면접관이 되었다. 이번 장의 주제는 무려 유튜브 설계 ... ! 문제 이해 및 설계 범위 확정 이번 장에서 다루고자하는 서비스 설계의 특징은 이러하다. • 빠른 비디오 업로드 • 원활한 비디오재생 • 재생 품질 선택 기능 • 낮은 인프라 비용(infrastructure cost) • 높은 가용성과 규모확장성, 그리고안정성 • 지원 클라이언트: 모바일 앱, 웹브라우저, 그리고 스마트 TV 개략적 규모 추정 CDN으로 비디오를 서비스하면 비용이 크다. 이 단계에서는 규모를 먼저 추정하고, 비용 절감 방법은 뒤에서 다룬다. 가정: DAU 500만 / 1인당 하루 5개 시청 / 사용자의 10%가 하루 1개 업로드 / 영상 평균 300MB 저장 용량: 500만 × 10% × 300MB = 하루 150TB 증가 CDN 비용: 500만 × 5개 × 0.3GB × $0.02 = 하루 $150,000 (CloudFront, 미국 트래픽 기준, 스트리밍 비용만 계산) 개략적 설계안 제시 및 동의 구하기 주어진 조건에 따라 기존 클라우드 서비스를 이용한다. 규모 확장이 쉬운 BLOB 저장소나 CDN을 직접 만드는 것은 매우 복잡하고 비용도 많이 들어 비효율적이기 때문이다. 넷플릭스나 페이스북 같은 큰 회사도 모든 것을 직접 구축하지는 않는다. 기존 클라우드를 이용할 때 서비스는 개략적으로 아래와 같이 구성되며, 이 구성을 바탕으로 비디오 업로드 절차와 비디오 스트리밍 절차 를 설계한다. ※ 단말(Client) : 컴퓨터, 모바일, 스마트 TV 등 YouTube를 시청할 수 있는 기기 ※ CDN : 비디오를 저장하고, 사용자가 재생 버튼을 누르면 CDN에서 비디오를 스트리밍하여 사용자 단말에서 이를 확인할 수 있게 함. ※ API 서버 : 비디오 스트리밍을 제외한 요청을 처리. (ex. 피드 추천, 비디오 업로드 URL 생성, 메타데이터 DB·캐시 갱신, 사용자 가입 등) 비디오 업로드 절차 해당 구조에서 비디오 업로드와 비디오 메타데이터 갱신 과정이 병렬적으로 수행된다. 비디오 업로드 원본 업로드 → 트랜스코딩 → 저장소 업로드 + 완료 이벤트 큐 → CDN 업로드 + DB/캐시 갱신 → 스트리밍 준비 완료 원본 업로드 단말이 비디오를 원본 저장소 에 업로드한다. 트랜스코딩 시작 트랜스코딩 서버가 원본 저장소에서 비디오를 가져와 여러 화질·형식으로 변환한다. 트랜스코딩 완료 후 병렬 처리 3a. 비디오 저장 : 트랜스코딩된 비디오를 트랜스코딩 비디오 저장소 에 업로드한다. 3b. 완료 이벤트 전달 : 트랜스코딩 완료 이벤트를 완료 큐 에 넣는다. 각 작업 진행 3a-1. CDN 업로드 : 트랜스코딩된 비디오를 CDN에 업로드 한다. 3b-1. 완료 이벤트 처리 : 완료 핸들러가 큐에서 이벤트를 꺼낸다. 3b-1-a/b. 메타데이터 갱신 : 완료 핸들러가 메타데이터 DB와 캐시를 갱신 한다. 스트리밍 준비 완료 알림 API 서버가 단말에 비디오 업로드 및 처리가 완료되어 스트리밍할 수 있음 을 알린다. ※ 트랜스코딩 : 압축된 디지털 파일(주로 오디오나 비디오)을 다른 형식이나 사양으로 변환하는 프로세스. 메타데이터 갱신 비디오 업로드 + 메타데이터 갱신 요청 → API 서버 → 메타데이터 캐시·DB 업데이트 메타데이터 갱신 요청 원본 저장소에 비디오를 업로드하는 동안, 단말이 API 서버에 메타데이터 갱신 요청 을 보낸다. 메타데이터 전달 요청에는 파일 이름, 파일 크기, 파일 포맷 등의 정보가 포함된다. 메타데이터 갱신 API 서버가 전달받은 정보를 이용해 메타데이터 캐시와 데이터베이스를 업데이트 한다. 비디오 스트리밍 절차 비디오는 다운로드 없이 바로 cdn에서 스트리밍된다. 이때, 비디오 스트리밍을 위해 스트리밍 프로토콜이 사용된다는 것을 알아두자. 스트리밍 프로토콜은 비디오 스트리밍을 위해 데이터를 전송할 때 쓰이는 표준화된 통신방법으로, 널리 쓰이는 것으로는 아래와 같은 것들이 있으니 훑어보자. • MPEG-DASH. MPEG • 애플(Apple) HLS. • 마이크로소프트 스무드 스트리밍 (Microsoft Smooth Streaming). • 어도비 HTTP 동적 스트리밍 (Adobe HTTP Dynamic Streaming, HDS) ※ 스트리밍 프로토콜은 각각 지원하는 비디오 인코딩이 다르고 플레이어도 다르다는 것이다. 따라서 비 디 오 스트리밍 서비스를 설계할 때는 서비스의 용례에 맞는 프로토콜을 잘 골라야 한다. 상세설계 비디오 업로드와 비디오 스트리밍을 최적화 하는 방법과, 발생할 수 있는 오류 처리에 대해서 알아본다. 비디오 트랜스코딩 비디오 트랜스코딩은 해상도, 코덱, 비트레이트(bitrate) 등의 매개변수를 조정해 비디오 파일을 다른 형식으로 변환하는 프로세스이다. 비디오를 녹화하면 단말(보통 전화나 카메라)은 해당 비디오를 특정 포맷으로 저장한다. 이 비디오가 저장 공간을 덜 차지하고, 다른 단말과 호환되며, 사용자의 대역폭에 맞는 화질로, 끊김 없이 재생되려면 변환이 필요하다. 트랜스코딩이 변환하는 대상인 비디오 포맷은 크게 두 부분으로 이루어진다. 컨테이너(container): 비디오, 오디오, 메타데이터를 담는 바구니 같은 것이다. 컨테이너 포맷은 .avi, .mov, .mp4 같은 파일 확장자를 보면 알 수 있다. 코덱(codec): 화질을 최대한 유지하면서 파일 크기를 줄이기 위해 고안된 압축 및 압축 해제 알고리즘이다. 가장 많이 쓰이는 비디오 코덱으로는 H.264, VP9, HEVC가 있다. 유향 비순환 그래프(DAG) 모델 비디오를 트랜스코딩하는 것은 컴퓨팅 자원을 많이 소모할 뿐 아니라 시간도 많이 드는 작업이다. 게다가 콘텐츠 창작자는 각자 자기만의 비디오 프로세싱 요구사항을 갖고 있다. 이런 다양한 요구를 지원하려면(=쟤들 말 들어주려면) 처리 과정을 적절히 추상화해서 작업을 직접 정의할 수 있게 해야 한다. 이때 쓸 수 있는 것이 DAG 모델이다. 원본 비디오는 비디오, 오디오, 메타데이터로 나뉘고, 정의된 작업들은 DAG 모델에 따라 단계별로 배열되어 순차적으로 또는 병렬적으로 실행된다. 비디오 트랜스코딩 아키텍처 본 설계안에서는 클라우드 서비스를 활용한 비디오 트랜스코딩 아키텍처를 다음과 같이 정의하였다. 전처리기 비디오 분할 : 비디오를 몇 초 단위의 GOP 로 나눈다. 구형 단말은 전처리기가 분할을 대신한다. DAG 생성 : 설정 파일을 바탕으로 비디오 처리 작업 순서(DAG) 를 생성한다. 데이터 캐시 : 분할된 비디오와 메타데이터를 임시 저장해 인코딩 실패 시 재개 할 수 있도록 한다. DAG 스케줄러 DAG 그래프를 몇 개 단계(stage)로 분할한 다음에 그 각각을 자원 관리자의 작업 큐(task queue)에 집어넣는다 자원 관리자 작업을 적절한 서버에 배분하고 실행 상태를 관리한다. 작업 큐 : 실행할 작업을 우선순위대로 보관 작업 서버 큐 : 사용 가능한 작업 서버 정보를 보관 실행 큐 : 현재 실행 중인 작업과 서버 정보를 보관 작업 스케줄러 : 작업과 서버를 매칭하고 실행을 지시 동작 과정: 우선순위 높은 작업 선택 → 적합한 서버 선택 → 작업 실행 지시 → 실행 큐에 등록 → 작업 완료 후 제거 작업 서버 작업 서버는 DAG에 정의된 작업을 수행한다. 이때, 작업종류에 따라 서버를 나누어 관리한다. 임시 저장소 어떤 시스템을 선택할 것이냐는 저장할 데이터의 유형, 크기, 이용 빈도, 데이터 유효기간 등에 따라 달라진다. 예시: 메타데이터 : 자주 참조하고 크기가 작으므로 메모리에 캐시 한다. 비디오·오디오 데이터 : 크기가 크므로 BLOB 저장소 에 보관한다. 임시 저장소 : 비디오 프로세싱이 완료되면 삭제한다 . 인코딩된 비디오 끝. 파이프라인 최종 결과물 생산완료. 시스템 최적화 속도, 안전성, 비용을 최적화하는 방법에 대해서 다룬다. 속도 최적화: 비디오 병렬 업로드 비디오 전체를 한 번에 업로드하는 것은 비효율적이다. 하나의 비디오를 GOP 단위로 분할해 병렬로 업로드하면 속도가 빨라지고, 일부가 실패해도 실패한 조각만 다시 올리면 되므로 빠르게 재개할 수 있다. 속도 최적화: 업로드 센터를 사용자 근거리에 지정 데이터가 이동해야 하는 네트워크 거리와 경로가 짧아지면 업로드 시간도 줄어든다. 업로드 센터를 여러 곳에 두어, 사용자가 거주지 근처의 업로드 센터를 이용하도록 하자. 속도 최적화: 모든 절차를 병렬화 메시지큐를 도입한다. 메시지 큐 도입 전: 각 모듈이 앞 단계의 작업이 끝나기를 기다려야 해서 속도가 느리다. 메시지 큐 도입 후: 모듈은 결과를 큐에 넣고 바로 다음 작업으로 넘어가고, 뒤 단계는 큐에 쌓인 작업을 여러 대가 병렬로 처리한다. 기다리는 시간이 없어지고 동시에 처리하는 양이 늘어나 속도가 빨라진다. 안전성 최적화: 미리 사인된 업로드 URL API 서버가 사용자의 업로드 권한을 확인한 뒤 미리 사인된 URL을 발급한다. 이 URL은 정해진 위치에만, 제한된 시간 동안만 쓸 수 있어서, 허가받은 사용자만 올바른 위치에 비디오를 업로드할 수 있다. 상세 절차: URL 요청: 클라이언트가 API 서버에 업로드 URL을 요청한다. URL 발급: API 서버가 업로드 권한이 포함된 미리 사인된 URL을 반환한다. 직접 업로드: 클라이언트가 해당 URL을 이용해 저장소에 비디오를 직접 업로드한다. 안전성 최적화: 비디오 보호 비디오 저작권 보호를 위해 움직여보자. 방식 핵심 내용 DRM 디지털 콘텐츠의 접근·복제 권한을 관리 AES 암호화 비디오를 암호화하고, 허가된 사용자만 재생 시 복호화 워터마크 영상에 회사 로고·소유자 정보 등을 표시 비용 최적화 CDN은 비싸다. 데이터 크기가 크면 클수록 더하다. 이 비용은 어떻게 낮출 수 있을까? 인기 영상만 CDN 사용 → 인기 없는 영상의 CDN 저장·전송 비용 을 줄인다. 인기 없는 영상은 필요할 때 인코딩 → 미리 인코딩하고 저장하는 인코딩·저장 비용 을 줄인다. 지역별 인기 영상만 해당 지역에 저장 → 다른 지역으로 영상을 복제하는 저장·전송 비용 을 줄인다. ISP와 제휴 → 사용자와 가까운 ISP를 통해 전송해 네트워크 전송 비용 을 줄인다. 사람들은 소수의 인기 영상을 본다. 인기 영상만 CDN으로 제공하고 나머지는 자체 서버에서 제공해 비용을 줄여보자. 오류 처리 시스템 오류에는 두 가지 종류가 있다. 회복 가능 오류(recoverable error) 재시도, 우회, 교체로 해결한다. 계속 실패하면 클라이언트에 오류 코드를 반환한다. 재시도로 해결 업로드 오류: 몇 회 재시도한다. 트랜스코딩 오류: 재시도한다. 전처리 오류: DAG 그래프를 재생성한다. DAG 스케줄러 오류: 작업을 다시 스케줄링한다. 작업 서버 장애: 다른 서버에서 해당 작업을 재시도한다. 다른 경로로 우회 비디오 분할 오류: 클라이언트가 GOP 단위로 분할하지 못하면 전체 비디오를 서버로 보내 서버가 분할한다. API 서버 장애: 무상태 서버이므로 신규 요청을 다른 API 서버로 보낸다. 사본과 교체로 해결 자원 관리자 큐 장애: 사본(replica)을 이용한다. 메타데이터 캐시 서버 장애: 다중화된 다른 노드에서 데이터를 가져오고, 장애 서버는 새것으로 교체한다. 메타데이터 데이터베이스 서버 장애 주 서버 장애: 부 서버 중 하나를 주 서버로 승격한다. 부 서버 장애: 다른 부 서버로 읽기를 처리하고, 장애 서버는 새것으로 교체한다. 회복 불가능 오류(non-recoverable error) 다시 시도해도 결과가 같은 오류. 해당 비디오의 작업을 중단하고 클라이언트에 오류 코드를 반환한다. 비디오 포맷이 잘못된 경우 이 주의 면접문제 14장은 260페이지를 기준으로 두 파트로 나뉘는데, 이 장의 꽃은 병렬화라고 생각해, 파트별로 병렬화와 관련된 문제를 내려고 한다. FASD92 트랜스코딩 절차에 DAG 모델을 도입하면 어떤 점이 좋은가? msms804 비디오 업로드부터 CDN 배포까지의 과정에서 속도를 최적화하는 방법으로는 업로드 센터를 사용자 가까이 두는 것이 있다. 이 외의 방법을 1가지 이상 서술하시오.
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
14. 이번주에는 면접관이 되었다. 이번 장의 주제는 무려 유튜브 설계 ... ! 문제 이해 및 설계 범위 확정 이번 장에서 다루고자하는 서비스 설계의 특징은 이러하다. • 빠른 비디오 업로드 • 원활한 비디오재생 • 재생 품질 선택 기능 • 낮은 인프라 비용(infrastructure cost) • 높은 가용성과 규모확장성, 그리고안정성 • 지원 클라이언트: 모바일 앱, 웹브라우저, 그리고 스마트 TV 개략적 규모 추정 CDN으로 비디오를 서비스하면 비용이 크다. 이 단계에서는 규모를 먼저 추정하고, 비용 절감 방법은 뒤에서 다룬다. 가정: DAU 500만 / 1인당 하루 5개 시청 / 사용자의 10%가 하루 1개 업로드 / 영상 평균 300MB 저장 용량: 500만 × 10% × 300MB = 하루…
Открыть источник