/TelephoneDirectory

microservices-> .net core 3.1 - Docker, Jenkins, Ocelot, RabbitMq, MassTransit, mssql, postgresql, elastic search, serilog, kibana, swagger, jwt

Primary LanguageC#

TelephoneDirectory

microservices-> .net core 3.1 - Docker, Jenkins, Ocelot, RabbitMq, MassTransit, Serilog, Elasticsearch, Kibana, Swagger / SwaggerForOcelot, Jwt, Postgresql, Mssql Bu projeyi daha ayrıntılı ele aldığım blog yazısı: https://medium.com/software-development-turkey/mikroservis-maceram-1e070463d0ea

Projeyi Ayağa Kaldırmak

Proje Code First mantığıyla oluşturulmuştur. Bu şekilde kod tarafından veri tabanını ayağa kaldırabileceğiz. Veritabanı olarak postgre ve mssql kullanıldı. Burada her servise ait farklı bir veri tabanı bulunmaktadır. Bu şekilde sadece bir veritabanına olan bağımlılık ortadan kaldırılmıştır.

* add-migration Initial -> .net core console için : dotnet ef migrations add Initial
* update-database -> .net core console için : dotnet ef database update

Not: Projede içerisindeki mevcut migration'lar otomatik olarak ayağa kalktığından herhangi bir işlem yapılmasına gerek yoktur.

Genel Yapı

  • Api Gateway -> Ocelot
  • Message Broker -> Rabbitmq
  • Service Bus -> Mass Transit
  • Health Check -> Watchdog - (via slack implementation)
  • Continuous Integration -> Jenkins
  • Logging -> Serilog, elastic search and kibana
  • Databases -> Postgre and Mssql
  • Open Doc -> Swagger and SwaggerForOcelot
  • Applied Pattern -> DDD, Saga Pattern, Mediator, CQRS, Circuit Breaker, Event Sourcing, Publish-Subscribe
  • Tests -> xUnit (via MassTransit) - Mocking, Integration and Functional Tests

Bulunan Microservisler

  • Ocelot - Gateway - Aradaki kordinasyonu sağlar.
  • Guide - Postgre - Rehber ve iletişim(1-N) bilgileriyle ilgili her türlü CRUD işlemini yapabilmekteyiz.
  • Report - Postgre - Rehberdeki kişiler ve bunların bulunduğu yerlerle ilgili bazı rapor verilmektedir.
  • Auth - MSSQL - Kullanıcıları tutuyoruz. Jwt ile authentication yapılmaktadır.
  • Saga - Transaction yönetimi için Saga Pattern'ın Orchestration yöntemi kullanılmıştır.

Kurulum docker-compose.yml dosyası sayesinde hem kullanılan araçlar hem veri tabanları ayağa kalkacaktır.

* docker-compose up -d -> yapmak yeterli olacaktır.