Tüm Sekans
Bu sequence diagram, bir e-ticaret platformundaki sipariş sürecinin işleyişini açıklamaktadır. Sipariş süreci, müşterinin siparişi vermesiyle başlar ve siparişin tamamlanmasıyla sona erer. Bu süreçte, farklı servisler ve bileşenler arasında koordinasyon sağlanarak siparişin başarılı bir şekilde işlenmesi hedeflenir.
Bileşenler:
- Client: Müşterinin siparişi verdiği istemci uygulaması.
- Ingress: Gelen istekleri ilgili servislere yönlendiren bileşen.
- Order Service: Sipariş işlemlerini gerçekleştiren servis.
- Order Service Sidecar: Order Service ile diğer servisler arasında iletişimi sağlayan yardımcı bileşen.
- RabbitMQ: Servisler arasında olay tabanlı iletişimi sağlayan mesaj kuyruğu sistemi.
- User Service: Kullanıcı işlemlerini gerçekleştiren servis.
- User Service Sidecar: User Service ile diğer servisler arasında iletişimi sağlayan yardımcı bileşen.
- User Database: Kullanıcı verilerinin depolandığı veritabanı.
- Product Service: Ürün işlemlerini gerçekleştiren servis.
- Product Service Sidecar: Product Service ile diğer servisler arasında iletişimi sağlayan yardımcı bileşen.
- Product Database: Ürün verilerinin depolandığı veritabanı.
- Dispatch Service: Sipariş teslimatını gerçekleştiren servis.
- Dispatch Service Sidecar: Dispatch Service ile diğer servisler arasında iletişimi sağlayan yardımcı bileşen.
- Dispatch Database: Teslimat verilerinin depolandığı veritabanı.
- Order Database: Sipariş verilerinin depolandığı veritabanı.
Sipariş Süreci:
- Müşteri, istemci uygulaması (Client) aracılığıyla Ingress’e bir POST isteği gönderir.
- Ingress, isteği Order Service’e iletir.
- Order Service, sipariş veritabanında (Order Database) bekleyen bir sipariş oluşturur.
- Order Service, Order Service Sidecar aracılığıyla “Check Credit” (Kredi Kontrolü) olayını yayınlar.
- Order Service Sidecar, “Check Credit” olayını RabbitMQ’ya gönderir.
- RabbitMQ, “Check Credit” olayını User Service Sidecar’a iletir.
- User Service Sidecar, User Service’e kredi kontrolü yapması için istek gönderir.
- User Service, kullanıcının kredi durumunu kontrol etmek için User Database’e sorgular.
- Eğer kredi yetersizse:
- User Service, User Service Sidecar’a kredi yetersizliği bilgisini gönderir.
- User Service Sidecar, “Credit Unavailable” (Kredi Yetersiz) olayını RabbitMQ’ya yayınlar.
- RabbitMQ, “Credit Unavailable” olayını Order Service Sidecar’a iletir.
- Order Service Sidecar, Order Service’e kredi yetersizliği bilgisini iletir.
- Order Service, sipariş durumunu “Cancelled” (İptal Edildi) olarak günceller.
- Order Service, “Order Cancelled” (Sipariş İptal Edildi) olayını Order Service Sidecar aracılığıyla yayınlar.
- Order Service Sidecar, “Order Cancelled” olayını RabbitMQ’ya gönderir.
- RabbitMQ, “Order Cancelled” olayını User Service Sidecar’a iletir.
- User Service Sidecar, User Service’e ayrılan krediyi serbest bırakması için istek gönderir.
- User Service, ayrılan krediyi serbest bırakır.
- Order Service, Ingress’e “Credit Unavailable - Order Cancelled” (Kredi Yetersiz - Sipariş İptal Edildi) yanıtını döndürür.
- Ingress, yanıtı Client’a iletir.
- Eğer kredi yeterliyse:
- User Service, krediyi ayırır ve User Database’i günceller.
- User Service, User Service Sidecar’a kredi ayrıldığı bilgisini gönderir.
- User Service Sidecar, “Credit Reserved” (Kredi Ayrıldı) olayını RabbitMQ’ya yayınlar.
- RabbitMQ, “Credit Reserved” olayını Order Service Sidecar’a iletir.
- Order Service Sidecar, Order Service’e kredi ayrıldığı bilgisini iletir.
- Order Service, “Check Stock” (Stok Kontrolü) olayını Order Service Sidecar aracılığıyla yayınlar.
- Order Service Sidecar, “Check Stock” olayını RabbitMQ’ya gönderir.
- RabbitMQ, “Check Stock” olayını Product Service Sidecar’a iletir.
- Product Service Sidecar, Product Service’e stok kontrolü yapması için istek gönderir.
- Product Service, ürünün stok durumunu kontrol etmek için Product Database’e sorgular.
- Eğer stok yeterliyse:
- Product Service, stoku ayırır ve Product Database’i günceller.
- Product Service, Product Service Sidecar’a stok ayrıldığı bilgisini gönderir.
- Product Service Sidecar, “Stock Reserved” (Stok Ayrıldı) olayını RabbitMQ’ya yayınlar.
- RabbitMQ, “Stock Reserved” olayını Order Service Sidecar’a iletir.
- Order Service Sidecar, Order Service’e stok ayrıldığı bilgisini iletir.
- Order Service, sipariş durumunu “Processing Payment” (Ödeme İşleniyor) olarak günceller.
- Order Service, “Process Payment” (Ödeme İşleme) olayını Order Service Sidecar aracılığıyla yayınlar.
- Order Service Sidecar, “Process Payment” olayını RabbitMQ’ya gönderir.
- RabbitMQ, “Process Payment” olayını Order Service Sidecar’a iletir.
- Order Service Sidecar, Order Service’e ödeme işlemesi için istek gönderir.
- Order Service, ödeme işlemini gerçekleştirir ve sipariş durumunu “Payment Processed” (Ödeme İşlendi) olarak günceller.
- Order Service, “Payment Processed” olayını Order Service Sidecar aracılığıyla yayınlar.
- Order Service Sidecar, “Payment Processed” olayını RabbitMQ’ya gönderir.
- RabbitMQ, “Payment Processed” olayını Dispatch Service Sidecar’a iletir.
- Dispatch Service Sidecar, Dispatch Service’e teslimat sürecini başlatması için istek gönderir.
- Dispatch Service, teslimat kaydını oluşturur ve Dispatch Database’e kaydeder.
- Dispatch Service, Dispatch Service Sidecar’a siparişin teslim edildiği bilgisini gönderir.
- Dispatch Service Sidecar, “Order Dispatched” (Sipariş Teslim Edildi) olayını RabbitMQ’ya yayınlar.
- RabbitMQ, “Order Dispatched” olayını Order Service Sidecar’a iletir.
- Order Service Sidecar, Order Service’e siparişin teslim edildiği bilgisini iletir.
- Order Service, sipariş durumunu “Completed” (Tamamlandı) olarak günceller.
- Order Service, “Order Completed” (Sipariş Tamamlandı) olayını Order Service Sidecar aracılığıyla yayınlar.
- Order Service Sidecar, “Order Completed” olayını RabbitMQ’ya gönderir.
- RabbitMQ, “Order Completed” olayını Product Service Sidecar’a iletir.
- Product Service Sidecar, Product Service’e stok seviyelerini güncellemesi için istek gönderir.
- Order Service, Ingress’e sipariş tamamlandı yanıtını döndürür.
- Ingress, yanıtı Client’a iletir.
- Eğer stok yetersizse:
- Product Service, Product Service Sidecar’a stok yetersizliği bilgisini gönderir.
- Product Service Sidecar, “Stock Unavailable” (Stok Yetersiz) olayını RabbitMQ’ya yayınlar.
- RabbitMQ, “Stock Unavailable” olayını Order Service Sidecar’a iletir.
- Order Service Sidecar, Order Service’e stok yetersizliği bilgisini iletir.
- Order Service, sipariş durumunu “Cancelled” (İptal Edildi) olarak günceller.
- Order Service, “Order Cancelled” (Sipariş İptal Edildi) olayını Order Service Sidecar aracılığıyla yayınlar.
- Order Service Sidecar, “Order Cancelled” olayını RabbitMQ’ya gönderir.
- RabbitMQ, “Order Cancelled” olayını User Service Sidecar’a iletir.
- User Service Sidecar, User Service’e ayrılan krediyi serbest bırakması için istek gönderir.
- User Service, ayrılan krediyi serbest bırakır.
- Order Service, Ingress’e “Stock Unavailable - Order Cancelled” (Stok Yetersiz - Sipariş İptal Edildi) yanıtını döndürür.
- Ingress, yanıtı Client’a iletir.
Bu şekilde kullanıcı haberdar olur.
