Laravel ile REST API geliştirirken dikkat edilmesi gereken 10 performans tüyosu

Laravel ile REST API geliştirirken dikkat edilmesi gereken 10 performans tüyosu

Modern web projelerinde REST API'ler, frontend ve mobil uygulamaların can damarı hâline geldi. Laravel, sunduğu esneklik ve kolay kullanımıyla API geliştirmede çok güçlü bir araç. Ancak büyük ölçekli projelerde doğru adımlar atılmazsa API performansı hızla düşebilir.

İşte Laravel ile REST API geliştirirken dikkat edilmesi gereken 10 kritik performans tüyosu:

1. Eager Loading Kullanın (N+1 Sorgularını Önleyin)

Laravel'de ilişkili verileri çekerken with() kullanarak eager loading yapmazsanız her kayıt için ayrı sorgu atılır.

Yanlış:

$posts = Post::all();
foreach ($posts as $post) {
    echo $post->user->name;
}

Doğru:

$posts = Post::with('user')->get();

2. Gereksiz Verileri Filtreleyin (select() kullanın)

Veritabanından * ile tüm sütunları çekmek yerine sadece ihtiyacınız olan sütunları alın.

Kötü:

User::all(); // tüm sütunları çeker

İyi:

User::select('id', 'name', 'email')->get();

3. Cache Kullanın (Response Cache, Query Cache, vs.)

Yoğun istek alan endpoint'leri cache’leyin.

return Cache::remember('popular_posts', 60, function () { return Post::with('user')->orderBy('views', 'desc')->take(10)->get(); });

Laravel'de response cache package da kullanabilirsiniz.

4. API Rate Limiting Uygulayın

Aşırı isteklere karşı throttling kullanmak hem performans hem de güvenlik için önemlidir.

Route::middleware('throttle:60,1')->group(function () { Route::get('/posts', 'Api\PostController@index'); });

5. Veri Sayfalandırması Kullanın (paginate())

Büyük veri setlerini all() ile çekmeyin. paginate() ya da cursorPaginate() kullanın.

Post::with('user')->paginate(10);

cursorPaginate() büyük verilerde daha performanslıdır.

6. Veritabanı İndekslemelerini Gözden Geçirin

Sorgularınızda kullanılan kolonlara index ekleyin (örneğin: email, user_id, created_at).

php artisan make:migration add_index_to_users_email
 
Schema::table('users', function (Blueprint $table) { $table->index('email'); });
 

7. Lazy Collection ve Chunk Kullanımı

Çok büyük veri setlerini işlerken tümünü belleğe yüklemek yerine lazy() veya chunk() ile parçalı çekin.

User::lazy()->each(function ($user) { // işlem });

8. Queue Sistemi Kullanın (Özellikle e-posta, bildirim, loglama için)

E-posta gönderimi gibi zaman alan işleri senkron yapmayın.

Mail::to($user)->queue(new WelcomeMail($user));

sync driver ile başlasanız bile ileri aşamada redis ile kolay geçiş yapılabilir.

9. Yapıyı Profiling Araçlarıyla Sürekli İzleyin

Her şeyin temeli: ölçmek. Laravel için önerilen araçlar:

  • Laravel Telescope (development için)

  • Laravel Debugbar

  • Clockwork

  • Blackfire veya Xdebug (derinlemesine profiling için)

Laravel ile güçlü ve bakımı kolay REST API’ler geliştirmek mümkün; ama bu işin temel taşı performans. Yukarıdaki tüyoları proje mimarinize göre uygulayarak hem kullanıcı deneyimini artırabilir hem de sistem kaynaklarını daha verimli kullanabilirsiniz.