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
5 yazı bulundu #domain-model
Always-Valid Domain Model: Invariant'ları Constructor, Factory ve Guard'larla Korumak
Yazılım Mimarisi SERİ 08

Always-Valid Domain Model: Invariant'ları Constructor, Factory ve Guard'larla Korumak

Always-valid domain model, invariant'ların kaydetmeden önce kontrol edilmesi değil, ihlal edilmesinin imkânsız olmasıdır: private constructor, static factory ve guard clause'lar geçersiz state'e giden her yolu kapatır. Bookstore'un Order'ında en az bir satır, kitap başına 10 adet, tek para birimi ve tek kupon kurallarını; required/init ve C# 14 field'ın sınırlarını, domain exception ile Result ayrımını ve input validation ile invariant farkını gerçek çıktılarla işliyoruz.

7 Kas 2026 12 dk 5
Domain-Driven Design Nedir? Ne Zaman Değer, Ne Zaman Gereksiz?
Yazılım Mimarisi SERİ 01

Domain-Driven Design Nedir? Ne Zaman Değer, Ne Zaman Gereksiz?

DDD, karmaşıklığın teknolojide değil iş kurallarında olduğunu kabul edip modeli domain uzmanıyla birlikte koda taşıyan bir yaklaşımdır; kuralları sık değişen core domain'de değer üretir, CRUD ekranlarında ve kısa ömürlü MVP'lerde gereksizdir. Kampanya indirimi hatasıyla CRUD ve domain modelinin farkı, strategic ve tactical design ayrımı, eShop'un Ordering.Domain'i ve serinin yol haritası.

7 Kas 2026 12 dk 5
Slice'lar Arası Paylaşım: Duplication mı Abstraction mı, Domain Logic Nereye?
Yazılım Mimarisi SERİ 04

Slice'lar Arası Paylaşım: Duplication mı Abstraction mı, Domain Logic Nereye?

Slice'lar arasında domain model, cross-cutting işler ve altyapı paylaşılır; request/response tipleri, sorgular ve iş akışı paylaşılmaz, invariant'lar ise ikinci kopyayı beklemeden entity'ye taşınır. Bookstore'da request'e konmuş bir kuralın 7 adetlik siparişe izin verdiğini, bir slice'ın başka bir slice'ı çağırınca ödemesi reddedilmiş siparişi kaydettiğini gerçek çıktılarla görüyor ve bunu ArchUnitNET slice test'iyle engelliyoruz.

7 Kas 2026 11 dk 2
Onion Architecture: Domain Model Merkezde, Altyapı Dış Halkada
Yazılım Mimarisi SERİ 03

Onion Architecture: Domain Model Merkezde, Altyapı Dış Halkada

Onion Architecture (Palermo, 2008) uygulamayı bağımsız bir domain model'in etrafına kurar: iç halkalar interface'leri tanımlar, dış halkalar implement eder, tüm coupling merkeze doğrudur ve çekirdek altyapıdan ayrı derlenip çalışabilir. Bookstore'un sipariş kodunu Domain Model, Domain Services ve Application Services halkalarına yerleştiriyor, layered ve Hexagonal'dan farkını, halka-project ilişkisini ve ASP.NET Core Identity örneğini gösteriyoruz.

7 Kas 2026 12 dk 5
Requirement'tan Diyagrama: Hangi Soru Hangi Diyagramla Cevaplanır?
Yazılım Tasarımı SERİ 02

Requirement'tan Diyagrama: Hangi Soru Hangi Diyagramla Cevaplanır?

Her diyagram bir soruyu cevaplar: kim ne yapar sorusunu use case, hangi kavramlar sorusunu class, kim kimi çağırır sorusunu sequence, object hangi durumlardan geçer sorusunu state machine diagram'ı cevaplar. İK Portalı İzin Talebi modülünün requirement metni, isim, fiil ve koşullardan aday class, use case ve guard çıkarmak, hedef kitleye göre detay seviyesi ve serinin haritası.

7 Kas 2026 12 dk 5
Blog Haritası