- YouTube는 매분 500시간 분량의 비디오가 업로드될 정도로 방대한 양의 데이터를 처리하며, 효율적인 시스템 설계가 필수적임 😮.
- 대용량 비디오 업로드 시 API 서버를 거치지 않고, 사전 서명된 URL을 통해 Blob Storage에 직접 업로드하여 서버 부하를 줄임 🔑.
- 비디오를 작은 청크로 분할하여 병렬 업로드를 수행하고, 각 청크에 SH 256 지문(fingerprint)을 적용하여 데이터 무결성을 보장함 🛡️.
- 다양한 기기 및 네트워크 환경에서 원활한 재생을 위해 하나의 비디오를 여러 해상도 및 코덱으로 변환하는 처리 파이프라인을 구축함 ⚙️.
- 비디오 처리 워크플로우를 DAG(Directed Acyclic Graph)로 모델링하여 작업 간의 의존성을 관리하고 병렬 처리를 극대화함 📈.
- Adaptive Bitrate Streaming(ABS)을 사용하여 네트워크 대역폭에 따라 실시간으로 비디오 품질을 조정하고 사용자 경험을 향상시킴 🎬.
- CDN(Content Delivery Network)을 활용하여 지리적으로 가까운 서버에서 비디오 세그먼트를 제공함으로써 지연 시간을 줄이고 스트리밍 품질을 개선함 🌐.
- 핫 비디오 문제, 비용 최적화, 파이프라인 최적화 등 추가적인 고려 사항들이 존재하며, 각 주제는 더 깊이 있는 연구가 필요함 🤔.
- 핵심 설계 원칙(직접 업로드, DAG 기반 병렬 처리, 적응형 스트리밍)을 이해하면 대용량 파일 공유, 머신 러닝 파이프라인, 라이브 스트리밍 등 다양한 분야에 적용 가능함 💡.
- 시스템 설계, 코딩, 행동 질문, 머신 러닝, 객체 지향 설계 등에 대한 종합적인 강좌를 제공하는 커뮤니티를 통해 기술 면접을 대비할 수 있음 🧑💻.