php dünyasında “iki route yazdım, eloquent’la tabloya bağlandım, artisan serve dedim; yazılım mimarı oldum” etkisi yaratan ama doğru kullanıldığında gerçekten çok güçlü olan web uygulama çatısıdır.
önce ne olduğundan başlayalım:
laravel; routing, dependency injection, middleware, authentication, authorization, validation, database migration, orm, queue, event, cache, mail, notification, scheduler ve test gibi bir web uygulamasında sürekli ihtiyaç duyulan işleri belirli bir düzen içinde sunar.
yani size yalnızca kod yazdırmaz, kodu nereye ve nasıl yazmanız gerektiği konusunda da bir yol önerir.
artisan vardır, işinizi hızlandırır.
eloquent vardır, veritabanıyla çalışmayı kolaylaştırır.
blade vardır, sunucu tarafında arayüz üretirsiniz.
queue ve job yapısı vardır, uzun süren işleri kullanıcı isteğinden ayırırsınız.
migration vardır, veritabanı değişikliklerini “abi production’a şu sql’i bir çalıştırıver” seviyesinden çıkarır.
event, listener, policy, middleware, service container gibi yapılar vardır. bunları doğru kullanırsanız düzenli, test edilebilir ve büyütülebilir bir uygulama geliştirebilirsiniz.
peki laravel ne değildir?
laravel wordpress değildir.
kurup tema seçerek her işi çözeceğiniz bir içerik yönetim sistemi değildir.
frontend framework değildir.
react, vue veya angular’ın alternatifi değildir.
microservice mimarisi değildir.
performans problemi olan her sistemi kurtaran sihirli değnek hiç değildir.
bir de en önemlisi: laravel yazılım mühendisliğinin yerine geçmez.
eloquent kullanıyor olmanız veritabanı bildiğiniz anlamına gelmez. her ilişkiye `with()` eklemek sizi n+1 probleminden otomatik olarak kurtarmaz. index bilmeden, sorgu planı okumadan ve transaction mantığını anlamadan gayet şık görünen ama yük altında dağılan bir sistem yapabilirsiniz.
queue’ya iş atmanız asenkron mimari kurduğunuz anlamına gelmez. job iki kere çalışırsa ne olacağını düşünmediyseniz aynı faturayı iki kere kesebilir, aynı bildirimi beş kere gönderebilir veya aynı ödemeyi tekrar işleyebilirsiniz.
service class açmanız da clean architecture yaptığınız anlamına gelmez. controller’daki 800 satırı service klasörüne taşıdığınızda mimari kurmuş olmazsınız; yalnızca dağınıklığın adresini değiştirmiş olursunuz.
repository diye bir klasör açıp eloquent’ın bütün metotlarını tekrar sarmalamak da kurumsal yazılım değildir. çoğu zaman gereksiz soyutlama ve bol miktarda boilerplate’tir.
laravel’in en büyük avantajı sizi hızlandırmasıdır.
en büyük tehlikesi de yine budur.
ne yaptığını bilen bir geliştiricinin elinde birkaç haftalık işi birkaç güne indirebilir. ne yaptığını bilmeyen birinin elindeyse hatalı veritabanı tasarımını, güvenlik açığını ve teknik borcu aynı hızla production’a taşır.
“laravel yavaş” diyenlerin önemli bir kısmında her kayıt için ayrı sorgu çalışan kod, yanlış cache kullanımı, optimize edilmemiş composer autoload, development ayarlarıyla çalışan production ortamı ve index görmemiş tablolar bulunur.
sonra suç framework’e kalır.
öte yandan laravel’i her projeye sokmaya çalışmak da anlamsızdır. iki endpoint’lik küçük bir servis için bütün ekosistemi taşımaya gerek olmayabilir. çok özel düşük gecikme ihtiyaçlarında başka teknoloji daha mantıklı olabilir. yoğun işlem yapan gerçek zamanlı sistemlerde farklı mimariler gerekebilir.
teknoloji seçimi taraftarlık değildir.
ihtiyaç meselesidir.
shared hosting tarafında da ayrı bir gerçek var. laravel çalışır ama `public` dizini, `.env`, storage izinleri, symlink, cron, queue worker ve deployment gibi konular doğru yönetilmezse insanı hayattan soğutabilir.
bu laravel’in kötü olduğu anlamına gelmez.
30 liralık shared hosting’in modern uygulama çalıştırmak için tasarlanmamış olduğu anlamına gelir.
özetle laravel iyi bir framework’tür.
ama sizi yazılımcı yapmaz.
php’yi, http’yi, veritabanını, güvenliği, cache’i, queue mantığını ve deployment süreçlerini biliyorsanız işinizi ciddi biçimde hızlandırır.
bunları bilmiyorsanız da gayet düzenli klasörler içinde çalışan büyük bir problem üretmenize yardımcı olur.
framework size yolu gösterir.
arabayı yine sizin kullanmanız gerekir.
bu kategoride başlık yok.
yükleniyor…
yükleniyor…
tanım eklemek için giriş yapmalısın.