Menentukan Struktur Folder Project: per Domain atau per Layer?

By Rizky Kurniawan - October 4, 2022 ~3 mins read

Halo Talenta Digital! Selamat datang kembali di blog Ruang Developer. Gimana kabarnya hari ini? Semoga masih semangat buat belajar ya!

Ketika mengerjakan project aplikasi, tidak jarang kita akan menemui masa di mana kita akan sedikit kebingungan untuk menentukan struktur folder untuk project kita. Apalagi kita mengerjakan semuanya dari nol (tanpa framework) atau menggunakan framework yang sangat menyediakan kebebasan seperti Express JS. Tentu hal ini akan membuat kita merasa bingung untuk menentukan struktur foldernya, khususnya bagi kita yang baru belajar pemrogramman.

Struktur Folder Project

Project aplikasi yang kita kerjakan pastinya tidak hanya terdiri dari satu buah file saja tetapi juga bisa puluhan hingga ratusan lebih file yang memiliki fungsinya masing-masing. Menentukan struktur folder sangat penting dalam mengerjakan project aplikasi. Kalau kita salah, maka akan berujung menghabiskan waktu untuk memindah-mindah file untuk meletakkannya di folder yang tepat, apalagi kalau kita harus merubah import path atau namespace di dalam kode kita. Ada beberapa struktur folder yang bisa kita ikuti untuk merapikan project kita. Di postingan ini kita akan bahas dua struktur folder yaitu Folder per Domain dan Folder per Layer.

Folder per Domain

Sebuah aplikasi biasanya bisa terdiri dari beberapa domain. Domain yang dimaksud bukanlah domain name seperti example.com atau example.org ya. Domain disini mengacu pada area subjek di mana bagian dari aplikasi tersebut diterapkan. Secara sederhana domain ini biasa disebut sebagai fitur. Contohnya pada sebuah aplikasi e-commerce terdapat fitur pemesanan, keranjang belanja, pengirimkan, pembayaran, dan lain-lain. Saat menggunakan struktur folder per domain, maka file-file project akan dipisahkan berdasarkan domain-domain tersebut. Contohnya sebagai berikut:

Folder per Domain

Di dalam domain folder tersebut akan disimpan layer-layer file seperti controller, service, middleware, dan lain-lain.

Struktur folder per domain jarang digunakan. Struktur folder ini biasanya digunakan pada proyek yang sangat besar dan monolith (semua fungsional dalam satu aplikasi). Contoh framework yang menggunakan struktur folder seperti ini adalah Django.

Folder per Layer

Jika pada struktur folder per domain, tiap-tiap domain memiliki folder masing-masing dan kemudian layer aplikasi berada di dalamnya. Sedangkan jika menggunakan struktur folder per layer, maka layer-layer tersebut lah yang akan menjadi folder di project kita. Sehingga, layer untuk tiap domain aplikasi berada di tempat yang terpisah-pisah. Berikut ini adalah contoh struktur folder per layer:

Folder per Layer

Struktur folder per layer adalah struktur folder yang lumayan banyak digunakan. Contoh framework yang menggunakan struktur folder seperti ini adalah Laravel beberapa framework MVC lain seperti CodeIgniter.

Struktur folder seperi ini sangat mudah dan nyaman digunakan pada project yang sederhana. Kalau project sudah terlalu besar dan memiliki banyak file, mungkin kamu akan sedikit kesulitan untuk berpindah-pindah antar layer aplikasi saat mengerjakan project.

Menentukan Struktur Folder yang Tepat

Untuk menentukan struktur folder yang tepat sebenarnya banyak faktor yang mempengaruhinya. Berikut ini beberapa tips yang bisa kamu terapkan ketika menentukan struktur folder untuk project yang kamu kerjakan.

  1. Jika menggunakan framework dan framework tersebut sudah memiliki struktur folder bawaannya, maka akan lebih mudah jika kamu mengikuti struktur folder tersebut.
  2. Pertimbangkan seberapa kompleks project yang kamu kerjakan. Struktur folder untuk project aplikasi webhook yang hanya menangani satu buah event tentu berbeda dengan project aplikasi REST API.
  3. Gunakan folder per domain untuk aplikasi monolith yang kompleks. Gunakan folder per layer untuk aplikasi microservice.
  4. Ikuti best practice berdasarkan software design architecture.
Bagikan:

Ingin Berdiskusi?

Yuk bergabung di Grup Telegram Ruang Developer atau mulai diskusi melalui GitHub. See You!

Dapatkan contoh source code project backend, frontend, atau fullstack untuk kamu amati, tiru, dan modifikasi sesuka hati. Klik untuk melihat detail!
comments powered by Disqus

Berlangganan Gratis

Kamu akan menerima email update dari Ruang Developer

Beri Dukungan

Beri dukungan, dapatkan full source code project web untuk bahan referensi, tiru, dan modifikasi.
Lightbox