Bu makalede, gerçek müşteri sistemleri oluştururken edindiğimiz altı Laravel performans dersi paylaşacağım. Eloquent sorguları, önbellekleme, kod yapısı, son tarihler ve iletişim gibi unsurların, uygulamaları nasıl inşa ettiğimiz ve bakımını yaptığımız üzerindeki etkilerini ele alacağız.
Başlangıçta bir sorun fark etmemiştik.
Uygulama çalışıyordu, yanıtlar gayet iyiydi ve geliştirme sırasında her şey temiz görünüyordu.
Sonra gerçek kullanıcılar her gün kullanmaya başladı.
API’ler yavaşladı, paneller yüklenmekte daha uzun sürdü ve küçük verimsizlikler birikmeye başladı.
O zaman anladık ki, sorunların çoğu altyapıyla ilgili değil. Bizim Laravel’de işleri nasıl inşa ettiğimizle ilgiliydi.
Küçük bir ekiple Laravel projeleri üzerinde çalışıyorum, çoğunlukla bu sistemlere günlük operasyonları için bağımlı olan şirketlerle çalışıyoruz, ve bunlar bizim zor yoldan öğrendiğimiz bazı dersler.
1. Eloquent kullanımı kolay ama kötüye kullanılması da kolay
1. Eloquent kullanımı kolay ama kötüye kullanılması da kolay
Eloquent, özellikle erken aşamalarda hızlı ilerlemeyi çok kolaylaştırıyor.
Problemi, altındaki süreçleri göz ardı etmeyi de kolaylaştırması.
Belirli durumlarda, beklenenin altında kalan uç noktalarla karşılaştık çünkü:
- ilişkilerin döngüler içinde yüklenmesi
- çok fazla sorgu yürütülmesi
- gerekenden fazla veri döndürülmesi
Çözümü karmaşık değildi. Sorgular üzerinde daha dikkatli olmak yeterli oldu.
$users = User::with('roles')->get();Sorguları dikkatlice kontrol etmeye başladığımızda, performans hemen iyileşti.
2. Çoğu yavaş API altyapı problemleri değildir
2. Çoğu yavaş API altyapı problemleri değildir
Bir noktada, sunucuları yükseltmemiz gerektiğini düşündük.
Ancak sorun bizim kodumuzdaydı.
Karşılaştığımız bazı yaygın problemler şunlardı:
- veritabanı indekslerinin eksik olması
- aynı veriler için tekrar eden sorgular
- gereksiz verilerin alınması
Bunları temizledikten sonra, yanıt süreleri altyapıyı değiştirmeden iyileşti.
Bu durum, optimizasyonun genellikle uygulama seviyesinde başladığını hatırlatıyordu.
3. Önbellekleme başlangıçta opsiyonel görünüyordu ta ki bu durum değişene dek
3. Önbellekleme başlangıçta opsiyonel görünüyordu ta ki bu durum değişene dek
Geliştirme sırasında, önbellek olmadan her şey yolundaydı.
Gerçek kullanım başladığında, özellikle paneller ve raporlar üzerinde, fark ortaya çıktı.
Her seferinde yeniden hesaplanması gerekmeyen veriler için önbellek eklemeye başladık.
Cache::remember('dashboard_stats', 60, function () {
return $this->getStats();
});Basit bir önbellekleme uygulaması bile performansı belirgin bir şekilde artırdı ve veritabanı yükünü azalttı.
4. Yapı projenin büyüdüğünde önemlidir
4. Yapı projenin büyüdüğünde önemlidir
Küçük özellikler için, mantığı kontrolörlerde tutmak işi görüyordu.
Sistem büyüdükçe, yönetmesi ve anlaması daha zor hale geldi.
Tam bir yeniden yazma yapmadık. Bu daha çok kademeli bir süreçti.
Bir şey karmaşık hale geldiğinde, mantığı hizmetlere taşıdık veya daha küçük parçalara böldük.
Bu, kod tabanını bakımı daha kolay hale getirdi, özellikle birden fazla geliştirici üzerinde çalışıyorsa.
5. Son tarihler “temiz kod” düşüncenizi değiştirir
5. Son tarihler “temiz kod” düşüncenizi değiştirir
Kendi projelerinizde, her şeyin tam olmasına zaman ayırabilirsiniz.
Müşteri işlerinde, zaman dilimleri hesaplamanın bir parçasıdır.
Bazen odak:
- biri çalışır hale getirmek
- istikrarlı olmasını sağlamak
- ileride geliştirmek için zaman bulmak
Her şeyi baştan mükemmel hale getirmekten ziyade, takas yapma noktalarını düşünmeye başlarsınız.
6. İletişim, akıllı koddan daha fazla zaman kazandırır
6. İletişim, akıllı koddan daha fazla zaman kazandırır
Beklenenden daha fazla fark yaratan bir unsursa iletişim oldu.
Çoğu sorun teknik değildi. Belirsiz gerekliliklerden veya varsayımlardan kaynaklanıyordu.
Şeyleri erken netleştirmek için zaman ayırmak, daha sonra yeniden iş yapmaktan kaçınmaya yardımcı oldu.
Birçok durumda, net olmak, daha karmaşık bir çözüm bulmaktan daha fazla zaman kazandırdı.
Tüm bunlardan ne öğrendik?
Tüm bunlardan ne öğrendik?
Gerçek müşteri sistemleri üzerinde çalışmak, Laravel projelerine yaklaşımımızı değiştirdi.
Her zaman eğitimlerde gösterilmeyen performans, yapı ve iletişim gibi şeylere dikkat etmeye başlıyorsunuz.
Hala ilerledikçe bazı şeyleri araştırmaya devam ediyoruz, ama şu ana kadar büyük fark yaratanlar bunlar oldu.
Benzin bazı projelerde çalışıyorsanız, eğitimlerden gerçek sistemlere geçtiğinizde nelerin ön plana çıktığı konusunda merak ettikleriniz olabilir.
Gerçek dünya kullanımı için sistemler inşa etme ve bakımını yapma yaklaşımımızı merak ediyorsanız, yaptıklarımıza buradan göz atabilirsiniz:
Kaynak: Orijinal Makale
- 1. Eloquent kullanımı kolay ama kötüye kullanılması da kolay
- 2. Çoğu yavaş API altyapı problemleri değildir
- 3. Önbellekleme başlangıçta opsiyonel görünüyordu ta ki bu durum değişene dek
- 4. Yapı projenin büyüdüğünde önemlidir
- 5. Son tarihler “temiz kod” düşüncenizi değiştirir
- 6. İletişim, akıllı koddan daha fazla zaman kazandırır
- Tüm bunlardan ne öğrendik?


