Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Bir film ya da dizi platforma yüklendiğinde iş sadece “dosyayı sunucuya koymak” değildir. Video farklı cihazlarda, farklı internet hızlarında ve farklı kalite beklentilerinde sorunsuz oynatılmalıdır. Bu yazıda Netflix gibi büyük ölçekli bir yayın platformunun içeriği nasıl dönüştürdüğünü, parçalara ayırdığını, depoladığını ve kullanıcıya en yakın noktadan nasıl servis ettiğini göreceksin.
Bir film ya da dizi platforma yüklendiğinde iş sadece “dosyayı sunucuya koymak” değildir. Video farklı cihazlarda, farklı internet hızlarında ve farklı kalite beklentilerinde sorunsuz oynatılmalıdır. Bu yazıda Netflix gibi büyük ölçekli bir yayın platformunun içeriği nasıl dönüştürdüğünü, parçalara ayırdığını, depoladığını ve kullanıcıya en yakın noktadan nasıl servis ettiğini göreceksin.
Bir video dosyası ham haliyle genellikle çok büyüktür. Bu yüzden platformlar videoyu farklı kalite seviyelerine ve çözünürlüklere dönüştürür. Codec, yani şöyle düşün: videoyu daha küçük boyuta indirmek için kullanılan sıkıştırma yöntemidir. Bu sıkıştırma bazen görüntüden küçük kayıplar vererek dosyayı daha taşınabilir hale getirir.
Çözünürlük de ayrı bir boyuttur. Bunu şöyle hayal edebilirsin: telefonda izlenen bir içerikle büyük ekranda izlenen aynı içerik aynı piksel yoğunluğuna ihtiyaç duymaz. Bu yüzden aynı film; düşük, orta ve yüksek kalite seçenekleriyle, ayrıca 480p, 720p, 1080p veya 4K gibi farklı çözünürlüklerde hazırlanabilir.
flowchart TD
A["Orijinal Video"] --> B["Codec / Format Seçenekleri"]
A --> C["Çözünürlük Seçenekleri"]
B --> B1["MP4"]
B --> B2["WebM"]
B --> B3["Diğer Formatlar"]
C --> C1["480p"]
C --> C2["720p"]
C --> C3["1080p"]
C --> C4["4K"]
B1 --> D["Oluşan Video Varyantları"]
B2 --> D
B3 --> D
C1 --> D
C2 --> D
C3 --> D
C4 --> DBu diyagram, tek bir videodan neden çok sayıda çıktı üretildiğini gösteriyor. Format sayısı ile çözünürlük sayısı birleştiğinde platformun işlemesi gereken video varyantı sayısı hızla artar.
Büyük bir videoyu tek bir makinede işlemek risklidir. İşlem uzun sürer, hata olursa baştan başlamak gerekebilir ve kaynak kullanımı verimsizleşir. Bu yüzden video küçük parçalara ayrılır ve her parça ayrı görev olarak işlenir.
Burada distributed processing, yani şöyle düşün: büyük bir işi tek kişiye vermek yerine birçok küçük göreve bölüp farklı çalışanlara dağıtmaktır. Video tarafında bir görev genellikle “şu parçayı, şu çözünürlükte, şu codec ile işle” şeklinde tanımlanabilir.
flowchart TD
A["Orijinal İçerik"] --> B["Parçalara Ayırma"]
B --> C1["Parça 1"]
B --> C2["Parça 2"]
B --> C3["Parça 3"]
C1 --> T1["480p MP4 Görevi"]
C1 --> T2["1080p MP4 Görevi"]
C2 --> T3["480p WebM Görevi"]
C2 --> T4["1080p WebM Görevi"]
C3 --> T5["4K MP4 Görevi"]
T1 --> O["İşlenmiş Video Çıktıları"]
T2 --> O
T3 --> O
T4 --> O
T5 --> OBu yapı sayesinde video işleme süreci paralel yürür. Bir görev başarısız olursa tüm film yerine yalnızca ilgili küçük iş tekrar çalıştırılır.
İlk bakışta videoyu üçer dakikalık eşit parçalara ayırmak mantıklı görünür. Fakat izleme deneyimi açısından bu her zaman ideal değildir. Çünkü sahnenin tam ortasında kesilen bir parça, oynatma sırasında gereksiz beklemeye veya kötü geçişlere yol açabilir.
Shot, yani şöyle düşün: videodaki çok kısa ve kendi içinde anlamlı görüntü parçasıdır. Scene ise bunu şöyle hayal edebilirsin: birbiriyle ilişkili birkaç kısa görüntü parçasının oluşturduğu daha büyük anlatı bloğudur.
flowchart TD
A["Video"] --> B{"Parçalama Stratejisi"}
B --> C["Sabit Süreli Parçalama"]
B --> D["Sahne Tabanlı Parçalama"]
C --> C1["Eşit Süreli Segmentler"]
C1 --> C2["Sahne Ortasında Kesilme Riski"]
D --> D1["Kısa Shot'lar"]
D1 --> D2["Shot'ların Scene İçinde Gruplanması"]
D2 --> D3["Daha Akıcı İzleme Deneyimi"]Bu diyagram iki yaklaşım arasındaki farkı gösteriyor. Sahne tabanlı parçalama, videonun teknik olarak değil, izleme davranışına daha uygun şekilde bölünmesini sağlar.
Her kullanıcı videoyu aynı şekilde izlemez. Bazı kullanıcılar içerikte ileri geri atlar, bazıları ise uzun süre kesintisiz izler. Platform bu davranışı okuyarak ne kadar veriyi önceden getireceğine karar verebilir.
Prefetching, yani şöyle düşün: kullanıcının birazdan isteyebileceği veriyi önceden hazırlayıp yakına koymaktır. Eğer kullanıcı sürekli ileri atlıyorsa sistem daha temkinli davranır. Eğer izleme akışı kesintisizse sonraki parçaları önceden getirmek mantıklı hale gelir.
flowchart TD
A["Kullanıcı İzleme Davranışı"] --> B{"İzleme Deseni"}
B --> C["Atlamalı İzleme"]
B --> D["Kesintisiz İzleme"]
C --> C1["Sadece İstenen Parça Getirilir"]
C1 --> C2["Gereksiz Veri Transferi Azalır"]
D --> D1["Sonraki Parçalar Tahmin Edilir"]
D1 --> D2["Önceden Getirme Yapılır"]
D2 --> D3["Daha Akıcı Oynatma"]Bu akış, video servisinin sadece dosya göndermediğini; kullanıcının davranışına göre veri stratejisi seçtiğini gösteriyor.
Netflix, video içeriklerini büyük ölçekte saklamak için Amazon S3 kullanır. Amazon S3, yani şöyle düşün: çok büyük miktarda dosyayı dayanıklı, ucuz ve erişilebilir şekilde tutan bir nesne depolama servisidir. Video dosyaları sık sık değiştirilen kayıtlar gibi davranmadığı için klasik veritabanından çok nesne depolamaya uygundur.
flowchart TD
A["Stüdyo / İçerik Sağlayıcı"] --> B["Netflix İçerik Alım Süreci"]
B --> C["Video İşleme Pipeline'ı"]
C --> D["Farklı Format ve Çözünürlükler"]
D --> E["Amazon S3 Depolama"]
E --> F["Dağıtım İçin Hazır İçerikler"]Bu diyagram, içeriğin platforma girişinden depolamaya kadar olan genel hattı gösteriyor. Video önce işlenir, sonra farklı varyantlarıyla birlikte depolama katmanına yerleştirilir.
Video içeriklerini sadece merkezi sunuculardan servis etmek dünyanın farklı bölgelerinde gecikmeye yol açabilir. Bu yüzden Netflix, Open Connect adlı kendi içerik dağıtım sistemini kullanır. Open Connect, yani şöyle düşün: popüler içerikleri kullanıcılara daha yakın noktalarda tutan özel Netflix önbellek altyapısıdır.
Bu sistemde bazı içerikler internet servis sağlayıcılarına yakın konumlanan cihazlarda saklanır. Kullanıcı bir içerik istediğinde, mümkünse uzak bir ana merkeze gitmek yerine yakındaki Open Connect cihazından veri alır.
flowchart TD
U["Kullanıcı"] --> ISP["İnternet Servis Sağlayıcı"]
ISP --> OCA{"Open Connect Cihazında İçerik Var mı?"}
OCA -->|Evet| L["Yakındaki Cache'den Video Servisi"]
OCA -->|Hayır| N["Netflix Ana İçerik Altyapısından İstek"]
N --> S3["Amazon S3 / Merkezi Depolama"]
S3 --> N
N --> ISP
L --> U
ISP --> UBu diyagram, kullanıcının video isteğinin nasıl karşılandığını gösteriyor. İçerik yakındaki cache üzerinde varsa daha düşük gecikme ve daha az ağ maliyetiyle servis edilir.
Platform sadece mevcut içerikleri saklamakla kalmaz; yeni çıkan veya popülerleşmesi beklenen içerikleri de bölgesel cache noktalarına taşır. Bu işlem genellikle ağın daha boş olduğu zamanlarda yapılabilir. Amaç, yoğun saatlerde kullanıcı isteği geldiğinde içeriğin zaten yakında hazır bulunmasıdır.
Cache warming, yani şöyle düşün: kullanıcılar istemeden önce önemli verileri önbelleğe yerleştirme işlemidir. Böylece ilk yoğun talep anında sistem hazırlıksız yakalanmaz.
sequenceDiagram
participant N as Netflix Kontrol Sistemi
participant S as Amazon S3
participant O as Open Connect Cache
participant U as Kullanıcı
N->>S: İşlenmiş içerik parçalarını belirler
N->>O: Bölge için gerekli içerikleri gönderir
O-->>N: İçerik hazır bilgisini döner
U->>O: Video isteği gönderir
O-->>U: Yakındaki parçaları servis ederBu sequence diyagramı, yeni içeriklerin merkezi depolamadan bölgesel cache noktalarına nasıl taşındığını gösteriyor. Kullanıcı isteği geldiğinde sistemin hızlı cevap verebilmesi için hazırlık önceden yapılır.
Netflix ölçeğinde video yayınlamak, tek bir dosyayı internete koymaktan çok daha karmaşık bir iştir. İçerik farklı codec ve çözünürlüklerde hazırlanır, küçük görevlere bölünerek paralel işlenir, sahne yapısına göre daha akıllı parçalara ayrılır ve Amazon S3 gibi depolama servislerinde tutulur. Son aşamada Open Connect sayesinde içerik kullanıcıya en yakın noktalara taşınır. Böylece hem platformun merkezi altyapısına binen yük azalır hem de kullanıcı videoyu daha hızlı ve daha kesintisiz izler.
Bu yazı How NETFLIX onboards new content: Video Processing at scale videosundan ilham alınarak yazılmıştır.