Laravel ile Serverless Mimaride AWS Lambda Kullanımı

L

Modern web uygulamalarında esneklik, ölçeklenebilirlik ve maliyet optimizasyonu artık bir lüks değil, gereklilik. Serverless mimari, geleneksel sunucuya bağımlı uygulamalardan sıyrılarak sadece ihtiyaç duyulan kaynak kadar ödeme yapmayı mümkün kılar. Bu yazıda, Laravel projelerini AWS Lambda üzerinde nasıl çalıştırabileceğimizi, karşılaşılan zorlukları ve çözümleri adım adım inceleyeceğiz.

Serverless Nedir?

Serverless (sunucusuz) aslında "sunucusuz" değil, sunucu yönetimi gerektirmeyen mimaridir. Sunucular elbette hâlâ vardır, ancak bu sunucuların yönetimi tamamen bulut servis sağlayıcısına aittir.

Avantajları:

  • Otomatik ölçeklenebilirlik

  • Kaynak israfını önleyen kullanım başına ücretlendirme

  • Kolay bakım

  • Geliştiricinin yalnızca iş mantığına odaklanmasını sağlar

Laravel Serverless Olabilir mi?

Laravel doğası gereği stateful ve monolitik bir yapıdadır. Fakat doğru yapılandırmalarla AWS Lambda gibi sunucusuz platformlarda çalıştırılabilir. Bunu sağlamak için Laravel’i stateless hale getirecek ara katmanlara ve özel çözümlere ihtiyaç duyarız.

AWS Lambda ile Laravel Entegrasyonu: Adım Adım

1. Neler Gerekli?

Öncelikle aşağıdaki ön koşulları sağlamamız gerekir:

  • AWS hesabı

  • AWS CLI kurulumu

  • Laravel projesi (örneğin: laravel new lambda-app)

  • Laravel için Serverless Framework

  • Bref paketi (Laravel'i Lambda'da çalıştırmak için)

2. Bref Nedir?

Bref, PHP uygulamalarını AWS Lambda'da kolayca çalıştırmak için kullanılan bir açık kaynaklı serverless framework’tür. Laravel gibi büyük framework’lerle uyumlu çalışır ve Lambda ortamına uygun PHP runtime sağlar.

3. Bref Kurulumu

Terminale şu komutları girerek Laravel projenize Bref’i dahil edin:

composer require bref/bref

Daha sonra .env dosyasına APP_STORAGE ve APP_ENV ayarlarını Lambda’ya göre uyarlayın:

APP_ENV=production
APP_STORAGE=/tmp

4. Serverless Framework Kurulumu

Serverless framework, Lambda fonksiyonlarını kolayca deploy edebilmek için kullanılır.

npm install -g serverless

Proje klasörünüzde serverless.yml adında bir dosya oluşturun:

service: laravel-lambda

provider:
  name: aws
  region: eu-west-1
  runtime: provided.al2
  environment:
    APP_ENV: production
    APP_STORAGE: /tmp
    LOG_CHANNEL: stderr

functions:
  web:
    handler: public/index.php
    timeout: 28
    layers:
      - ${bref:layer.php-82-fpm}
    events:
      - httpApi: '*'

plugins:
  - ./vendor/bref/bref

5. Laravel Projesini Lambda’ya Deploy Etme

Artık deploy işlemi için şu komutu çalıştırabilirsiniz:

serverless deploy

Başarılı bir deploy sonrasında size bir URL verilecektir. Bu URL, Laravel uygulamanızın AWS Lambda üzerinde çalıştığını gösterir.

6. Lambda Üzerinde Veritabanı Bağlantısı

Serverless uygulamalarda RDS gibi managed veritabanı çözümleriyle çalışmak mümkündür. config/database.php dosyanızda environment üzerinden gelen değerleri kullanarak veritabanı bağlantısını sağlayabilirsiniz.

.env:

DB_CONNECTION=mysql
DB_HOST=your-rds-endpoint.amazonaws.com
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=your_user
DB_PASSWORD=your_password

Performans ve Limitasyonlar

Dikkat edilmesi gereken bazı noktalar:

  • Lambda'nın /tmp dışında dosya sistemi yazılabilir değildir. Yani cache, logs gibi dosyalar için APP_STORAGE=/tmp kullanılmalı.

  • Lambda fonksiyonları 15 dakika sınırı ile çalışır.

  • Cold start problemi olabilir. Bunu azaltmak için Bref, AWS Lambda ile özel çözümler sunar.

Alternatifler

Eğer AWS Lambda sizin için uygun değilse, aşağıdaki alternatif çözümleri de inceleyebilirsiniz:

  • Vercel (Edge Functions)

  • Cloudflare Workers (Laravel uyumlu değildir ancak API’ler için uygundur)

  • Google Cloud Functions

  • Laravel Vapor (Laravel’in resmi serverless çözümüdür, ücretlidir)

Sonuç

Laravel projelerini AWS Lambda üzerinde çalıştırmak, modern yazılım mimarisine adım atmak isteyen geliştiriciler için harika bir fırsattır. Doğru yapılandırma ve araçlarla, Laravel’in monolitik yapısı bile serverless dünyasına entegre edilebilir.

Bu yazıda öğrendiklerimiz:

  • Serverless mimari nedir ve avantajları nelerdir?

  • Laravel ile AWS Lambda entegrasyonu nasıl yapılır?

  • Bref ve Serverless Framework ile uygulama deploy süreci

  • Karşılaşılabilecek zorluklar ve çözümleri

Laravel ile hem modernleşmek hem de maliyetleri düşürmek istiyorsanız, serverless dünyasına adım atmak tam zamanı!

By Aydın Yağız

Aydın Yağız

Teknolojiye olan tutkumla inovasyonu destekler, kullanıcı deneyimini önceliklerim arasına alırım. Kendi yeteneklerimi ve bilgilerimi paylaşarak, daha geniş bir topluluğun faydalanmasını sağlarım. İş birliği içinde hareket ederek, geleceğin teknoloji dünyasına katkıda bulunmayı hedeflerim. Sizi de bu heyecan verici yolculuğa davet ediyor, fikirlerinizi paylaşmaya ve teknolojiye dair sınırları zorlamaya teşvik ediyorum. Birlikte büyüyelim ve yeni ufuklara açılalım!

İletişime Geçin

Kodlama dünyasına adım atın ve deneyimlerinizi paylaşın. Siz de bu aktif topluluğa katılarak yeni bağlantılar kurun, fikir alışverişinde bulunun ve bilgi birikiminizi artırın.

Özelleştir

Farklı yazı tipleri ve renk seçenekleriyle stilinizi kişiselleştirin. Aşağıdaki örneklerden birini deneyerek sizin için en uygun olanı seçin.

Yazı Tipi Örnekleri

Renk Örnekleri