Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
8 yazı bulundu
Reverse Proxy, API Gateway ve YARP: Ne Zaman YARP, Ne Zaman Nginx veya Managed Gateway?
Backend SERİ 01

Reverse Proxy, API Gateway ve YARP: Ne Zaman YARP, Ne Zaman Nginx veya Managed Gateway?

YARP, gateway'i kendi ASP.NET Core uygulaman olarak yazmanı sağlayan bir reverse proxy library'sidir; gateway'de koda dayalı mantık gerekiyorsa seçilir, statik kurallar için Nginx veya ingress, abonelik ve developer portalı için managed gateway daha uygundur. Bookstore.Gateway'i LoadFromConfig ve MapReverseProxy ile kurup route, cluster ve destination modelini, gateway 404'ü ile backend 404'ünü ve 502'yi gerçek loglarla ayırıyoruz.

14 Kas 2026 11 dk 17
YARP Konfigürasyonu: Route Match'leri, Transform'lar, Koddan Config ve Canlı Reload
Backend SERİ 02

YARP Konfigürasyonu: Route Match'leri, Transform'lar, Koddan Config ve Canlı Reload

YARP'ta route sırasını önce Order, sonra path, method, host, header ve query spesifikliği belirler; path transform'ları dış URL'yi iç URL'ye çevirir, X-Forwarded varsayılan olarak istemcinin değerini ezer ama iç header'ları gelişte senin silmen gerekir. Bookstore.Gateway'de catch-all tuzağını, canlı reload'da hatalı config'in ne yaptığını, LoadFromMemory'yi, SQL Server'dan okuyan IProxyConfigProvider'ı ve environment'a göre adres veren IProxyConfigFilter'ı gerçek loglarla gösteriyoruz.

14 Kas 2026 15 dk 11
YARP'ta Load Balancing, Health Check ve Session Affinity
Backend SERİ 03

YARP'ta Load Balancing, Health Check ve Session Affinity

YARP'ta yavaş bir instance'a karşı PowerOfTwoChoices ve LeastRequests trafiği kendiliğinden kaydırır; passive health check yalnız transport hatalarını sayar ve reactivation süresi 60 saniyelik pencereden kısa olamaz, bu yüzden active check ile birlikte kullanılmalıdır. Catalog'un üç instance'ında policy'leri ölçüyor, zone'a göre seçen kendi policy'mizi yazıyor, HealthyOrPanic'i, HashCookie affinity'yi, service discovery'yi ve HTTP/2 ile ActivityTimeout tuzaklarını gerçek loglarla gösteriyoruz.

14 Kas 2026 14 dk 11
Gateway'de Cross-Cutting Concern'ler: Authentication, Authorization, Rate Limiting, Timeout ve Output Cache
Backend SERİ 04

Gateway'de Cross-Cutting Concern'ler: Authentication, Authorization, Rate Limiting, Timeout ve Output Cache

YARP route'a policy adını verir, işi ASP.NET Core middleware'leri yapar; bu yüzden middleware sırası ve fallback authorization policy gateway güvenliğinin temelidir. Bookstore.Gateway'de JWT doğrulamayı, kimliği backend'e token ve iç header ile taşımayı, kullanıcı başına rate limit ve 429 + Retry-After'ı, output cache'in token'lı istekleri neden cache'lemediğini ve request timeout'un YARP 2.3'te 504 yerine 400 döndürdüğünü ve bunun nasıl düzeltileceğini gerçek çıktılarla gösteriyoruz.

14 Kas 2026 14 dk 14
YARP ile Angular BFF ve Aggregation: Proxy Route'ları ile Kendi Endpoint'lerini Yan Yana Çalıştırmak
Backend SERİ 05

YARP ile Angular BFF ve Aggregation: Proxy Route'ları ile Kendi Endpoint'lerini Yan Yana Çalıştırmak

YARP route'ları normal endpoint olduğu için Angular dosyalarını, aggregation endpoint'lerini ve proxy route'larını tek uygulamada, tek origin'den ve CORS'suz sunabilirsin; dikkat edilecek yer fallback'ler, timeout bütçesi ve ikinci trafik yollarıdır. Bookstore'da Catalog, Inventory ve Ordering'i paralel çağıran kitap sayfası endpoint'ini, kısmi hatayı, YARP'ın health bilgisini kullanan HttpClient'ı ve kuruma göre hedef seçen IHttpForwarder'ı gerçek çıktılarla gösteriyoruz.

14 Kas 2026 15 dk 14
YARP ile Strangler Fig ve Canary: Eski Uygulamadan Kademeli Geçiş ve Ağırlıklı Trafik
Backend SERİ 06

YARP ile Strangler Fig ve Canary: Eski Uygulamadan Kademeli Geçiş ve Ağırlıklı Trafik

YARP'ta strangler fig, eski uygulamaya giden host'a bağlı bir catch-all route ile başlar ve taşınan her sayfa için daha spesifik bir route eklenir; canary için iki cluster ve isteği ReassignProxyRequest ile yeni cluster'a aktaran küçük bir adım yeterlidir. Bookstore'un eski sitesinde route tablosunu faz faz değiştiriyor, %10'luk yapışkan canary'yi ölçüyor ve config reload ile 645 ms'de geri dönüyoruz.

14 Kas 2026 12 dk 13
YARP'ı Production'da İşletmek: Observability, Performans, Container ve Çok Instance
Backend SERİ 07

YARP'ı Production'da İşletmek: Observability, Performans, Container ve Çok Instance

YARP normal yükte medyanda yaklaşık 70 µs gecikme ekliyor; production'da asıl dikkat edilecekler trace'in gateway'den geçişi, hata türüne göre alarm, instance başına çalışan rate limit ve cache, shutdown süresi ve doğru container image'ı. OpenTelemetry ve Jaeger ile trace'leri, k6 ile gateway maliyetini, SDK ile container üretmeyi, YARP'ın nightly image'ını ve graceful shutdown'u Bookstore.Gateway üzerinde gerçek çıktılarla gösteriyoruz.

14 Kas 2026 13 dk 11
YARP'ın Sürüm Geçmişi: 1.0'dan 2.3'e Değişenler ve Eski Konfigürasyonu Okumak
Backend SERİ 08

YARP'ın Sürüm Geçmişi: 1.0'dan 2.3'e Değişenler ve Eski Konfigürasyonu Okumak

YARP 2.3 (Şubat 2025) Kasım 2026'da hâlâ son sürüm; 1.0 öncesi config'teki array route'lar ve eski policy adları uygulamayı başlatmaz, ama eski HttpRequest.Timeout gibi alanlar sessizce yok sayılır. 1.0'dan 2.3'e değişen varsayılanları release notlarından derliyor, eski bir config'i 2.3 ve JSON schema ile okuyor, Ocelot tabanlı bir gateway'i YARP'a taşıyıp iki tarafı aynı isteklerle karşılaştırıyoruz.

14 Kas 2026 11 dk 15
Blog Haritası