Memahami Domain Bisnis pada DDD
Menulis kode yang bagus saja belum cukup untuk menghasilkan solusi yang efektif. Menurut Khononov (2022) kita harus terlebih dahulu memahami strategi bisnis perusahaan dan nilai apa yang ingin dicapai dengan perangkat lunak tersebut. Domain bisnis (business domain) adalah area utama aktivitas perusahaan, layanan atau produk yang disediakan kepada pelanggan.
Misalnya, FedEx bergerak di domain pengiriman paket, Starbucks di domain kopi, sedangkan Amazon bisa punya beberapa domain (ritel dan komputasi awan). Perusahaan juga bisa berpindah domain bisnis seiring waktu (Nokia dulu berbisnis kayu, karet, lalu telekomunikasi).
Untuk mencapai tujuan bisnisnya, sebuah perusahaan membagi pekerjaannya ke dalam subdomain yang lebih kecil. Subdomain adalah area kegiatan bisnis yang lebih terperinci, bagian dari keseluruhan domain perusahaan. Tiap subdomain saling berinteraksi agar perusahaan dapat berhasil, misalnya Starbuck tidak hanya membuat kopi (subdomain kopi), tapi juga harus mengelola lokasi gerai, pegawai, dan keuangan (subdomain pendukung) agar bisnisnya lancar.
Domain-driven design (DDD) membedakan tiga jenis subdomain berdasarkan nilai strategisnya:
Subdomain Inti (Core)
Ini adalah hal-hal yang membuat perusahaan berbeda dari kompetitor. Subdomain inti mengandung keahlian khusus atau inovasi bisnis. Contohnya, Uber mempelopori ridesharing, atau algoritma pencarian Google yang unggul. Model bisnis inti biasanya kompleks dan sulit ditiru, karena di situlah perusahaan meraih keunggulan kompetitif.
Subdomain Generik (Generic)
Ini adalah aktivitas bisnis yang semua perusahaan serupa juga lakukan, dengan cara yang sama. Karena tidak memberi keunggulan khusus, perusahaan biasanya memakai solusi siap pakai. Misalnya, hampir semua sistem perlu autentikasi pengguna, lebih murah dan aman pakai implementasi umum daripada menciptakan sendiri.
Subdomain Pendukung (Supporting)
Ini subdomain yang penting bagi operasional tetapi tidak memberi keunggulan kompetitif. Misalnya, perusahaan periklanan online perlu katalog kreatif materi iklan. Mengelola katalog ini adalah subdomain pendukung: perlu dilakukan tetapi tidak perlu inovasi khusus karena tidak menambah keuntungan unik. Subdomain pendukung biasanya relatif sederhana (biasa berupa operasi CRUD atau ETL) dan mudah di-copy oleh pesaing tanpa merusak posisi bisnis.
Secara singkat, hanya subdomain inti yang memberikan nilai bisnis khusus (keunggulan kompetitif), sementara subdomain generik dan pendukung cenderung biasa-biasa saja. Akibatnya, perusahaan sering memprioritaskan investasi pada sistem dan inovasi di subdomain inti.
Orang-orang pakar domain (domain experts) adalah kunci di sini. Mereka adalah orang yang benar-benar memahami seluk-beluk bisnis, bukan para insinyur. Mereka bisa saja berasal dari manajemen, analis keuangan, atau pengguna akhir sistem, siapa saja yang tahu bisnis paling dalam. Tugas kita sebagai pengembang adalah menyerap ilmu dari mereka. Kita tidak dapat menjadi ahli domain sepenuhnya, tetapi kita harus menggunakan bahasa dan istilah yang mereka pakai agar solusi kita sesuai dengan kebutuhan nyata.
Ilustrasi Analogi: Anggap subdomain seperti bahan penyusun bangunan. Jika arsitek rumah fokus pada desain eksterior (core), urusan listrik, pipa, dan interior adalah supporting, sementara material bangunan standar (beton, baja) dianggap generic. Semua diperlukan, tapi kita akan bersusah payah mengubah desain eksterior daripada mengganti mutu semen yang digunakan semua orang.
Pada akhirnya, keseluruhan domain bisnis menentukan apa yang ingin dicapai perusahaan, sedangkan jenis-jenis subdomain menentukan bagaimana cara mencapainya. Memahami perbedaan ini sangat penting: dengan mengidentifikasi subdomain inti/generic/pendukung, kita bisa fokus merancang sistem yang tepat untuk tiap kasus.
Referensi
Konsep-konsep di atas diuraikan oleh Khononov (2022) dalam Learning Domain-Driven Design.