Perbedaan Domain Driven Design ( DDD ) dengan Clean Architechture

Konsep antara DDD dan Clean Architechture terlihat mirip, karena ada proses pemindahan sesuai dengan domainnya.
Aspek | Domain-Driven Design (DDD) | Clean Architecture |
---|---|---|
🎯 Fokus | Model dan logika bisnis domain | Struktur kode dan alur dependensi |
🧱 Tujuan | Memahami dan memodelkan dunia nyata | Menjaga kode agar mudah diubah, diuji, dan dikembangkan |
🧩 Elemen utama | Entity, Value Object, Aggregate, Domain Service, Bounded Context | Entity, Use Case (Interactor), Interface Adapter, Infrastructure |
🔄 Hubungan antar bagian | Didesain berdasarkan realitas bisnis | Dibuat untuk menjaga alur dependensi satu arah (dari dalam ke luar) |
💬 Bahasa | Tekankan Ubiquitous Language antara developer dan stakeholder | Tidak terlalu fokus ke komunikasi bisnis |
💾 Ketergantungan | Domain tidak tahu database / framework (sama) | Lebih ketat: semua dependensi harus mengarah keluar, tidak sebaliknya |
Bayangin kamu bikin sistem pemesanan makanan.
Dengan DDD:
- Kamu bikin
Order
entity,Address
value object,PlaceOrderService
, dll — berdasarkan konsep nyata dalam bisnis - Kamu tentukan batas domain seperti
Order
,User
,Payment
→ bounded context
Dengan Clean Architecture:
- Kamu atur supaya kode kamu punya lapisan (layer):
- Entity: aturan bisnis inti (misal:
Order
,Discount
) - Use Case:
PlaceOrderInteractor
(mengatur urutan logika) - Interface Adapter: Controller, Presenter
- Infrastructure: Laravel, database, API, email, dsb.
- Entity: aturan bisnis inti (misal:
Namun, DDD bisa berjalan di atas Clean Architecture.
- DDD bantu kamu memahami dan membangun model bisnisnya
- Clean Architecture bantu kamu mengatur kode & dependensinya
Ibaratnya:DDD = isi otaknya (gimana bisnisnya bekerja)Clean Architecture = kerangka tubuhnya (gimana semua bagian tersambung dan bergerak)