Çoğu Laravel uygulaması çalışıyor. Route’lar yanıt veriyor, veriler kaydediliyor, kullanıcılar oturum açabiliyor. Framework bunu yönetiyor.
Fakat zor sorular gelir. İşlemin değiştirilmediğini kanıtlayabilir misiniz? Ya da: bir toplu işlem gece 5,000 iş gönderdiğinde ne olur? Ya da: üçüncü taraf API’miz kapandığında kullanıcılarımıza ne olur?
Bu sorular, çalışan bir Laravel uygulaması ile dayanıklı olan bir uygulama arasındaki farkı belirler.
Bu seri, bu sorular sorulduktan sonra, bir şeyler yanlış gittikten sonra ve orijinal mimarinin başa çıkamayacağı bir şekilde gereksinimlerin değiştiği zaman gerçek üretim kodundan oluşmaktadır. Her desen, gerçek baskı altındaki gerçek sistemlerden gelmektedir: fintech, düzenlemelere tabi ortamlar, “çalışıyor” cevabının yeterli olmadığı yerler.
Bunu kimler için? Laravel’i üretime taşıdınız. Framework’ü biliyorsunuz. Artık sisteminizi ciddileştirmek, denetimlere hazır, yük altında güvenilir ve inceleme altında savunulabilir hale getirmeniz isteniyor. Bu desenlerin arkasındaki mantığı öğrenmek, yalnızca kopyalamak için değil, onu uyarlamak istemektesiniz.
Gereksinimler: PHP 8.0+ ve Laravel 9+ her dört bölüm için. 4. bölüm
Illuminate\Support\Facades\Contextkullanır, bu da Laravel 11 gerektirir – daha eski sürümler için uyumlu bir alternatif bu makalede gösterilmektedir.Kapsam hakkında: Bu desenler belirli üretim ortamlarından geldi ve belirli tercihleri yansıtmaktadır. Bunlar belgelenmiş kararlar olup evrensel reçeteler değildir. Her makalede tercih edilen seçimler belirtilir ve yaygın hatalar etiketlenir, böylece kendi bağlamınız için bilinçli bir seçim yapabilirsiniz.
Dört Bölüm
Dört Bölüm
Bölüm 1 — Denetim İzleri: Unutmayacak Bir Sistem Kurmak
Bölüm 1 — Denetim İzleri: Unutmayacak Bir Sistem Kurmak
~10 dk okuma · Uyum · Model günlüğü · İstek izleme
Middleware’de oluşturulan bir istek kimliği, o isteğe ait her log satırında otomatik olarak görünür. Alan düzeyinde model farklılıkları, neyin ne değerden neye değiştiğini yakalar; yalnızca bir kaydın güncellendiğini belirtmez. Hızlı kalması için segmentlenmiş sadece ek işlevselliği olan log dosyaları. İzin kontrol hatalarını olay olmadan önce kaydeden bir Gate hook.
Bir veritabanı denetim tablosu değişkendir. Sadece eklenebilir dosyalar değildir. Bir cümle tüm mimariyi şekillendirir.
Bölüm 2 — Kuyruk Mimarisi: Dayanıklı Arka Plan Çalışması Tasarlamak
Bölüm 2 — Kuyruk Mimarisi: Dayanıklı Arka Plan Çalışması Tasarlamak
~9 dk okuma · Kuyruk tasarımı · İş mimarisi · Arka plan işleme
Eloquent modelini bir iş yapıcıya göndermenin yanlış bir çağrı olduğuna ve bunun yerine ne geçirmeniz gerektiğine dair açıklamalar. Bir sorunun sizi zorlamadan önce kuyruk topolojisini nasıl tasarlayabileceğiniz. Geçici, oran sınırlı ve kalıcı hatalara uygun yeniden deneme stratejileri. Yazım sırasında meydana gelen bir çöküşü atlatacak şekilde dosya işlemleri.
Bir şifre sıfırlama e-postasının bir video sıkıştırma işinin arkasında takılması, bir kuyruk sorunu değil. Bu bir topoloji sorunudur.
Bölüm 3 — Güvenli Dosya Yüklemeleri: Yedi Kontrol ve Her Birinin Neden Bulunduğu
Bölüm 3 — Güvenli Dosya Yüklemeleri: Yedi Kontrol ve Her Birinin Neden Bulunduğu
~9 dk okuma · Güvenlik · Middleware · Dosya yönetimi
Her yüklenen dosyanın yedi bağımsız özelliğini doğrulayan bir middleware; her birinin adı ve açıklaması bulunmaktadır. Sunucu tarafı MIME tespiti finfo kullanarak – tarayıcının iddiasını değil. Kullanıcı kontrolündeki dizgeyi dosya sistemi yollarından tamamen çıkaran bir benzersiz adlandırma stratejisi. Yüklenen hiçbir dosyanın HTTP aracılığıyla doğrudan erişilebilir olmadığı bir depolama deseni.
getClientMimeType() tarayıcının gönderdiğini döndürür. finfo gerçek byte’ları okur. Bunlardan yalnızca biri bir güvenlik kontrolüdür.
Bölüm 4 — Dış API Güvenilirliği: Sistemleri Kapandığında
Bölüm 4 — Dış API Güvenilirliği: Sistemleri Kapandığında
~9 dk okuma · Entegrasyon mimarisi · Dayanıklılık · Hata toleransı
Başarısız olan veya başarısız olmak üzere tasarlanmış durum karar vericisini modelde açıkça yapan bir trait. Dışarıda tamamlanan fakat yerel olarak başarısız olan işlemler için geri alma yolu. İdempotans sorusu ve bunun dış API’nin isteği kabul ettiği durumda veritabanı yazmanın başarısızlığı ile neden önemli olduğu.
2’yi 3’e 2’ye bağla dışarıdan gelebilecek bir problemlere karşı sisteminizin tasarlanmış bir yanıtı var mı yoksa doğaçlama bir yanıtı mı var?
Her makale kendi başına bir anlama sahiptir. Fakat başlangıçtan okuyorsanız, Bölüm 1 her sonraki bölümde bir iplik gibi akan bir istek kimliği kurmaktadır.
Kaynak: Orijinal Makale


