N11 TalentHub E-Ticaret Platformu — Mikroservis Mimarisi
Proje Hakkında
Bu, N11 TalentHub Java & React Bootcamp bitirme projem - mikroservis mimarisiyle inşa edilmiş, kurumsal seviye yazılım geliştirme pratiklerini uçtan uca gösteren, tam işlevsel bir e-ticaret uygulaması.
Sistem, her biri kendi PostgreSQL şemasına sahip, JWT token''larını paylaşılan bir secret ile bağımsız olarak doğrulayan, kendi Swagger UI''ını sunan ve kendi Docker container''ında çalışan 4 bağımsız Spring Boot mikroservisinden oluşuyor: Auth, Product, Cart ve Order. Bir React (Vite + Tailwind CSS) frontend, bu dört servise NGINX reverse proxy üzerinden erişiyor; NGINX aynı zamanda routing ve statik dosya sunumunu da üstleniyor.
Auth Service, kayıt, giriş ve JWT yaşam döngüsü yönetimini üstleniyor - HS512 imzalama ile kısa ömürlü access token''lar (15 dakika) ve daha uzun ömürlü refresh token''lar (7 gün) veriyor. Güvenlik tamamen stateless: session saklama yok, BCrypt şifre hash''leme, rol tabanlı yetkilendirme (ROLE_USER / ROLE_ADMIN), ve sadece frontend origin''ine kilitli CORS - her servis, Auth Service''e geri dönmeden token''ı bağımsız olarak doğrulayabiliyor.
Product Service, tam CRUD, sayfalama, arama ve kategori filtresiyle katalog yönetiyor. Cart Service, yüksek hızlı okuma/yazma için Redis destekli - kullanıcı kimliğini bir userId parametresi yerine doğrudan JWT''den çıkarıyor. Order Service, tam sipariş yaşam döngüsünü (PENDING → PAID → SHIPPED → DELIVERED, bir de CANCELLED dalı) yönetiyor ve Iyzico ödeme geçidini (sandbox) entegre ediyor - ödemeyi başlatıp, ödeme tamamlandığında bir webhook callback''i ile sipariş durumunu güncelliyor.
Her servis tutarlı bir yanıt zarfı döndürüyor ({success, message, data, timestamp}) ve kendini Swagger/OpenAPI 3 ile dokümante ediyor, böylece herhangi bir endpoint, Bearer token ile yetkilendirdikten sonra doğrudan tarayıcıdan test edilebiliyor.
Tüm yığın, her backend servisi için çok aşamalı bir Dockerfile (Maven build aşaması, sonra hafif bir JRE runtime imajı) ile container''laştırıldı ve tek bir docker-compose up -d komutuyla yerel olarak orkestre ediliyor. Bir GitHub Actions CI pipeline''ı her push ve pull request''te hem backend hem frontend''i build edip test ediyor; ayrı bir CD pipeline''ı ise main''e her merge''de Docker imajlarını build edip GitHub Container Registry''ye gönderiyor.
Frontend tarafında, React Context global state''i yönetiyor (JWT ve kullanıcı bilgisi için AuthContext, sepet durumu için CartContext), React Router genel, kimlik doğrulamalı ve sadece-admin route''ları arasında client-side navigasyonu sağlıyor, her servis için ayrı bir Axios instance''ı, bir interceptor aracılığıyla her giden isteğe JWT''yi otomatik olarak ekliyor.
Test kapsamı, her servisin iş mantığı için unit testleri (JUnit 5 + Mockito), gerçek bir PostgreSQL instance''ı için TestContainers kullanan Spring Boot Test entegrasyon testlerini ve Vitest ile frontend testlerini kapsıyor.
Bu projeyi tipik bir bootcamp e-ticaret klonundan ayıran şey, monolit yerine bilinçli olarak mikroservis mimarisi seçimi, düz bir veritabanı tablosu yerine sepet performansı için Redis, sadece ana API yerine her tek serviste Swagger dokümantasyonu, manuel deploy yerine tam bir GitHub Actions CI/CD pipeline''ı, çok aşamalı Docker build''leri ve session tabanlı kimlik doğrulama yerine tamamen stateless JWT güvenliği.
