Skip to content

Domain-Driven Design (DDD)

Bu bölüm, karmaşık iş alanlarında yazılım tasarımını kolaylaştırmak için kullanılan Domain-Driven Design (DDD) yaklaşımını ve uygulama örneklerini kapsar.

1. DDD Nedir?

  • İş alanı (domain) odaklı modelleme
  • Teknik ve iş ekipleri arasında ortak dil (ubiquitous language)

2. Temel Kavramlar

  • Entity: Kimliği olan nesne
  • Value Object: Kimliği olmayan, değeriyle tanımlanan nesne
  • Aggregate: Transactional boundary, aggregate root
  • Repository: Aggregate erişimi için soyutlama
  • Service: Domain logic’in aggregate dışında modellenmesi

3. Bounded Context ve Context Mapping

  • Bounded context: Modelin sınırları, context haritalama
  • Context map: Shared kernel, customer/supplier, conformist, anti-corruption layer

4. Event Storming ve Domain Event’ler

  • İş süreçlerinin event’lerle modellenmesi
  • Event storming workshop’ları, event sourcing

5. Implementation Patterns

  • Layered architecture, hexagonal architecture ile DDD
  • Application service, domain service, infrastructure layer

6. Microservices ve DDD

  • Her bounded context’in ayrı bir mikroservis olması
  • Veri tutarlılığı, eventual consistency, saga pattern

7. Best Practices ve Sık Karşılaşılan Sorunlar

  • Model karmaşıklığı, context sınırlarının belirlenmesi
  • Ubiquitous language’in sürdürülebilirliği

Her başlık altında örnekler, diyagramlar ve ileri seviye detaylar için ilgili alt bölümlere göz atabilirsiniz.