Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Performans, optimizasyon ve seriyi kapatış: Buradan sonra nereye?
Seriyi kapatıyoruz: performansın temel ilkeleri, en sık karşılaşılan darboğazlar (N+1 sorgusu gibi), ölçmeden optimize etmemek, öğrendiklerimizin toparlanması ve buradan sonra nereye gidileceği.
CI/CD ile deploy: GitHub Actions ile test, derleme ve dağıtımı otomatikleştirmek
CI/CD'yi işliyoruz: sürekli entegrasyon ve sürekli dağıtım ne demek, neden otomatik pipeline gerekli, GitHub Actions ile bir workflow kurmak ve her kod değişikliğinde test-derleme-dağıtımı otomatik çalıştırmak.
Docker'a alma: Uygulamayı her yerde aynı çalışan bir pakete koymak
Uygulamayı Docker'a almayı işliyoruz: container nedir, "benim makinemde çalışıyordu" sorununu nasıl çözer, Dockerfile ve multi-stage build ile .NET uygulamasını nasıl paketleriz ve imajı nasıl çalıştırırız.
Health check ve monitoring: API'nin ayakta ve sağlıklı olduğunu izlemek
Health check ve monitoring'i işliyoruz: uygulamanın canlıda sağlıklı olup olmadığını otomatik kontrol etmek, veritabanı gibi bağımlılıkları izlemek, liveness/readiness ayrımı ve monitoring'in temel fikri.
Caching: in-memory ve Redis ile distributed cache
Caching'i işliyoruz: sık istenen ama nadiren değişen veriyi geçici saklayarak performansı artırmak, in-memory cache ile Redis tabanlı distributed cache arasındaki fark ve cache'in en zor problemi olan tutarlılık.
Integration test: WebApplicationFactory ile API'yi uçtan uca test etmek
Integration test'i işliyoruz: unit test'ten farkı, parçalar bir araya gelince test etmek ne demek, WebApplicationFactory ile gerçek bir istek uçtan uca akıtmak ve test için ayrı bir veritabanı kullanmak.
Unit test: xUnit ve Moq ile kodun parçalarını izole test etmek
Unit test'i işliyoruz: bir birimi izole test etmek ne demek, neden test yazarız, xUnit ile test yapısı, Moq ile bağımlılıkları taklit etmek ve iyi test yazmanın temel ilkeleri.
Swagger/OpenAPI ile dokümantasyon ve Scalar: API'ni kendi kendini anlatır hale getir
API dokümantasyonunu işliyoruz: OpenAPI nedir, neden otomatik dokümantasyon önemli, .NET 9'da OpenAPI desteği, Swagger UI ve modern bir alternatif olan Scalar ile interaktif dokümantasyon kurmak.
CORS, rate limiting ve güvenlik başlıkları: API'yi dış tehditlere karşı sağlamlaştırmak
API'yi kötüye kullanıma karşı sağlamlaştıran üç konuyu işliyoruz: CORS ile hangi sitelerin erişebileceğini kontrol etmek, rate limiting ile isteği sınırlamak ve güvenlik başlıklarıyla temel korumayı eklemek.
Role ve policy tabanlı yetkilendirme: Kime neyin izinli olduğunu belirlemek
Yetkilendirmeyi derinleştiriyoruz: rol tabanlı yetki nedir, nerede yetersiz kalır, policy ve claim tabanlı yaklaşım nasıl daha esnek çözüm sunar ve .NET'te bunları nasıl kurarız?
JWT ile kimlik doğrulama: Token nasıl üretilir, nasıl doğrulanır?
JWT ile kimlik doğrulamayı işliyoruz: token nedir, üç parçası ne anlama gelir, neden imzalanır, sunucu neden durum tutmaz ve .NET'te token üretip doğrulamayı adım adım kuruyoruz.
Authentication ve authorization: Kimlik doğrulama ile yetkilendirme arasındaki fark
Çoğu geliştiricinin karıştırdığı iki kavramı ayırıyoruz: authentication (sen kimsin?) ile authorization (neye iznin var?). Aradaki fark, doğru sıra ve .NET'te bu ikisinin nasıl konumlandığı.