BMPortfolio
Back to projects

Published

mikroservis tabanlı e ticaret sitesi

Role
Full Stack Engineer
mikroservis tabanlı e ticaret sitesi project interface

Kullanılan Teknolojiler

    1. Mimari Desenler: Microservices, Event-Driven, Clean Architecture, CQRS, API Gateway
    2. Veri Tabanı: SQL Server, MongoDB, Redis Cache
    3. Güvenlik: Duende IdentityServer, JWT, Identity Security
    4. İletişim: Senkron: HTTP API — Asenkron: RabbitMQ

Sistem Mimarisi

    1. Front-end Katmanı: Kullanıcı ve Admin arayüzleri bulunur ve Tüm istekler Gateway üzerinden iletilir
    2. Gateway Katmanı (Ocelot): Merkezi yönlendirme, Kolay bakım ve rate limiting
    3. Mikroservis Katmanı: 11 tane bağımsız mikroservis

Identity Mikroservis

    1. Duende IdentityServer: Kayıt, giriş ve token işlemleri merkezi olarak yönetildi.
    2. OpenID Connect ve JWT: Güvenli kimlik doğrulama altyapısı kuruldu.
    3. 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ı.

    1. ApiResource: Mikroservis isimleri ve bu servislerin kullanacağı yetkiler tanımlandı.
    2. ApiScopes: Her mikroservis için gerekli erişim izinleri belirlendi.
    3. Client: Kullanıcı tipleri, erişebilecekleri servisler ve kullanabilecekleri scope’lar tanımlandı.

Sepet ve Kargo Mikroservisleri

    1. Basket Mikroservisi: N-Tier mimariyle geliştirildi. Sepet verileri Redis’te tutuldu ve ödeme sonrasında RabbitMQ eventiyle otomatik olarak temizlendi.
    2. 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

    1. Catalog Mikroservisi: Ürün ve kategori işlemleri MongoDB ile yönetildi. Ürün görselleri ve katalog verileri NoSQL yapısında saklandı.
    2. 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

    1. Contact Mikroservisi: Kullanıcıların giriş yapmadan iletişim formu üzerinden mesaj göndermesi sağlandı.
    2. Discount Mikroservisi: İndirim kuponları bu servis üzerinden yönetildi ve veri erişiminde Dapper kullanıldı.

Order ve Payment Mikroservisleri

    1. 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ı.
    2. Payment Mikroservisi: Ödeme işlemleri yönetildi. Ödeme tamamlandığında RabbitMQ üzerinden event yayımlanarak diğer servisler asenkron biçimde tetiklendi.

Invoice Mikroservisi

    1. Event Tüketimi: Payment servisinin yayımladığı ödeme onay eventi dinlendi.
    2. 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ışı

    1. Ödeme Tamamlandı: Kullanıcı ödeme işlemini başarıyla gerçekleştirdi.
    2. Event Yayımlandı: Payment servisi RabbitMQ üzerinden ödeme onay eventi yayımladı.
    3. Invoice Eventi Tüketti: Invoice servisi eventi alarak fatura oluşturma işlemini başlattı.
    4. Fatura Oluşturuldu: Fatura kaydedildi ve yeni bir bilgilendirme eventi yayımlandı.
    5. Mail Servisi Eventi Tüketti: Mail servisi fatura bilgilerini içeren eventi aldı.
    6. Kullanıcı Bilgilendirildi: Kullanıcıya fatura bilgilerini içeren bir e-posta gönderildi.