Perbedaan Arsitektur Monolitic dan Microservice


Saya terpikir mau bikin rubrik baru disini yang membahas teknis kerjaan tipis-tipis. Biar 1-2 jam waktu senggang pas kerja nggak terbuang. Semua boleh baca, semoga tersampaikan poinnya tapi tidak terlalu rumit untuk dipahami. Saya kumpulkan dalam label: BELAJAR IT (karena saya juga masih belajar). Semoga bermanfaat minimal untuk saya sendiri, kalau ada yang keliru mohon direvisi dan silakan komen apapun :)

Mari kita mulai..

 

Tren pengembangan aplikasi saat ini bergeser dari arsitektur monolitik menuju arsitektur mikroservis. Perbedaan mendasar konsep monolitik dan mikroservis yaitu, pada arsitektur monolitik aplikasi dibangun sebagai sebuah kesatuan unit. Sementara pada mikroservis suatu aplikasi terdiri dari beberapa service yang memiliki fungsi masing-masing dan saling terhubung. Kata kuncinya:

Monolitik: satu code base besar, satu set database, pokoknya semua jadi satu bundel

    Kelebihan monolitik: mudah dideploy karena hanya satu paket, mudah didevelop, mudah dites

    Kekurangan monolitik: sulit scale-up, sulit di-tweak karena harus masuk ke code besar, kurang compatible dengan teknologi sekarang

Mikroservice: banyak service kecil-kecil dengan masing-masing logic dan databasenya sendiri

    Kelebihan mikroservice: lincah, mudah dan cepat diupdate, mudah scale-up, mudah dipelajari

    Kekurangan mikroservice: data transfer antar service adalah isu tersendiri, monitoring lebih banyak

Secara umum bisa dikatakan bahwa pendekatan monolitik lebih tradisional dan mikroservis muncul untuk menggantikannya. Namun arsitektur monolitik tidak akan sepenuhnya ditinggalkan. Karena untuk aplikasi yang sederhana, waktu development singkat, dan dikerjakan oleh tim yang relatif kecil lebih baik tetap menggunakan monolitik karena akan jauh lebih efisien. Gampangnya wes lah kalo belum perlu mikroservis bikin monolitik aja.

Sementara itu untuk aplikasi enterprise dengan requirement tinggi, dituntut selalu up-to-date apalagi bersaing dengan kompetitor, memiliki resource development yang besar, dan direncanakan untuk penggunaan jangka panjang sebelum major overhaul alangkah baiknya menggunakan arsitektur mikroservis.

Saya coba ambil contoh aplikasi mobile yang sering digunakan orang-orang. Sebuah aplikasi belanja, walaupun di handphone tampak sebagai satu aplikasi, sebenarnya terdiri dari banyak service yang saling terkoneksi di belakangnya. Antara layanan belanja barang, food delivery, pulsa & tagihan, dompet digital, dan flashsale dijalankan oleh service yang berbeda dan dibungkus jadi satu aplikasi.

Rasakan deh, meskipun color theme dan font-nya sama tapi nuansa user experience-nya tetap agak berbeda antar layanan itu tadi. Dulu marketplace ijo punya layanan jual handphone (nggak tahu sekarang masih ada atau enggak). Ketika masuk ke menu jual hp itu desain UI-nya langsung berbeda dengan laman belanja. Patut diduga itu karena servicenya terpisah, dibuat oleh tim atau squad yang berbeda. 

Bahkan untuk satu rangkaian aktivitas belanja barang saja user akan melewati beberapa service berbeda. Antara laman untuk milih-milih barang, input alamat dan ongkir, sama pembayaran, pasti kerasa kan 'lompatannya'. Kalau sinyal lagi buruk kadang-kadang nyangkut di satu step nggak bisa lanjut ke step berikutnya, bisa jadi karena antar step itu beda service yang melayani. 

Kenapa aplikasi marketplace perlu begini? Ya simpelnya supaya agile, gampang berkembang baik secara volume maupun jenis layanan. Mau nambah layananan food delivery? bisa. Mau hapus layanan beberes rumah? bisa. Sekarang bahkan ada pedulilindungi tuh di aplikasi belanja.

Kesimpulannya arsitektur mikroservis ini sifatnya modular, bisa copot pasang, bisa improve per komponen nggak perlu semuanya sekaligus, makanya dikit-dikit aplikasi minta update.


Thank you!

Chandra


0 comments :

Post a Comment