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
/tmpdışında dosya sistemi yazılabilir değildir. Yani cache, logs gibi dosyalar içinAPP_STORAGE=/tmpkullanı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ı!
