Miroservices
Bentuk Baru dari Arsitektur Aplikasi
Daftar Isi
- Overview
- Microservice
- Apa itu Microservices?
- Pros dan Cons dari Microservices - Kesimpulan
Overview
Sebelum adanya arsitektur microservice, semua sistem dibangun dengan Monolithic Architecture.
Arsitektur Monolitik merupakan aplikasi yang antarmuka pengguna, kode akses data, dan logika bisnisnya digabung menjadi satu program (Venugopal, 2017).
Logika bisnis disini maksudnya bagaimana data dapat dibuat, disimpan, dan diubah sebagaimana aturan di dunia nyata.
Dengan bertambahnya kompleksitas dari suatu aplikasi akan timbul permasalahan pada arsitektur ini yaitu sulit untuk diatur (difficult to manage). Microservice datang menjadi jalan alternatif untuk membangun sebuah aplikasi, namun apakah microservice ini worth it untuk diaplikasikan atau malah mempersulit?
Microservices
Apa itu Microservices?
Microservice merupakan sebuah pendekatan untuk mengembangkan aplikasi dari berbagai macam layanan mikro/kecil yang berkomunikasi secara ringan(lightweight) dan berjalan dengan independen². Dengan kata lain microservice merupakan sebuah aplikasi dibangun dengan cara memecah suatu fungsionalitas menjadi beberapa layanan/services.
Pros dan Cons dari Microservices
Pros
- Independent (Independen): proses debugging, pengaturan dan deployment aplikasi tidak mempengaruhi layanan lain karena setiap layanan bersifat independen.
- Highly Scalable (Sangat terukur): dengan microservices aplikasi dapat diperluas secara horizontal yang artinya kenaikan traffic dari sebuah aplikasi dapat diatasi dengan penambahan server lainnya, berbeda dengan vertikal yang mengharuskan untuk mengupgrade komponen server yang sedang berjalan.
- Easier to Maintain (Lebih mudah dirawat): karena setiap services bersifat independent hal ini membuat proses pemeliharaan menjadi lebih mudah.
- Flexible (Fleksibel): menambahkan fitur / teknologi baru yang diinginkan ke dalam aplikasi menjadi lebih mudah. Selain itu microservice tidak terikat dengan 1 bahasa pemrograman sehingga service bisa bekerja seefisien dan sefleksibel mungkin tergantung bahasa pemrograman yang digunakan.
Cons
- Konfigurasi yang Kompleks, memecah suatu fungsional menjadi beberapa bagian tentu saja akan menambah kompleksitas dari konfigurasi terlebih tentang bagaimana setiap service tersebut bekerjasama satu dengan yang lain.
- Membutuhkan skill yang spesifik, ini juga merupakan salah satu alasan kenapa microserice jarang digunakan. Microservice memiliki steep learning curve, dengan kata lain relatif susah untuk dipelajari dan membutuhkan effort yang lebih.
- Biaya tambahan, penggunaan microservice bisa jadi dapat mengurangi biaya atau mungkin juga dapat menambah biaya tergantung bagaimana microservice dan dependencies-nya diatur.
- Time consuming, mengkonfigurasi, melakukan debugging, dan memelihara setiap service sudah pasti akan menyita banyak waktu. Sama halnya dengan belajar tentang konsep karena memiliki steep learning curve, belajar microservice juga membutuhkan waktu yang tidak sedikit.
Kesimpulan
Aplikasi dengan Arsitektur Monolithic dibangun dengan menempatkan semua funsionalitas dalam satu process sedangkan microservice membuat fungsionalitas tersebut terpecah menjadi beberapa layanan/services. Semakin besarnya sebuah aplikasi.
Dalam Segi performa monolithic sedikit unggul dibandingkan dengan microservices yaitu sebesar 6% dalam hal concurrency³. Meskipun demikian, arsitektur monolithic sebaiknya digunakan untuk membangun aplikasi berskala kecil yang digunakan oleh tidak lebih dari ribuan user.
Untuk memilih menggunakan monolithic atau microservices ada beberapa hal yang perlu dipertimbangkan:
• Skala aplikasi yang ingin dibangun, untuk membangun aplikasi dengan skala kecil dan sebaiknya gunakan arsitektur monolithic karena kelemahan microservice yaitu time consuming sehingga sangat tidak disarankan untuk membuat aplikasi kecil dengan arsitektur ini.
• Biaya dan waktu
• Kompleksitas aplikasi, aplikasi yang kompleks sebaiknya dibangun menggunakan microservice sehingga managing, debugging dan maintenance aplikasi lebih mudah
Monolithic dan microservice memiliki use-case masing-masing. Pertanyaannya bukan apa yang lebih bagus, namun apa yang lebih tepat? Jawabannya dapat diperoleh dengan mempertimbangkan faktor diatas tadi.
Referensi
[1]: Venugopal, M.V.L.N. 2017. “Containerized Microservices architecture”.
[2]: Lewis, J. & Fowler, M. 2014. “Microservices”
[3]: O. Al-Debagy and P. Martinek. 2018. “A Comparative Review of Microservices and Monolithic Architectures,” 2018 IEEE 18th International Symposium on Computational Intelligence and Informatics (CINTI).
[4]: Elliot, Roxana. 2022. Monolithic vs microservice architecture: Which is best?
[5]: Pratama, R. Y. 2018. “Microservice, Apaan tuh?”