Sıfırdan İleri Seviyeye Domain-Driven Design

Sıfırdan İleri Seviyeye Domain-Driven Design: Java ve Spring Boot ile Modern Uygulama Geliştirme

BEGINNER Son güncellenme: Mar 2026
Türkçe
34 öğrenci
Ali Turgut Bozkurt
Eğitmen

Öğrenecekleriniz

Kurs Hakkında

Yapay zeka artık bir bilim kurgu filmi konusu değil, günlük hayatımızın bir parçası. Otonom araçlar şehirlerimizde yollarını buluyor, sürdürülebilir enerji platformları gezegenimizin geleceğini şekillendiriyor ve iş dünyası, dün hayal bile edilemeyen bir hızla dönüşüyor. Peki, bu fırtınanın tam ortasında duran biz yazılım geliştiriciler, bu karmaşıklığın neresindeyiz? Elinizde tuttuğunuz bu kitap, basit bir kodlama veya teknoloji kitabı değildir. Bu kitap, 2025'in getirdiği bu baş döndürücü karmaşıklığı bir düşman olarak değil, üzerine zarif ve kalıcı çözümler inşa edebileceğimiz bir zemin olarak görme davetidir. Çoğumuz o hissi biliriz: Projeye büyük bir hevesle başlarız, ancak aylar geçtikçe kod tabanı bir "çamur yumağına" (Big Ball of Mud) dönüşür. İş birimlerinden gelen her yeni talep, mevcut yapıda bir çatlak daha oluşturur. Yazdığımız kod, hizmet etmesi gereken iş dünyasının gerçekliğinden giderek uzaklaşır. İşte bu kitap, bu kaçınılmaz kadere bir başkaldırıdır. Bu başkaldırının adı: **Domain-Driven Design (DDD)**. DDD, bir dizi kuraldan veya katı bir metodolojiden çok daha fazlasıdır; o bir felsefedir. Yazılımın kalbine, onun varoluş sebebi olan **iş alanını (domain)** yerleştirme felsefesidir. DDD bize, kodu iş hedefleriyle aynı hizada tutmanın, işin dilini konuşan modeller yaratmanın ve en karmaşık problemleri bile yönetilebilir, anlaşılır parçalara ayırmanın yollarını öğretir. Bu sayfalarda, DDD'nin teorik derinliklerinde kaybolmayacaksınız. Aksine, Java 21'in Sanal Thread'leri (Virtual Threads) ve Record'ları gibi modern güçlerini ve Spring Boot'un sağlam altyapısını birer pusula olarak kullanarak, DDD'nin hem stratejik hem de taktiksel desenlerini adım adım hayata geçireceğiz. Bir "Akıllı Lojistik Platformu" için rota optimizasyonunu veya bir "Dijital Sağlık" uygulamasının veri bütünlüğünü nasıl güvence altına alacağımızı kodlayarak öğreneceğiz. Bu kitap, kariyerinin başındaki bir yazılımcı için sağlam bir temel, deneyimli bir mimar için ise modern dünyaya uyarlanmış yeni bir bakış açısı sunmak üzere tasarlandı. Amacım, size sadece ne yapmanız gerektiğini değil, daha da önemlisi, neden yaptığınızı anlatmak. Böylece sadece kod yazan değil, aynı zamanda değer üreten, işe yön veren ve yazdığı kodla gurur duyan bir yazılım zanaatkarı olmanıza yardımcı olmak. Eğer siz de yazdığınız kodun bir anlam taşımasını, karmaşıklığı yönetmeyi ve yazılım geliştirme sanatında bir sonraki seviyeye geçmeyi hedefliyorsanız, doğru yerdesiniz. Bu heyecan verici yolculuğa çıkmaya hazır mısınız? Hadi başlayalım.

Kurs Müfredatı

1.1. Kod ve İş Dünyası Arasındaki Uçurum: Projeler neden karmaşıklaşır?
1.2. 2025'in Gerçekliği: Hızla değişen iş ihtiyaçları (Örnek: 2025 Paris Olimpiyatları için geliştirilen anlık biletleme sisteminin zorlukları).
1.3. Domain-Driven Design (DDD) Nedir? Teknik Bir Jargondan Fazlası
1.4. DDD'nin İki Temel Direği: Stratejik ve Taktiksel Tasarım
1.5. Bu Kitap Size Ne Vaat Ediyor? Sıfırdan Uzmanlığa Giden Yol Haritanız
Bölüm 1: Yazılım Geliştirmenin Kalbine Yolculuk: Neden DDD? - Quiz

2.1. "Domain" Sadece Bir Kelime Değildir: İş Probleminizin Evreni
2.2. Domain Uzmanları (Domain Experts): Projenizin Gizli Kahramanları
2.3. Her Yerde Aynı Dili Konuşmak: Ubiquitous Language (Evrensel Dil)
2.4. Problem Alanı (Problem Space) ve Çözüm Alanı (Solution Space): Doğru Sorunu Çözdüğümüzden Emin Olmak
Bölüm 2: Her Şeyin Başladığı Yer: Domain (Alan Adı) - Quiz

3.1. Bounded Context (Sınırlı Bağlam): Karmaşıklığı Yönetilebilir Parçalara Ayırmak
3.2 Entegrasyon Desenleri
3.3. Core, Supporting ve Generic Subdomainler: Nereye Odaklanmalıyız?
Bölüm 3: Stratejik Tasarım - Büyük Resmi Görmek - Quiz
Bölüm 3: Stratejik Tasarım - Büyük Resmi Görmek - Quiz

4.1. Neden Java 21? Sanal Thread'ler (Virtual Threads), Record'lar ve Pattern Matching'in DDD için Anlamı
4.2. Geliştirme Ortamının Kurulumu: JDK 21, Spring Boot 3.x ve Maven/Gradle
4.3. Merhaba DDD: İlk Spring Boot Projemiz
Bölüm 4: Java 21 ile Tanışma: Modern Java'nın Gücü - Quiz

5.1. Entity (Varlık): Kimliği Olan Nesneler
5.2. Value Object (Değer Nesnesi): Değiştirilemez (Immutable) ve Kimliği Olmayan Nesneler
5.3. Aggregate (Küme): İş Kurallarının ve Tutarlılığın Kalesi
5.4. Repository (Depo): Aggregate'leri Kalıcı Hale Getirme ve Geri Getirme Sanatı
5.5. Factory (Fabrika): Karmaşık Nesne Oluşturma Mantığını Gizlemek
5.6. Service (Servis): Hiçbir Entity veya Value Object'e Ait Olmayan Domain Operasyonları
Bölüm 5: DDD'nin Yapı Taşları (Building Blocks) - Quiz

6.1. Klasik N-Tier Mimarinin Ötesi: Hexagonal Architecture (Ports & Adapters)
6.2. Katmanlar: Projemizin İç Düzeni
6.3. Spring Boot ile Katmanlı Mimari Proje Yapısı
6.3. Spring Boot ile Katmanlı Mimari Proje Yapısı
Bölüm 6: Uygulama Mimarisi: Katmanları Doğru Ayarlamak - Quiz

7.1. Olay Nedir? Geçmişte Olan ve Değiştirilemeyen Bir Gerçeklik
7.2. Neden Önemli? Bounded Context'ler Arası Gevşek Bağlı (Loosely Coupled) İletişim
7.3. 2025 Örneği: Otonom Araç ve Faturalandırma Senaryosu
7.4. Spring Boot ile Domain Event'leri Yayınlama ve Dinleme
Bölüm 7: Domain Events (Alan Olayları): Sistemleri Ayrıştırmak - Quiz

8.1. Yazma ve Okuma Modellerini Ayırmak: Performans ve Ölçeklenebilirlik
8.2. Command (Komut): Sistemin Durumunu Değiştiren Operasyonlar
8.3. Query (Sorgu): Sistemin Durumunu Değiştirmeyen, Sadece Veri Okuyan Operasyonlar
8.4. Spring Boot ve Axon Framework / Mediator Deseni ile Basit Bir CQRS Implementasyonu
Bölüm 8: CQRS (Command Query Responsibility Segregation) - Quiz

9.1. Anlık Durumu Değil, Olayları Saklamak: Bir Aggregate'in Tüm Yaşam Döngüsünü Kaydetmek
9.2. Faydaları: Tam denetim izi (audit trail), geçmişteki bir ana dönebilme, hata ayıklama kolaylığı.
9.3. 2025 Örneği: Bir "Dijital Sağlık Platformu" ve Hastanın Hikayesi
9.4. Event Store Nedir?
Bölüm 9: Event Sourcing (Olay Kaynağı) - Quiz

10.1. Proje Vizyonu: "Yeşil Rota" - Akıllı Lojistik Platformu
10.2. Stratejik Tasarım
10.3. Taktiksel Tasarım: `Shipment` Context'ine Derinlemesine Bakış
10.4. Kodlama: `Shipment` Servisini Adım Adım Geliştirme
10.5. Test: DDD'de Testin Önemi
Bölüm 10: Vaka Analizi: "Yeşil Rota" - Akıllı Lojistik Platformu - Quiz

11.1. Her Bounded Context Bir Mikroservis mi Olmalı?** Yaygın bir yanılgı ve doğrusu.
11.2. Servisler Arası İletişim:** Senkron (REST) ve Asenkron (RabbitMQ/Kafka) İletişim.
11.3. Dağıtık Sistemlerde Tutarlılık: Saga Pattern'ine Giriş
Bölüm 11: DDD ve Mikroservisler: Doğal Bir İttifak - Quiz

12.1. Refactoring Towards Deeper Insight: Modelin Zamanla Evrimi
12.2. Ekip Kültürü ve DDD: Yazılımcılar ve Domain Uzmanları Nasıl Birlikte Çalışır?
12.3. Geleceğe Bakış:** DDD'nin Yapay Zeka ve Veri Bilimi Projelerindeki Yeri 🤖
Bölüm 12: DDD Felsefesini Sürdürmek - Quiz

Ek A: Faydalı Araçlar ve Kütüphaneler
Ek B: Kavramlar Sözlüğü (Ubiquitous Language)
Ekler - Quiz

Kurs Final Sınavı

Topluluk Tartışmaları

Tümünü Gör
0
Soru
0
Cevaplanmış
0%
Cevap Oranı

Henüz tartışma başlatılmamış.

İlk Soruyu Sor

Öğrenci Değerlendirmeleri

Değerlendir

Henüz değerlendirme yapılmamış. İlk değerlendiren siz olun!