Bir uygulamayı birden fazla müşteri (tenant) için tek bir kod tabanıyla yönetmek mi istiyorsunuz? Laravel ile multi-tenant mimariyi nasıl kurabileceğinizi adım adım anlatıyoruz!
Multi-tenancy, tek bir uygulamanın birden fazla kişi/organizasyon tarafından izole şekilde kullanılmasıdır.
Tenant’ı domain, subdomain veya kullanıcı girişine göre belirleyebilirsiniz.
// Middleware ile tenant'ı tespit etme public function handle($request, Closure $next) { $tenant = Tenant::where('domain', $request->getHost())->first(); if (!$tenant) { abort(404); } // Tenant'ı global bir helper'a atayabiliriz app()->instance('currentTenant', $tenant); return $next($request); }
config/database.php
’de dinamik bağlantı oluşturabilirsiniz:
'connections' => [ 'tenant' => [ 'driver' => 'mysql', 'url' => null, 'host' => env('DB_TENANT_HOST', '127.0.0.1'), 'port' => env('DB_TENANT_PORT', '3306'), 'database' => 'tenant_' . app('currentTenant')->id, // Dinamik DB adı 'username' => env('DB_TENANT_USERNAME', 'root'), 'password' => env('DB_TENANT_PASSWORD', ''), ], ];
Her tenant için farklı storage, cache ve config ayarları yapılabilir.
// Tenant'a geçiş yapma public function switchTenant(Tenant $tenant) { config(['database.default' => 'tenant']); Config::set('filesystems.disks.tenant.root', storage_path('app/tenants/' . $tenant->id)); // Cache prefix'i tenant'a özel yap config(['cache.prefix' => 'tenant_' . $tenant->id]); }
Multi-tenant mimari, SaaS projeleri için mükemmel bir çözüm! Laravel’in esnek yapısı sayesinde farklı yaklaşımlarla uygulanabilir.
Siz hangi yöntemi tercih ediyorsunuz? Yorumlarda deneyimlerinizi paylaşın! 👇💬
Bir sonraki yazımız: 🚀 [Laravel’de API Documentation: Swagger ile Otomatik Dokümantasyon] – API’nizi kolayca dokümante edin!**
#Laravel #MultiTenancy #SaaS #WebDevelopment #Backend 🚀