Apakah Desain Berbasis Domain berguna / produktif untuk domain yang tidak terlalu rumit?

16

Ketika menilai proyek potensial di tempat kerja, saya menyarankan bahwa mungkin menguntungkan untuk menggunakan pendekatan desain berbasis domain untuk model objeknya. Proyek ini tidak memiliki domain yang terlalu rumit, jadi rekan kerja saya melemparkan ini ke saya:

Telah dikatakan, bahwa DDD menguntungkan dalam kasus di mana ada model domain yang kompleks ("... Ini berlaku setiap kali kami beroperasi dalam domain yang kompleks dan rumit" Eric Evans).

Apa yang saya hilang adalah - bagaimana Anda mendefinisikan kompleksitas suatu domain? Bisakah itu ditentukan oleh jumlah akar agregat dalam model domain? Apakah kompleksitas suatu domain dalam interaksi objek?

Domain yang kami nilai terkait dengan penerbitan online dan manajemen konten.

Elia
sumber
Anda tahu bahwa domain Anda cukup kompleks untuk membenarkan DDD ketika Anda menggunakan DDD untuk memodelkannya. :)
Adam Crossland

Jawaban:

18

Kompleksitas logika bisnis, atau disebut perilaku aplikasi, adalah faktor yang paling penting. Faktor paling penting kedua adalah seberapa besar kesenjangan antara masalah teknis dan kosakata bisnis yang digunakan untuk menggambarkan masalah itu, karena DDD adalah tentang menciptakan kosakata bersama antara bisnis dan tim teknik.

Beberapa pola yang digunakan dalam DDD umumnya berguna dalam arsitektur aplikasi perusahaan, seperti pola Repositori, Bounded Context, dan Layered Architecture. Hanya karena Anda menggunakan pola-pola itu, bukan berarti Anda melakukan desain yang didorong oleh domain.

Jika tidak ada banyak perilaku, artinya, Anda kebanyakan menyimpan data, dan tidak bertindak pada data itu, mungkin ada nilai yang jauh lebih sedikit dalam membangun lapisan domain itu. Dalam manajemen konten, jika semua yang Anda lakukan adalah menyetujui dan mempublikasikan, mungkin itu dapat diwakili oleh tanda di sistem, daripada metode domain. Tetapi ketika Anda mulai menambahkan perilaku tambahan, kesesuaian lapisan domain penuh menjadi lebih jelas.

Jika kita berbicara tentang manajemen konten, berikut adalah beberapa aturan (bayangkan) yang mungkin mulai mengisyaratkan perlunya DDD:

  • Jika cerita diembargo sampai tanggal xx / yy / zz, terbitkan untuk dicetak, kemudian ke web; jika tidak ada embargo, terbitkan ke web dan buat tersedia untuk dicetak
  • Jadikan cerita ini tersedia di belakang paywall untuk pelanggan yang dibayar segera; rilis ke masyarakat umum 2 minggu kemudian.
  • Setelah sebuah cerita ditulis, kirimkan ke editor untuk revisi, proofreading, dan persetujuan. Ketika disetujui, kirimkan ke produksi. Jika produksi memotong cerita karena alasan ruang, buat versi yang diperluas tersedia secara online.
Jason True
sumber