Published
mikroservis tabanlı e ticaret sitesi
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAl0AAAEsCAYAAAD5FAbSAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUATWljcm9zb2Z0IE9mZmljZX/tNXEAAP+QSURBVHhe7H0HgGRHde3p3JNzzjM7m7PCKmchJDIIbLAIxmAwOPEdvw3m2+bbOGDs70AGgzAZESQkkIRyWEmb887u5Jxz6vjPqddvpne0K23oXY2W92C0M93v1au6VXXr1LmhvHFecC5HAo4EHAk4EnAk4EjAkYAjgZRI4I//+I/xne98B0VFRQiFQvD5fObHm5LSnUIcCTgScCTgSMCRgCMBRwKOBIwEIpEI8vLy8IEPfADPPvssduzY4YAuZ2w4EnAk4EjAkYAjAUcCjgRSLYFYLIbq6mq43W7z74EDByDDYsqYrmg0irm5ebhcLgvlRYFY
- Role
- Full Stack Engineer


Kullanılan Teknolojiler
- Mimari Desenler: Microservices, Event-Driven, Clean Architecture, CQRS, API Gateway
- Veri Tabanı: SQL Server, MongoDB, Redis Cache
- Güvenlik: Duende IdentityServer, JWT, Identity Security
- İletişim: Senkron: HTTP API — Asenkron: RabbitMQ
Sistem Mimarisi

- Front-end Katmanı: Kullanıcı ve Admin arayüzleri bulunur ve Tüm istekler Gateway üzerinden iletilir
- Gateway Katmanı (Ocelot): Merkezi yönlendirme, Kolay bakım ve rate limiting
- Mikroservis Katmanı: 11 tane bağımsız mikroservis
Identity Mikroservis
- Duende IdentityServer: Kayıt, giriş ve token işlemleri merkezi olarak yönetildi.
- OpenID Connect ve JWT: Güvenli kimlik doğrulama altyapısı kuruldu.
- Rol ve Claim Yetkilendirmesi: Kullanıcı ve Admin rollerine göre erişim kontrolü sağlandı.
IdentityServer – Config.cs Dosyası
Config.cs dosyası, IdentityServer’ın yetkilendirme haritasıdır. Mikroservislerin hangi scope’larla korunacağı, kullanıcıların hangi servislere erişebileceği ve token içine eklenecek claim’ler bu dosyada tanımlandı.
- ApiResource: Mikroservis isimleri ve bu servislerin kullanacağı yetkiler tanımlandı.
- ApiScopes: Her mikroservis için gerekli erişim izinleri belirlendi.
- Client: Kullanıcı tipleri, erişebilecekleri servisler ve kullanabilecekleri scope’lar tanımlandı.
Sepet ve Kargo Mikroservisleri
- Basket Mikroservisi: N-Tier mimariyle geliştirildi. Sepet verileri Redis’te tutuldu ve ödeme sonrasında RabbitMQ eventiyle otomatik olarak temizlendi.
- Cargo Mikroservisi: Onion Architecture ve Repository Pattern kullanıldı. Kargo süreçleri yönetildi ve SignalR ile anlık iletişim sağlandı.
Catalog ve Comment Mikroservisleri
- Catalog Mikroservisi: Ürün ve kategori işlemleri MongoDB ile yönetildi. Ürün görselleri ve katalog verileri NoSQL yapısında saklandı.
- Comment Mikroservisi: Ürün yorumlama ve puanlama işlemleri gerçekleştirildi. Yorumları listeleme anonim erişime açılırken yorum oluşturma işlemi claim bazlı yetkilendirmeyle korundu.
Contact ve Discount Mikroservisleri
- Contact Mikroservisi: Kullanıcıların giriş yapmadan iletişim formu üzerinden mesaj göndermesi sağlandı.
- Discount Mikroservisi: İndirim kuponları bu servis üzerinden yönetildi ve veri erişiminde Dapper kullanıldı.
Order ve Payment Mikroservisleri
- Order Mikroservisi: Adres ve kullanıcı bilgileri birleştirilerek sipariş oluşturma süreci yönetildi. CQRS Pattern ile okuma ve yazma işlemleri ayrıştırıldı.
- Payment Mikroservisi: Ödeme işlemleri yönetildi. Ödeme tamamlandığında RabbitMQ üzerinden event yayımlanarak diğer servisler asenkron biçimde tetiklendi.
Invoice Mikroservisi
- Event Tüketimi: Payment servisinin yayımladığı ödeme onay eventi dinlendi.
- Fatura Oluşturma: Event içerisindeki sipariş bilgileri kullanılarak otomatik fatura oluşturuldu ve kaydedildi. Event-Driven Architecture sayesinde servisler birbirinden bağımsız çalıştırıldı.
RabbitMQ ile Asenkron İletişim Akışı
- Ödeme Tamamlandı: Kullanıcı ödeme işlemini başarıyla gerçekleştirdi.
- Event Yayımlandı: Payment servisi RabbitMQ üzerinden ödeme onay eventi yayımladı.
- Invoice Eventi Tüketti: Invoice servisi eventi alarak fatura oluşturma işlemini başlattı.
- Fatura Oluşturuldu: Fatura kaydedildi ve yeni bir bilgilendirme eventi yayımlandı.
- Mail Servisi Eventi Tüketti: Mail servisi fatura bilgilerini içeren eventi aldı.
- Kullanıcı Bilgilendirildi: Kullanıcıya fatura bilgilerini içeren bir e-posta gönderildi.