Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Angular Kurulumu ve İlk Proje: Ortamı Sıfırdan Hazırlamak
Angular geliştirmeye başlamak için Node.js ve Angular CLI'yi adım adım kuruyoruz, ilk projeyi oluşturuyoruz ve klasör yapısını tek tek gezip her dosyanın ne işe yaradığını öğreniyoruz.
Angular Nedir, Neden Var? Bir Framework'ün Varlık Sebebi
Angular tam olarak nedir, neden var ve hangi problemi çözüyor? Framework ile library farkını, TypeScript zorunluluğunu ve Angular'ın ne zaman doğru seçim olduğunu sıfırdan, örneklerle anlatıyoruz.
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?