Scaling Planı

Muzibu: 30.000 Eşzamanlı Kullanıcı

CDN Nedir? Nasıl Çalışır? 3 Sunucu Yeterli Mi?

26 Aralık 2025

CDN Nedir? (Basit Anlatım)

Günlük Hayattan Örnek: Kargo Şirketi

❌ CDN Olmadan

Tüm kargolar İstanbul'daki tek bir depodan gönderiliyor. Antalya'daki müşteri 3 gün bekliyor. Van'daki müşteri 5 gün bekliyor. Depo aşırı yüklenince herkes bekliyor.

✅ CDN İle

Her şehirde küçük depolar var. Antalya'daki müşteriye Antalya deposundan, Van'daki müşteriye Van deposundan gönderim yapılıyor. Herkes 1 günde alıyor!

Teknik Açıklama

CDN (Content Delivery Network) = İçerik Dağıtım Ağı

Dünya genelinde yüzlerce sunucuya (edge server) sahip bir ağ. Senin dosyalarını (müzik, resim, video) bu sunuculara kopyalıyor. Kullanıcı en yakın sunucudan alıyor.

CDN Çalışma Prensibi
Ana Sunucu (İstanbul)
Cloudflare dosyaları kopyalar
Londra
Frankfurt
New York
Tokyo
İstanbul
Türkiye'deki kullanıcı → İstanbul sunucusundan
Almanya'daki kullanıcı → Frankfurt'tan

Hız

Kullanıcı yakın sunucudan indiriyor. 200ms → 20ms

🛡️

Koruma

DDoS saldırılarını CDN karşılıyor, sunucun korunuyor

💰

Maliyet

Ana sunucu yükü %90 azalır, daha az sunucu yeterli

Müzik Streaming İçin CDN Nasıl Çalışır?

HLS (HTTP Live Streaming) Nedir?

Muzibu şarkıları HLS formatında sunuyor. Bir şarkı küçük parçalara (segment) bölünüyor:

# Örnek: 3 dakikalık şarkı
sarki.m3u8
├── segment_001.ts (10 saniye, ~800KB)
├── segment_002.ts (10 saniye, ~800KB)
├── segment_003.ts (10 saniye, ~800KB)
├── ... (18 segment toplam)
└── segment_018.ts

Her 10 saniyede bir yeni segment indirilir. 30.000 kullanıcı = saniyede 3.000 segment isteği!

CDN Olmadan (Şu Anki Durum)

  • Tüm HLS segmentleri ana sunucudan
  • 3.000 req/sn → Sunucu çöker
  • Bandwidth: 2.4 Gbps gerekli
  • 693MB HLS sürekli okunuyor

CDN İle (Cloudflare)

  • Segmentler 200+ edge sunucuda
  • Ana sunucuya sadece %5 istek
  • Bandwidth: CDN karşılıyor
  • DDoS koruması dahil

Cloudflare Ne Yapacak?

1. DNS Yönetimi

muzibu.com domain'ini Cloudflare üzerinden yöneteceksin. Tüm trafik önce Cloudflare'den geçecek.

2. Static Asset Cache

CSS, JS, resimler, HLS segmentleri otomatik cache'lenir. Kullanıcı en yakın edge sunucudan alır.

3. DDoS Koruması

Saldırılar Cloudflare'de filtrelenir. Ana sunucuna temiz trafik gelir.

4. SSL/HTTPS

Ücretsiz SSL sertifikası. HTTPS zorunlu yönlendirme.

Önerilen Cloudflare Ayarları

Caching Level Standard
Browser Cache TTL 1 year (HLS için)
Edge Cache TTL 1 month
Cache Everything (Page Rule) /storage/*/hls/*
Polish (Image Optimization) Lossy (Pro plan)

3 Sunucu Yeterli Mi?

Mevcut Sunucu Durumu

8
CPU Core
31 GB
RAM
77 GB
Disk
Redis
Cache/Session

30.000 Kullanıcı Hesaplama

Metrik CDN Olmadan CDN İle
HLS Segment İsteği 3.000/sn (sunucu) ~150/sn (sunucu)
Bandwidth 2.4 Gbps ~120 Mbps
API İstekleri ~500/sn ~500/sn
DB Queries ~2.000/sn ~500/sn (cache)
Gereken Sunucu 10+ sunucu 2-3 sunucu

Sonuç: 3 Sunucu YETERLİ (CDN ile)

Cloudflare CDN + Redis cache + 3 sunucu (Load Balanced) ile 30.000 eşzamanlı kullanıcı rahat kaldırılır. CDN olmadan aynı iş için 10+ sunucu gerekir.

Önerilen Mimari

┌─────────────────────────────────────────────────────────────────────────┐
│                            KULLANICILAR                                  │
│                    (30.000 eşzamanlı dinleyici)                         │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                         CLOUDFLARE CDN                                   │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐    │
│  │   İstanbul  │  │  Frankfurt  │  │   Londra    │  │   Diğer     │    │
│  │   Edge      │  │   Edge      │  │   Edge      │  │   200+ Edge │    │
│  └─────────────┘  └─────────────┘  └─────────────┘  └─────────────┘    │
│                                                                          │
│  Cache: HLS segments, CSS, JS, Images                                   │
│  DDoS Protection, SSL/TLS, WAF                                          │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼ (Sadece cache miss + API)
┌─────────────────────────────────────────────────────────────────────────┐
│                        LOAD BALANCER                                     │
│                    (HAProxy veya Nginx)                                  │
└─────────────────────────────────────────────────────────────────────────┘
                    │               │               │
                    ▼               ▼               ▼
            ┌───────────┐   ┌───────────┐   ┌───────────┐
            │  WEB 1    │   │  WEB 2    │   │  WEB 3    │
            │  Laravel  │   │  Laravel  │   │  Laravel  │
            │  PHP-FPM  │   │  PHP-FPM  │   │  PHP-FPM  │
            │  8 CPU    │   │  8 CPU    │   │  8 CPU    │
            │  16GB RAM │   │  16GB RAM │   │  16GB RAM │
            └───────────┘   └───────────┘   └───────────┘
                    │               │               │
                    └───────────────┼───────────────┘
                                    │
            ┌───────────────────────┼───────────────────────┐
            │                       │                       │
            ▼                       ▼                       ▼
    ┌───────────────┐      ┌───────────────┐      ┌───────────────┐
    │    REDIS      │      │   MYSQL       │      │  SHARED       │
    │   Cluster     │      │  Primary +    │      │  STORAGE      │
    │               │      │  Read Replica │      │  (HLS Files)  │
    │  - Sessions   │      │               │      │  - NFS/GlusterFS
    │  - Cache      │      │  - tuufi_4ekim│      │  - veya S3    │
    │  - Queues     │      │  - tenant_*   │      │               │
    └───────────────┘      └───────────────┘      └───────────────┘
                    

Web Sunucuları (x3)

  • • 8 vCPU
  • • 16 GB RAM
  • • 100 GB SSD
  • • PHP 8.3 + OPcache
  • • Nginx + PHP-FPM

Database Sunucu

  • • 8 vCPU
  • • 32 GB RAM
  • • 500 GB NVMe SSD
  • • MySQL 8 / MariaDB
  • • Read Replica (opsiyonel)

Redis Sunucu

  • • 4 vCPU
  • • 16 GB RAM
  • • Redis 7+
  • • Sentinel (HA için)
  • • Sessions + Cache + Queues

Yapılacaklar Listesi

Phase 1: Cloudflare Kurulumu (1-2 gün)

Phase 2: Kod Optimizasyonları (1 hafta)

Phase 3: Multi-Server Kurulum (2-3 gün)

Phase 4: Test & Monitoring

Aylık Maliyet Tahmini

Kalem Detay Aylık
Cloudflare Pro CDN + DDoS + WAF $20
Web Sunucu x3 8 vCPU, 16GB RAM $150-300
Database Sunucu 8 vCPU, 32GB RAM $100-200
Redis Sunucu 4 vCPU, 16GB RAM $50-100
Load Balancer Managed veya VM $20-50
TOPLAM $340-670/ay

* Fiyatlar cloud provider'a göre değişir (Hetzner, DigitalOcean, AWS, vb.)