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
218 yazı bulundu
gRPC ve GraphQL'de Sürümlerle Gelenler: .NET Core 3.0'dan .NET 11'e, Hot Chocolate 13'ten 16'ya
Backend SERİ 12

gRPC ve GraphQL'de Sürümlerle Gelenler: .NET Core 3.0'dan .NET 11'e, Hot Chocolate 13'ten 16'ya

Eski bir gRPC ya da GraphQL projesinde ilk bakılacak yerler Grpc.Core kullanımı ve Hot Chocolate'ın ana sürümüdür: Grpc.Core 2021'den beri bakım modunda, Hot Chocolate 16 ise scalar API'sini kökten değiştirdi. grpc-dotnet'in .NET Core 3.0'dan .NET 11'e, Hot Chocolate'ın 13'ten 16'ya getirdiklerini, aynı ISBN scalar'ının iki sürümdeki farkını ve GraphQL spesifikasyonunun September 2025 sürümünü gerçek çıktılarla gösteriyoruz.

14 Kas 2026 10 dk 5
REST, gRPC mi GraphQL mi? Aynı Bookstore Senaryosunu Üç Stilde Ölçerek Karar Vermek
Backend SERİ 11

REST, gRPC mi GraphQL mi? Aynı Bookstore Senaryosunu Üç Stilde Ölçerek Karar Vermek

Hangi API stilini seçeceğini client türü ve ekranın ihtiyacı belirler: ölçümde küçük service-to-service çağrılarında REST JSON en az server CPU'su harcadı, gRPC ağdaki byte'ı yarıya indirdi, kitap detay ekranında ise tek istekli GraphQL ve gRPC-Web dört istekli REST'i geride bıraktı. k6 ile aynı Bookstore senaryolarını üç stilde ölçüyor, karar boyutlarını ve birlikte kullanımı tartışıyoruz.

14 Kas 2026 11 dk 6
Angular'dan GraphQL: Apollo Angular, Code Generation, Subscription'lar ve @defer
Backend SERİ 10

Angular'dan GraphQL: Apollo Angular, Code Generation, Subscription'lar ve @defer

Angular'dan GraphQL'e bağlanmanın sağlam yolu Apollo Angular ile normalized cache, GraphQL Code Generator ile typed operation'lar ve aynı codegen'in ürettiği persisted operation manifest'idir. Angular 22 ve Apollo Client 4 ile signal'ler ve dataState'i, mutation sonrası cache tutarlılığını, WebSocket subscription'larını, @defer için gereken fetch tabanlı link'i ve persisted dokümanlarda unutulan __typename'in boş ekranını gerçek çıktılarla gösteriyoruz.

14 Kas 2026 13 dk 5
GraphQL'i Güvenli İşletmek: Cost Analysis, Persisted Operation'lar, Authorization ve Schema Evolution
Backend SERİ 09

GraphQL'i Güvenli İşletmek: Cost Analysis, Persisted Operation'lar, Authorization ve Schema Evolution

GraphQL'i production'da güvenli işletmek için bilinmeyen sorguyu persisted operation'larla, pahalı sorguyu cost analysis ve derinlik sınırıyla durdurur; yetkiyi field ve kaynak düzeyinde, schema değişikliklerini CI'daki diff ile denetlersin. Hot Chocolate 16'da alias ve variable batching'in maliyeti nasıl çoğalttığını, semantic introspection'ı, hata maskelemeyi, @requiresOptIn'i ve Türkçe bölge ayarında açılmayan cache control'ü gerçek çıktılarla gösteriyoruz.

14 Kas 2026 13 dk 7
GraphQL'de Performans: N+1, DataLoader, Batch Resolver ve Cursor Pagination
Backend SERİ 08

GraphQL'de Performans: N+1, DataLoader, Batch Resolver ve Cursor Pagination

GraphQL'de N+1'in çözümü, resolver'ların key'lerini toplayıp tek sorguda yükleyen DataLoader'dır; 50 kitabın yazarları 51 SQL sorgusundan 2'ye iner. Hot Chocolate 16'nın DataLoader'larını, batch resolver'ını ve 16.7.5'teki takılmasını, projection'la birlikte kullanmanın sessiz tuzaklarını, offset kılıklı cursor ile gerçek keyset pagination'ı ve OpenTelemetry span'larını gerçek çıktılarla gösteriyoruz.

14 Kas 2026 14 dk 8
Hot Chocolate 16 ile Bookstore GraphQL API'si: Schema, EF Core Entegrasyonu ve Mutation'lar
Backend SERİ 07

Hot Chocolate 16 ile Bookstore GraphQL API'si: Schema, EF Core Entegrasyonu ve Mutation'lar

Hot Chocolate 16'da EF Core'u güvenle bağlamanın yolu, her resolver'a pooled factory'den kendi DbContext'ini vermek ve schema'ya açılan her alanı, filtreyi ve hatayı bilinçli seçmektir. Paylaşılan DbContext'in rastgele hatalarını, projection ve sorting'in ürettiği SQL'i, entity'den sızan alış fiyatını, mutation convention'larıyla typed error'ları ve onError'ı gerçek çıktılarla gösteriyoruz.

14 Kas 2026 15 dk 7
GraphQL'in Temelleri: Schema, Query, Mutation, Subscription ve Resolver Mantığı
Backend SERİ 06

GraphQL'in Temelleri: Schema, Query, Mutation, Subscription ve Resolver Mantığı

GraphQL'de client ekranın ihtiyacını tek bir query ile tanımlar, server her field'ı kendi resolver'ıyla çözer; bu over-fetching'i bitirir ama N+1'i ve HTTP cache kaybını da beraberinde getirir. Hot Chocolate 16 ile type system'i, variable/fragment/alias'ı, partial data ve null propagation'ı, September 2025 spesifikasyonunun @oneOf'unu ve GraphQL over HTTP davranışını gerçek yanıtlarla gösteriyoruz.

14 Kas 2026 13 dk 7
Tarayıcıdan ve REST Client'lardan gRPC: gRPC-Web, JSON Transcoding ve Angular
Backend SERİ 05

Tarayıcıdan ve REST Client'lardan gRPC: gRPC-Web, JSON Transcoding ve Angular

Tarayıcı trailer'lara erişemediği için gRPC'yi doğrudan konuşamaz; gRPC-Web ile Angular'dan typed client'la, JSON transcoding ile de REST bekleyen client'lara aynı service'i açabilirsin. Connect-ES ve resource API'siyle bir stok rozeti yazıyor; CORS, int64'ün JSON'daki hâli, rich error'larda TypeRegistry tuzağı ve deprecated Grpc.Swagger yerine seçenekleri gerçek çıktılarla gösteriyoruz.

14 Kas 2026 11 dk 4
Production'da gRPC: Interceptor, Authentication, Load Balancing, Retry ve Health Check
Backend SERİ 04

Production'da gRPC: Interceptor, Authentication, Load Balancing, Retry ve Health Check

gRPC'yi production'a taşırken en büyük sürpriz load balancing'dir: HTTP/2 bütün çağrıları tek bağlantıda taşıdığı için L4 balancer ve Kubernetes ClusterIP trafiği tek pod'a yığar; çözüm client-side LB ya da L7 proxy. Interceptor'ları, JWT ve call credentials'ı, retry'ın katmanlarda çarpılmasını, health check ve reflection'ı gerçek ölçümlerle gösteriyoruz.

14 Kas 2026 11 dk 4
gRPC Streaming: Server, Client ve Bidirectional Streaming ile Backpressure
Backend SERİ 03

gRPC Streaming: Server, Client ve Bidirectional Streaming ile Backpressure

gRPC streaming'de yavaş bir consumer'ı HTTP/2 flow control frenler; birden çok abone varsa araya abone başına sınırlı bir Channel koyup yetişemeyeni kapatmak ve sequence numarasıyla kaldığı yerden devam ettirmek gerekir. Stok izleme, CSV'den toplu güncelleme ve kasada barkod okutma örnekleriyle üç streaming türünü, keepalive'ı ve resync'i gerçek çıktılarla gösteriyoruz.

14 Kas 2026 14 dk 4
ASP.NET Core'da İlk gRPC Service'i ve Client'ı: Kestrel, Deadline ve RpcException
Backend SERİ 02

ASP.NET Core'da İlk gRPC Service'i ve Client'ı: Kestrel, Deadline ve RpcException

Bir gRPC çağrısını güvenli yapmak için channel'ı paylaşmak, her çağrıya deadline koymak ve EnableCallContextPropagation ile deadline'ı zincir boyunca taşımak gerekir; yoksa client vazgeçtikten sonra bile downstream service işi bitirip stok ayırır. Inventory'yi Kestrel'de h2c ile ayağa kaldırıyor, status code'ları, rich error model'i ve metadata'yı gerçek loglarla gösteriyoruz.

14 Kas 2026 12 dk 3
Protocol Buffers ile Contract Tasarlamak: .proto, Field Number'lar ve Geriye Uyumluluk
Backend SERİ 01

Protocol Buffers ile Contract Tasarlamak: .proto, Field Number'lar ve Geriye Uyumluluk

gRPC'de contract'ı field adları değil field number'lar taşır; bu yüzden yeni field eklemek güvenli, numarayı ya da tipi değiştirmek sessiz veri bozulmasıdır. Bookstore Inventory'nin inventory.proto'sunu yazıyor; enum'da sıfır kuralını, optional ile presence'ı, para için DecimalValue'yu, reserved'ı ve Grpc.Tools ile C# üretimini gerçek çıktılarla gösteriyoruz.

14 Kas 2026 16 dk 3
Blog Haritası