- Architectural patterns
- Microservice nedir?
- Database per Service & Data Ownership
- Category WebApi oluşturalım
- Category model için Create/Read işlemleri
- API Versioning
- OpenAPI ve Scalar ile endpoint dokümantasyonu
- Health Check ile uygulama sağlık kontrolü
- CORS policy
- Product WebApi oluşturalım
- Product Create/Read işlemleri
- Response Compression
- Service Discovery Pattern (HashiCorp Consul)
- Resilience Pattern (Polly)
- Docker image oluşturma
- Docker compose ile projeleri ayağa kaldıralım
- Gateway nedir?
- Ocelot nedir?
- Gateway projesi oluşturup Ocelot yapısını kuralım
- RateLimit
- LoadBalance
- Service Discovery
- Authentication
- Authorization
- YARP ile Gateway
- LoadBalance
- RateLimit
- Authentication
- Authorization
- HealthCheck
- Ocelot vs YARP
- Order WebAPI oluşturalım ve Create işlemi yapalım
- Idempotency
- Payment WebAPI oluşturalım ve Create metodu yazalım
- Transaction
- Sync (HTTP/gRPC) vs Async (Message Broker) Communication
- Saga Pattern
- Observability (with OpenTelemetry and Jaeger)
- Aspire
docker run -d --name consul -p 8500:8500 hashicorp/consul:latestSteeltoe.Discovery.Consul
//🧩 DelayBackoffType Enum Türleri
//Constant Her denemede sabit süre bekler. Delay = 5s → 5s, 5s, 5s//Constant Her denemede sabit süre bekler. Delay = 5s → 5s, 5s, 5s
//Linear Her denemede gecikme lineer (doğrusal) artar. Delay = 5s → 5s, 10s, 15s//Linear Her denemede gecikme lineer (doğrusal) artar. Delay = 5s → 5s, 10s, 15s
//Exponential Her denemede gecikme katlanarak (üstel) artar. Delay = 5s → 5s, 10s, 20s, 40s//Exponential Her denemede gecikme katlanarak (üstel) artar. Delay = 5s → 5s, 10s, 20s, 40sOcelot
Ocelot.Provider.Consul
https://ocelot.readthedocs.io/
Yarp.ReverseProxy
https://learn.microsoft.com/tr-tr/aspnet/core/fundamentals/servers/yarp/getting-started?view=aspnetcore-10.0
https://www.rabbitmq.com/tutorials/tutorial-one-dotnet
docker run -d --name rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:3-management
Saga Pattern iki yaklaşımdan oluşur:
Choreography-based Saga: Servisler event’ler üzerinden birbirleriyle doğrudan haberleşir, merkezi bir yönetici yoktur. Her servis kendi adımını bilir ve gerektiğinde telafi (compensation) işlemini kendisi yapar.
Orchestration-based Saga: Süreci merkezi bir orchestrator yönetir. Servislere hangi adımı ne zaman çalıştıracağını söyler, hata durumunda telafi adımlarını koordine eder.
OpenTelemetry.Exporter.Console
OpenTelemetry.Exporter.OpenTelemetryProtocol
OpenTelemetry.Extensions.Hosting
OpenTelemetry.Instrumentation.AspNetCore
OpenTelemetry.Instrumentation.Http
docker run -d --name jaeger -p 16686:16686 -p 4317:4317 -p 4318:4318 cr.jaegertracing.io/jaegertracing/jaeger:2.11.0
- Network komutları
#docker network listele
docker network ls
#kullanılmayan networkleri sil
docker network prune
#yeni network oluştur
docker network create network_name- Image ve container komutları
#image dönüştürme - eğer docker file olan ana dizinde ise build komutu
docker build -t image_name .
#image dönüştürme - eğer docker file alt dizinde ise
docker build -t image_name -f Microservice.ProductWebAPI/Dockerfile .
#container oluşturma
docker run -d --name container_name -p 6001:8080 image_adi
#networke bağlı container oluşturma
docker run -d --network eticaret --name product -p 6001:8080 productapi - docker compose build
#eğer ilk oluşturuyorsak
docker compose up -d
#eğer tekrar rebuild yapacaksak
docker compose up -d --build