Back to blog
Best Practice

Domain-Driven Design (DDD): Menata Folder Proyek Secara Profesional

Jika proyek Node.js atau React-mu masih menggunakan folder /controllers, /models, dan /views, bersiaplah untuk pusing saat fitur mencapai ratusan.

super adminยท29 Juni 2026ยท2 min read
Domain-Driven Design (DDD): Menata Folder Proyek Secara Profesional
Article Content

Penyakit Arsitektur Berbasis Jenis File (Layer-First)

Saat kamu belajar framework MVC (Model-View-Controller) seperti Express.js, NestJS, atau Laravel, struktur bawaan foldermu biasanya dipisahkan berdasarkan tugas teknisnya:

๐Ÿ“ /controllers
   ๐Ÿ“„ UserController.js
   ๐Ÿ“„ OrderController.js
   ๐Ÿ“„ ProductController.js
๐Ÿ“ /models
   ๐Ÿ“„ User.js
   ๐Ÿ“„ Order.js
   ๐Ÿ“„ Product.js

Arsitektur ini sangat rapi untuk aplikasi pemula. TAPI, saat fitur mulai mencapai angka ratusan, mencari alur sistem menjadi siksaan batin. Jika kamu ditugaskan untuk memperbaiki fitur "Checkout Pesanan (Order)", kamu harus membuka *folder Controllers*, lalu *scroll* mencari huruf O. Lalu kamu harus membuka folder *Models*, *scroll* lagi ke huruf O, lalu *Services* huruf O. Otakmu kelelahan berpindah *folder*!

Masuklah Domain-Driven Design (Konsep Bisnis)

Dalam proyek level *Enterprise*, kita meninggalkan pengelompokan teknis, dan beralih ke Domain-Driven Design (DDD) atau yang sering disebut Feature-Sliced Design.

Alih-alih mengelompokkan kode berdasarkan "Jenis Mesin-nya", kita memisahkannya berdasarkan Konteks Bisnisnya (Domain).

๐Ÿ“ /modules (atau /domains)
   ๐Ÿ“ /User
      ๐Ÿ“„ UserController.js
      ๐Ÿ“„ UserModel.js
      ๐Ÿ“„ UserService.js
   ๐Ÿ“ /Order
      ๐Ÿ“„ OrderController.js
      ๐Ÿ“„ OrderModel.js
      ๐Ÿ“„ OrderService.js

Keuntungan Pola Pikir Domain (Microservices-Ready)

Melihat struktur DDD di atas, Tech Lead akan sangat menyukainya. Jika ada Bug di fitur Pembayaran (Order), kamu hanya perlu membuka Satu Folder (Domain Order). Seluruh fungsi Database, Logika Bisnis, dan *Endpoint URL API* yang terkait dengan transaksi pembayaran sudah ada terpusat di dalam satu folder kecil itu (Encapsulation).

Kelebihan jangka panjang terbesarnya: Suatu hari nanti jika perusahaan ingin bermigrasi ke Microservices, struktur ini membuat kode sangat mudah di-*Copy-Paste*. Kamu cukup mengambil folder /Order tersebut seutuhnya secara utuh (*Self-Contained*), memindahkannya ke server AWS yang baru, dan ia siap menjadi sebuah Service API Tunggal (Order-Service) tanpa membawa kode User yang tidak relevan!

Mau langsung pakai template?

Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.

Browse Templates