Backend Genel Bakış (Backend Overview)
Bu kategori sunucu taraflı uygulama geliştirme için ihtiyaç duyulan framework, mimari ve araçları kapsar. Framework seçiminden mimari kararlara, API tasarımından deployment süreçlerine kadar pratik bilgiler için hazırlanmıştır.
Bu Kategoride Neler Var? (What's in This Category?)
Backend rehberleri beş ana alanı kapsar:
- Framework Rehberleri -- Laravel, ASP.NET Core, Node.js/Express, Django ve FastAPI ile uygulama geliştirme
- Mimari Yaklaşımlar (Architecture) -- Katmanlı mimari, design patterns, SOLID prensipleri, clean code
- API Tasarımı (API Design) -- RESTful API, GraphQL, WebSocket, authentication ve authorization
- Veritabanı Entegrasyonu (Database Integration) -- ORM kullanımı, migration, seeding, query optimizasyonu
- Deployment (Dağıtım) -- Docker, CI/CD, sunucu yapılandırma, production best practices
Framework Karşılaştırma Tablosu (Framework Comparison)
| Özellik | Laravel | Node.js / Express | ASP.NET Core | Django | FastAPI |
|---|---|---|---|---|---|
| Dil | PHP | JavaScript / TypeScript | C# | Python | Python |
| Paradigma | MVC (Full-stack) | Minimalist / Middleware | MVC + DI Container | MTV (Full-stack) | Async API-first |
| Öğrenme Eğrisi | Orta | Düşük-Orta | Yüksek | Orta | Düşük |
| ORM | Eloquent | Prisma / Sequelize / Mongoose | Entity Framework Core | Django ORM | SQLAlchemy / Tortoise |
| Auth | Sanctum, Passport, Breeze | Passport.js, JWT | Identity, JWT Bearer | django.contrib.auth | OAuth2 / JWT (manual) |
| Real-time | Broadcasting (Pusher/Soketi) | Socket.io (native async) | SignalR | Channels (limited) | WebSocket (native async) |
| Performans | Orta | Yüksek (async I/O) | Çok Yüksek | Orta | Çok Yüksek (async) |
| Hosting | Shared / VPS / Forge | VPS / Serverless / Vercel | Azure / VPS / Docker | VPS / Heroku / Docker | VPS / Docker / Serverless |
| İdeal Proje | Web app, CMS, SaaS MVP | Real-time API, microservice | Enterprise, kurumsal | Data-driven web app | ML API, yüksek performans API |
Ne Zaman Hangisi? (Decision Tree)
Projenizin ihtiyacına göre framework seçimi:
Hızlı MVP / Prototip
- Laravel -- Hazır authentication, admin panel (Filament/Nova), Eloquent ile hızlı CRUD. Küçük-orta ölçekli web uygulamaları için en hızlı geliştirme süreci.
Real-time API / Microservice
- Node.js / Express -- Asenkron I/O sayesinde WebSocket ve real-time işlemler için ideal. npm ekosistemi ile hızlı paket entegrasyonu. Microservice mimarisine doğal uyum.
Enterprise / Kurumsal Uygulama
- ASP.NET Core -- Güçlü tip sistemi, built-in dependency injection, yüksek performans. Büyük ekipler, karmaşık iş mantığı ve uzun ömürlü projeler için en sağlam seçim.
Veri Bilimi / ML Entegrasyonu
- Python (Django veya FastAPI) -- NumPy, Pandas, TensorFlow/PyTorch ekosistemine doğrudan erişim. Django veri yoğun web uygulamaları için, FastAPI yüksek performanslı ML model servisleri için tercih edilir.
Seçim Özeti (Selection Summary)
Projen ne gerektiriyor?
|
|-- Hızlı web app / MVP? --> Laravel
|-- Real-time / WebSocket? --> Node.js + Socket.io
|-- Kurumsal / büyük ekip? --> ASP.NET Core
|-- ML modeli serve etmek? --> FastAPI
|-- Data-driven web + admin? --> Django
|-- Hafif REST API? --> Express veya FastAPIMimari Yaklaşım Özeti (Architecture Summary)
Tüm framework'lerde ortak kullanılan katmanlı mimari yaklaşım:
Request --> Controller --> Service --> Repository --> Model/Entity --> Database
| | |
Validation Business Logic Data Access
Route Match Authorization Query Build
Response Caching Transaction| Katman | Sorumluluk | Örnek |
|---|---|---|
| Controller | HTTP isteği alır, validasyon yapar, response döner | UserController.store() |
| Service | İş mantığı, yetkilendirme, cache, 3rd-party entegrasyon | UserService.register() |
| Repository | Veritabanı erişimi, sorgu oluşturma, transaction | UserRepository.findByEmail() |
| Model / Entity | Veri yapısı, ilişki tanımları, accessor/mutator | User { name, email, role } |
Framework'lere Göre Katman Karşılığı (Layer Mapping per Framework)
| Katman | Laravel | ASP.NET Core | Node.js (Express) | Django | FastAPI |
|---|---|---|---|---|---|
| Controller | app/Http/Controllers | Controllers/ | routes/ veya controllers/ | views.py | Router fonksiyonları |
| Service | app/Services | Services/ | services/ | services.py (manual) | services/ |
| Repository | app/Repositories | Repositories/ | repositories/ | Manager (ORM) | repositories/ |
| Model | app/Models | Models/ + Data/ | models/ (Prisma schema) | models.py | models/ (SQLAlchemy) |
Detaylı mimari rehber, design patterns ve SOLID prensipleri için: Yazılım Mimarisi Rehberi
Rehber Haritası (Guide Map)
Bu kategorideki tüm rehberler ve içerikleri:
| Rehber | Kapsam | Seviye | Açıklama |
|---|---|---|---|
| Yazılım Mimarisi | Framework bağımsız | Orta-İleri | Katmanlı mimari, SOLID, design patterns, clean code, API tasarımı, güvenlik |
| Laravel Rehberi | PHP / Laravel | Başlangıç-Orta | MVC, Eloquent ORM, Blade, API, Sanctum auth, testing, deployment |
| ASP.NET Core Rehberi | C# / .NET | Orta-İleri | MVC, Entity Framework, Identity auth, SignalR, middleware, Azure deploy |
| Node.js Rehberi | JavaScript / TypeScript | Başlangıç-Orta | Express, npm, REST API, JWT auth, Socket.io, Prisma, testing |
| Python Rehberi | Python | Başlangıç-İleri | Django, FastAPI, Flask, NumPy, Pandas, Selenium, PyQt5, Pygame |
Önerilen Okuma Sırası (Recommended Reading Order)
Başlangıç seviyesindeyseniz:
- Yazılım Mimarisi -- Temel kavramları öğrenin (MVC, REST, SOLID)
- Bir framework seçin -- Yukarıdaki karar ağacına göre
- Seçtiğiniz framework rehberi -- Baştan sona uygulamalı çalışmalar
- Veritabanı rehberi -- Seçtiğiniz framework'ün ORM'i ile birlikte
Deneyimli geliştriciyseniz:
- İlgilendiğiniz framework rehberine doğrudan geçin
- Mimari rehberi referans olarak kullanın
- Farklı framework'leri karşılaştırmak için bu sayfadaki tabloları inceleyin
Terim Sözlüğü (Glossary)
Tüm backend framework'lerinde karşılaşacağınız temel kavramlar:
Mimari & Yapısal (Architecture)
| Terim | Açıklama | Örnek |
|---|---|---|
| MVC | Model-View-Controller — iş mantığı, görünüm ve veri katmanını ayıran mimari | Laravel, ASP.NET Core, Django |
| REST API | Representational State Transfer — HTTP üzerinden CRUD işlemleri yapan API standartı | GET /api/users, POST /api/users |
| Middleware | Request/response arasına giren filtreleme katmanı | Auth kontrolü, CORS, logging, rate limiting |
| Routing | URL yollarını controller/fonksiyonlara eşleştirme | /users/:id → UserController@show |
| Controller | HTTP isteklerini karşılayan, response döndüren katman | UserController, ProductController |
| Service | İş kurallarını içeren katman — controller ile model arasında | OrderService.calculateTotal() |
| Repository | Veritabanı sorgularını soyutlayan katman | UserRepository.findByEmail() |
| DTO | Data Transfer Object — katmanlar arası veri taşıma nesnesi | UserDTO { name, email } (model'in tamamını döndürmek yerine) |
| DI (Dependency Injection) | Bağımlılıkları dışarıdan enjekte etme — test edilebilirlik ve gevşek bağlantı | Constructor injection, interface binding |
| ORM | Object-Relational Mapping — veritabanı tablolarını sınıflara eşleştirme | Eloquent, EF Core, Prisma, Django ORM |
Veritabanı & Veri (Data)
| Terim | Açıklama | Örnek |
|---|---|---|
| Migration | Veritabanı şema değişikliklerini kod olarak yönetme — versiyon kontrolü | php artisan migrate, dotnet ef migrations add |
| Seeding | Test/demo verileri ile veritabanını doldurma | php artisan db:seed, factory pattern |
| Soft Delete | Veriyi silmek yerine deleted_at alanı ile işaretleme | Geri dönüşüm kutusu mantığı |
| Eager Loading | İlişkili verileri tek sorguda çekme — N+1 problemini önler | User::with('posts')->get() |
| N+1 Problem | Her kayıt için ayrı sorgu çalışma hatası — eager loading ile çözülür | 100 user = 1 + 100 sorgu (kötü) vs 2 sorgu (iyi) |
| Transaction | Birden fazla DB işlemini atomik yapma — ya hepsi ya hiçbiri | Transfer: bakiye düş + bakiye ekle |
| Index | Sorgu hızını artırmak için sütunlara oluşturulan arama yapısı | CREATE INDEX idx_email ON users(email) |
Güvenlik & Auth (Security)
| Terim | Açıklama | Örnek |
|---|---|---|
| Authentication (AuthN) | Kullanıcı kimlik doğrulama — "sen kimsin?" | Login, register, JWT token |
| Authorization (AuthZ) | Yetkilendirme — "bunu yapabilir misin?" | Role-based (admin/user), policy/gate |
| JWT | JSON Web Token — stateless token tabanlı kimlik doğrulama | header.payload.signature |
| OAuth 2.0 | Üçüncü parti login protokolü | Google/GitHub/Facebook ile giriş |
| CSRF | Cross-Site Request Forgery — form sahteciliği saldırısı | Token ile korunur |
| XSS | Cross-Site Scripting — zararlı script enjeksiyonu | Input sanitization + escaping |
| CORS | Cross-Origin Resource Sharing — farklı domain'den API erişim izni | Access-Control-Allow-Origin header |
| Rate Limiting | Belirli sürede maksimum istek sayısını sınırlama | 60 istek/dakika |
| Hashing | Tek yönlü şifreleme — şifreler hash'lenir, çözülemez | bcrypt, argon2 |
Performans & Ölçeklendirme (Performance)
| Terim | Açıklama | Örnek |
|---|---|---|
| Caching | Sık erişilen verileri önbelleğe alma | Redis, Memcached, HTTP cache |
| Queue / Job | Uzun süren işlemleri arka planda çalıştırma | Email gönderme, resim işleme, PDF oluşturma |
| Pagination | Büyük veri setlerini sayfalara bölme | ?page=2&per_page=20 |
| Load Balancing | Trafiği birden fazla sunucuya dağıtma | Nginx, HAProxy |
| Horizontal Scaling | Daha fazla sunucu ekleyerek ölçeklendirme | 1 sunucu → 5 sunucu |
Test (Testing)
| Terim | Açıklama | Örnek |
|---|---|---|
| Unit Test | Tek bir fonksiyon/method'u izole test etme | test_calculate_total() |
| Integration Test | Birden fazla bileşeni birlikte test etme | API endpoint + DB testi |
| E2E Test | Uygulamayı kullanıcı gibi uçtan uca test etme | Cypress, Playwright |
| Mock | Gerçek bağımlılık yerine sahte nesne kullanma | DB yerine in-memory, API yerine fake |
| Factory | Test verisi oluşturmak için şablon | User::factory()->count(10)->create() |
| TDD | Test-Driven Development — önce test yaz, sonra kodu yaz | Red → Green → Refactor |
İlgili Rehberler (Related Guides)
Backend
- Yazılım Mimarisi
- API Development
- Laravel Rehberi
- ASP.NET Core Guide
- Node.js Rehberi
- Python Rehberi
- AI & LLM