Pentingnya Penerapan Architectural Pattern pada Programming

Apanda Saragih
5 min readMay 3, 2021

--

Dalam membangun sebuah software pada sisi back-end ataupun front-end, banyak yang harus dipersiapkan sebelum bekerja. Selain programming language apa yang ingin kita gunakan, kita juga harus mempersiapkan architectural pattern apa yang kita pakai.

Apa sih Architectural Pattern Itu?

Pembangunan sebuah software, sering kali kita menemui sebuah masalah yang terus mungkin berulang-ulang. Sebagai contoh, kita ingin mengembangkan suatu fitur. Hal pertama yang kita harus pikirkan adalah struktur yang cocok yang akan kita gunakan pada software kita, dengan kata lain, kita harus mengetahui terlebih dahulu bagaimana nantinya flow program kita berjalan.

Menurut Wikipedia,

Architectural pattern adalah solusi umum yang bisa dipergunakan kembali atau berulang-ulang untuk menyelesaikan masalah-masalah yang umum terjadi dalam konteks tertentu atau khusus yang ditemui pada desain perangkat lunak.

“Solusi Umum”,
adalah kalimat yang tepat untuk menggambarkan architectural pattern. Architectural pattern menyediakan struktur yang sudah di define sebelumnya yang bisa kita implementasikan pada program kita, tetapi tidak terbatas pada program kita saja. Architectural pattern bisa diimplementasikan di project apapun selagi cocok dengan programnya.

Dengan kata lain, architectural pattern adalah

Sebuah konsep yang sudah ditentukan sebelumnya untuk menyelesaikan masalah umum yang kita gunakan untuk menentukan pembagian tugas dari masing-masing subsystem software kita dan bagaimana cara mereka berkomunikasi satu sama lain untuk membentuk sebuah flow yang kita inginkan.

Masih bingung? Mari kita masuk ke implementasinya.

Architectural Pattern: Model-View-Controller-Service

MVC pattern (Source: researchgate.net)

Dalam proyek PPL kali ini, kelompok saya mengimplementasi Architectural Pattern yang bernama Model-View-Controller-Service atau bisa disebut dengan MVCS.

Mengapa MVCS Pattern?

Alasan utama saya memilih MVCS adalah karena menurut saya dan kelompok, MVCS pattern merupakan architectural pattern yang cukup sederhana dan mudah diimplementasi. Selain itu, pattern ini cocok untuk proyek kami karena aplikasi yang kami bangun berorientasi pada user dan data.

Pada MVC pattern, ada 3 pembagian subsystem utama yang saya implementasikan, diantaranya:

  1. Model
    Bagian ini bertugas untuk menentukan bentuk object dari data yang ada di databases serta relasi antar objectnya. Sebagai contoh pada proyek PPL ini kami mempunyai sebuah object Order yang berisi pembeli, penjual, tipe pembelian, status, dan lainnya.
  2. View
    Sebuah back-end service, selain menerima request, harus bisa memberi data yang diinginkan. Dengan kata lain, sebagai back-end engineer, saya harus bisa memberikan data yang sesuai yang di request dari front-end. Nantinya, front-end akan menampilkan data-data yang dikirim back-end sesuai keinginan.
  3. Controller
    Untuk bisa berkomunikasi dengan user (atau front-end), sebuah back-end service harus menyediakan sebuah end-point yang bisa diibaratkan sebagai “pintu gerbang” komunikasi. Maka dari itu kita membutuhkan controller yang bertugas untuk menerima request dan mengatur fungsi apa saja yang dipanggil sesuai request-nya.
  4. Service
    Bagian ini merupakan core dari MVCS. Service bertugas untuk mengatur business logic dari back-end. Service ini nantinya akan berkomunikasi dengan model untuk mengolah data dan view untuk dikirim ke front-end.
Struktur Subsystem MVCS

Mungkin teman-teman ada yang bingun, apa sih bedanya MVC (Model-View-Controller) dengan MVCS? Sebenarnya sama saja, hanya saja MVC menumpuk business logic-nya di Controller, sedangkan MVCS memindahkan business logic-nya dari Controller ke subsystem baru, yaitu Service.

Flow MVCS Pattern

Biar semakin terbayang bagaimana MVCS bekerja, mari bahas dengan contoh proyek Gerobak kelompok saya.

Flow MVCS

Kasus yang akan bahas adalah user yang ingin melihat detail deskripsi Gerobak yang ingin dibeli.

Mulai dari Controller

Pertama, user akan membuka halaman front-end kelompok saya (flutter) yang akan memanggil suatu API controller yang bertujuan untuk mengambil deskripsi dari Gerobak. User(front-end) akan memanggil API controller viewGerobakDetail dengan end-point “/gerobak/view/{idGerobak}

Controller Gerobak

Selanjutnya, di bagian bawah bisa dilihat bahwa controller di atas memanggil sebuah method yang ada pada Service OrderBuyerService, yaitu method getGerobakDetail().

Sejauh ini sudah paham kan? Tugas controller sudah selesai di sini.

Sekarang kita masuk ke bagian Service.

Masuk ke Service

Fokus utama Service adalah sebagai business logic dari fungsi kita. Jika kita memanggil API viewGerobakDetail, maka service yang dipanggil pun merupakan service yang bertugas mengambil order dari database, yaitu getGerobakDetail().

Service Gerobak

Pada Service GerobakService, salah satu method service adalah getGerobakDetail(), di mana bertugas untuk mengambil model object Gerobak dan Menu dari database.

Persiapkan View untuk Front-End

Setelah mendapat model object Gerobak (RAW) dari database, kita perlu menyesuaikan datanya sebelum dikirim ke front-end. Dalam kasus ini, saya menggunakan object VO sebagai perantara antara model dan json.

Setelah mendapat VO yang diinginkan, data dikembalikan ke front-end dan ditampilkan di aplikasi mobile. Berikut merupakan contoh hasil View.

View Gerobak

Hasilnya, user bisa melihat detail deskripsi Gerobak penjual, mulai dari nama gerobak, tipe barang, dan menu-menu yang disajikan.

Keuntungan dan kerugian MVCS Pattern

Wahh ternyata cukup sederhana yaa flow MVCS/MVC. Lalu apa saja sih keuntungan kita menggunakan MVCS/MVC?.

Ada beberapa kelebihan dari MVCS Pattern, diantaranya:

  1. Development aplikasi akan lebih cepat dan mudah.
    Karena kesederhanaan mechanism dari MVCS, diharapkan pengembangan aplikasi bisa menjadi cepat.
  2. Mudah dalam Perkembangan dalam Tim.
    Dengan menggunakan MVCS, kita bisa membagi fitur-fitur ke berbagai macam modul yang berbeda. Hal ini membuat developer bisa mengerjakan tugasnya masing-masing tanpa menunggu satu sama lain.
  3. Mudah untuk menemukan Error.
    MVCS memungkinkan kita mudah untuk melakukan debug dikarenakan flow-nya yang sederhana.

Tetapi sayangnya, ada satu masalah utama yang menyebabkan kita harus berpikir dua kali sebelum menggunakan MVCS/MVC, yaitu rule yang sangat ketat. Semua request yang masuk telah di tentukan rutenya diawal, yaitu dari Controller lalu ke Service lalu dikembalikan menjadi response. Selain itu, MVCS tidak cocok untuk aplikasi yang kecil, karena jika digunakan, akan sangat terasa bebas performance yang ada.

Dengan adanya tulisan ini, semoga teman-teman semua bisa terbayang tentang penerapan MVCS dan pentingnya architectural pattern bagi programmer.

Terima kasih!👍😎😎

Referensi:

What is MVC? Advantages and Disadvantages of MVC — Interserver Tips

--

--

No responses yet