MoQ: canlı video, görüntülü arama ve mesajlaşmayı tek protokole indirmek
An API for MoQ: provision your own isolated relays · Jacob Curtis, Manish Pandit
MoQ (Media over QUIC), IETF'te geliştirilen açık bir protokol — HTTP, TLS ve QUIC'i de standartlaştıran kurum. Cloudflare geçen yıl MoQ'yu tüm sunucularında açmıştı; şimdi eksik olan parçayı ekliyor: izolasyon ve erişim kontrolü. Yeni sağlama API'siyle uygulamana özel bir röle (relay) oluşturup yayıncılar ve aboneler için ayrı kimlik bilgileri verebiliyorsun.
Protokolün modeli basit ve öğretici: bir yayınla/abone ol (publish/subscribe) sistemi. Yayıncı isimlendirilmiş veri akışları gönderir, aboneler o akışları isimle ister. Aralarında röleler durur — bunlar sadece her akışı isteyen herkese kopyalayan CDN sunucuları. Kritik nokta: röle verinin içine hiç bakmaz.
Bu tek tasarım kararı büyük bir sonuç doğuruyor. Röleler içeriği umursamadığı için, eskiden her biri ayrı bir sistem gerektiren şeyler — canlı video, görüntülü arama, düşük gecikmeli mesajlaşma — aynı protokolün üstünde taşınabiliyor. Altta HTTP/3'ün taşıma katmanı olan QUIC var; gecikmeyi düşük tutan da o.
Pratik sonuç: kendi özel sunucu filonu kurup işletmene gerek kalmıyor. Tek bir API üzerinden bir CDN'e yayın yapıyor, hem düşük gecikme hem büyük ölçeği çok daha ucuza alıyorsun.
Öne çıkanlar
- Röle içeriğe bakmaz — bu "aptal ara katman" kararı, protokolün genel amaçlı olmasını sağlayan şey.
- Yayınla/abone ol modeli isimlendirilmiş akışlar üzerinden çalışıyor; abone akışı adıyla istiyor.
- QUIC üstünde çalışıyor: TCP'nin baş-hat tıkanması (head-of-line blocking) sorunu olmadan düşük gecikme.
- Şu an beta ve ücretsiz; draft-14 ve draft-16 sürümleri destekleniyor — yani protokol hâlâ hareket hâlinde.
Neden önemli?
"Ara katman veriyi anlamasın" ilkesi, dayanıklı sistem tasarımının en güçlü kurallarından biri. İçeriği anlamayan bir bileşen, içerik değiştiğinde bozulmaz; genel amaçlı kalır ve ölçeklemesi kolaylaşır. Aynı ilkeyi mesaj kuyruklarında, yük dengeleyicilerde ve proxy'lerde de görürsün — MoQ bunun canlı medyaya uygulanmış hâli.
Sende karşılığı
Mobit'teki mesajlaşma uygulamasında muhtemelen WebSocket kullandın. Bu yazı sana o kararı sorgulatacak bir karşılaştırma veriyor: WebSocket TCP üstünde tek bir akıştır, bir paket kaybolduğunda arkasındaki her şey bekler (head-of-line blocking). QUIC bunu bağımsız akışlarla çözer. Ayrıca yayınla/abone ol modelini kendi sistemine taşıyabilirsin: mesajları doğrudan alıcıya itmek yerine kanal adına yayınlamak, grup mesajlaşmasını ve çoklu cihaz senkronizasyonunu ciddi şekilde basitleştirir — Redis Pub/Sub ile aynı deseni bugün deneyebilirsin.
Sözlük
- publish/subscribe (pub/sub) yayınla/abone ol
- Göndericinin alıcıyı bilmediği, mesajların isimlendirilmiş kanallara yayınlandığı iletişim modeli.
- relay röle
- Veriyi kaynaktan alıp isteyen herkese kopyalayan ara sunucu; içeriği yorumlamaz.
- QUIC QUIC
- UDP üstünde çalışan, HTTP/3'ün taşıma katmanı olan protokol; bağımsız akışlarla baş-hat tıkanmasını önler.
- head-of-line blocking baş-hat tıkanması
- Sıradaki ilk paket geciktiğinde arkasındaki tüm paketlerin beklemek zorunda kalması.