- 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.