011-2026
Zaman dulu kalau kita bikin aplikasi, kita akan menyediakan 1 buah server yang berfungsi melayani permintaan dari awal sampai akhir atau sejak request masuk sampai dengan diproses dan keluar lagi. Metode ini disebut monolith. Sebagaimana patung segede gaban, monolith ini memang server besar multifungsi untuk melayani request.
Kekurangan monolith ini adalah jika ada perubahan di salah satu fungsi maka akan merubah struktur yang lain. Selain itu dependenciesnya terlalu tinggi. Tapi di sisi lain, kelebihannya adalah sederhana dan relatif lebih cepat karena koneksi berada dalam satu mesin.
Berkebalikam dengan itu, ada konsep lainnya yaitu microservices. Konsep ini bertujuan untuk membagi request ke dalam beberapa function kecil-kecil dan managable. Kelebihannya fleksible, 1 microservices menangani 1 fungsi, misalkan save data, update data, atau query data. Per-fungsi ini nanti kita bikin di serverless. Kuncinya adalah mencegah dependencies antar-fungsi. Kekurangannya adalah ribet bikin per-resources dan antar-koneksi pastinya butuh waktu. Selain itu ribet atau kompleksitas resources jika microservices makin banyak, apalagi resourcenya tersebar. Belum lagi banyak log yang harus dimaintain. Overhead costnya banyak. Istilahnya punya minion yang perlu dijaga satu-satu.
Tapi perkara mau pakai microservices atau monolith sebenarnya balik kepada kebutuhan program lagi. Kalau butuh scale up vertikal ya microservices. Tapi kalau jumlah fungsinya atau fitur overgrowth, coba dibikin lebih sederhana pakai monolith.
simple thing should be simple, complex thing should be possible
Leave a Reply