Zero-downtime deployment
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
-
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.
-
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"]); -
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