Perbedaan Domain Driven Design ( DDD ) dengan Clean Architechture

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, Paymentbounded 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.

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)