CodeBlanks Logo Icon CodeBlanks

Zero-downtime deployment

PHP kursu · Uzman · Ders 48/54

Sembolik link değiştirme ve atomic deploy ile sıfır kesintili dağıtımı öğrenirsin.

Sıfır kesintili dağıtım

Sıfır kesintili dağıtım (zero-downtime deploy), eski sürümü kapatmadan yeni sürümü devreye alır. Kullanıcılar hiçbir 502 veya zaman aşımı görmez.

Yaygın yöntem: her sürümü releases/2024-10-25 gibi ayrı dizine çıkar, current adlı sembolik linki (symlink) yeni dizine atomik biçimde çevir.

PHP'de symlink($target, $link) fonksiyonu sembolik link oluşturur; rename gibi atomiktir: ya hep ya hiç.

Health check uç noktası

Yeni sürümü aktif etmeden önce HealthCheck uç noktası çağrılır: veritabanı bağlantısı, önbellek, opcache hazır mı?

/health yolu 200 OK ve {"status":"ok"} döndürürse link değişir; değilse dağıtım durur ve rollback devreye girer.

Bu denetim, otomatik hattın canlılığın bozulmadığından emin olmasını sağlar; insan müdahalesi gerektirmez.

Uygulama HealthCheck ve deploy yaz

Bir HealthCheck sınıfı tanımla; içinde status() yöntemi "ok" döndürsün. Sonra deploy() fonksiyonu yaz: deploy: başladı yazdır, HealthCheck örneği yapıp health: ön ekiyle status() sonucunu yazdır, son olarak deploy: tamam yazdır. deploy() çağrısını ekle.

Örnek çözümü göster
string { return "ok"; } } yaz. Sonra function deploy(): void { echo "deploy: başladı\n"; $hc = new HealthCheck(); echo "health: " . $hc->status() . "\n"; echo "deploy: tamam\n"; } yaz. En son deploy(); çağrısı ekle.
Örnek çözüm:
<?php
// HealthCheck sınıfı ve deploy fonksiyonu
class HealthCheck {
    public function status(): string {
        return "ok";
    }
}

function deploy(): void {
    echo "deploy: başladı\n";
    $hc = new HealthCheck();
    echo "health: " . $hc->status() . "\n";
    echo "deploy: tamam\n";
}

deploy();

Kendini test et

  1. PHP'de sembolik link oluşturan fonksiyon hangisidir?

    • symlink
    • link
    • rename
    • mkdir
    Cevabı göster

    symlink — Doğru. symlink($target, $link) bir sembolik link oluşturur.

  2. symlink çağrısını tamamla

    <?php
    // Yeni sürüme geç
    ____('releases/2024-10-25', 'current');
    print_r(["link" => "current"]);
    
    Cevabı göster
    <?php
    // Yeni sürüme geç
    symlink('releases/2024-10-25', 'current');
    print_r(["link" => "current"]);
    
  3. Dağıtım kavramlarını eşleştir

    symlink
    Sembolik link oluşturur
    rollback
    Önceki sürüme döner
    atomic
    Bölünmez işlem
    health check
    Sağlık denetimi

Uzman bölümündeki tüm dersler