Skip to content

burakpatat/neredekal-casestudy

Repository files navigation

NeredeKal CaseStudy ();

Mikroservis mimarisi ile yazılan bu proje, otel yönetimi ve raporlama işlemleri için iki mikroservis içermektedir. Mikroservisler arasında RabbitMQ aracılığıyla iletişim sağlanmaktadır. HotelService, otel ve iletişim bilgilerini yönetirken, ReportService, konum bazlı raporları asenkron olarak üretir.

Ana İşlevler :

  • Otel Yönetimi: Otel oluşturma, kaldırma, iletişim bilgisi ekleme, iletişim bilgisi kaldırma, Otel yetkililerinin listelenmesi, Otel ile ilgili iletişim bilgilerinin de yer aldığı detay bilgilerin getirilmesi
  • Raporlama: Konum bazlı raporlar (otel sayısı, telefon numarası sayısı).

Mesajlaşma Sistemi

Uygulama, RabbitMQ kullanarak mikroservisler arasında asenkron veri iletimi sağlar. HotelService, ReportService'e rapor talepleri gönderirken RabbitMQ kullanır ve ReportService, gelen talepleri asenkron olarak alıp işler. HotelService, rapor taleplerini RabbitMQ'ya gönderir. Kullanıcı bir rapor talep ettiğinde, HotelService bu talebi RabbitMQ kuyruğuna gönderir. Bu işlem, ReportRequestedEvent adıyla yapılan bir mesajlaşma ile gerçekleşir.

Kullanılan Teknolojiler

  • Backend Framework: .NET Core 9
  • MongoDB: ReportService
  • PostgreSQL: HotelService
  • Mesajlaşma Sistemi: RabbitMQ
  • Loglama ve İzleme: ELK Stack (Elasticsearch, Kibana)
  • API Gateway: Ocelot
  • Containerization: Docker Compose

Domain-Driven-Design, Event-Driven-Architecture, CQRS, Mediator, Generic Repository, UnitOfWork

Çalıştırma

docker-compose.yaml içerisinde yazılan image'ler ile PostgreSQL ve ELK Stack kurulumları yapabilirsiniz, proje de RabbitMQ ve MongoDB Cloud tarafında kullanılmaktadır. appsettings.json içinde konfigürasyonlardan bakabilirsiniz.

Proje konumundan

  docker-compose up -d

komutu ile servisleri ayağa kaldırabilirsiniz, HotelService içinde ki PostgreSQL konfigurasyonu

  "PostgreSqlConnection": "Host=localhost;Port=5432;Database=neredekalHotelDb;Username=poisondev;Password=poisondevdocker"

Gateway localhost:5284 dizini üzerinde ki swagger dökümanı ile Service dökümanları arası geçiş yapabilirsiniz

Configure Startup Project'den Gateway.API HotelService.API ve ReportService.API projelerine Start verip projeyi ayağa kaldırabilirsiniz.

Portlar

  • Gateway => 5284

  • HotelService.API => 5284

  • Gateway => 5055

  • ReportService.API => 5284

  • PostgreSQL => 5284 - ElasticSearch => 9200 - Kibana => 5601

Ekran görüntüsü 2025-01-03 164118

Ekran görüntüsü 2025-01-03 163953

Ekran görüntüsü 2025-01-03 164859

Ekran görüntüsü 2025-01-03 165019

Ekran görüntüsü 2025-01-03 165035

Ekran görüntüsü 2025-01-03 165051

Solution Structure

neredekalcase
│
├── src/
│   ├── Gateway/
│   │   ├── Gateway.API
│   │   └── Dockerfile
│   │
│   ├── HotelService/
│   │   ├── HotelService.API
│   │   ├── HotelService.Application
│   │   ├── HotelService.Domain
│   │   ├── HotelService.Infrastructure 
│   │   └── HotelService.Shared
│   │   └── Dockerfile
│   │
│   ├── ReportService/
│   │   ├── ReportService.API 
│   │   ├── ReportService.Application
│   │   ├── ReportService.Domain
│   │   ├── ReportService.Infrastructure
│   │   └── ReportService.Shared
│   │   └── Dockerfile
│   │
│   ├── UI/
│   │   ├── WebUI.Client (Blazor WebAssembly UI)
│   │   ├── WebUI.Shared
│   │   └── Dockerfile
│
├── common/
│   ├── SharedKernel (RabbitMQ, BaseEntity)
│   └── EventBus (RabbitMQ, MediatR vb)
│
├── tests/  (UnitTest, IntegrationTest)
│   ├── Gateway.Tests
│   ├── HotelService.Tests
│   └── ReportService.Tests
│
├── docker-compose.yml
│   
├── README.md
└── .gitignore

About

neredekal.com microservice architecture casestudy

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published