Pertama kali saya mendengar istilah Microservices adalah ketika berdiskusi tentang bagaimana arsitektur sistem itu seharusnya dibuat. Dan alhamdulillah, beberapa hari dari diskusi itu, muncul kebutuhan diperusahaan tempat saya bekerja untuk mencoba membuat sistem dengan konsep Microservices, dan saya pun diberi kesempatan untuk eksplorasi lebih jauh tentang itu.
Setelah sekian lama tidak menulis diblog, saya pikir ini topik yang bagus untuk ditulis. Karena dengan menulis, apa yang kita pelajari akan lebih mudah diingat.
Baca juga Seberapa Kecil Microservices yang Harus Dibuat?
Microservices
Microservices adalah sebuah service dimana service tersebut difokuskan untuk fungsi tertentu. Kumpulan service-service ini bila saling berkomunikasi dapat menjadi sebuah sistem yang besar.
Dalam implementasinya, secara sederhana kita harus memecah aplikasi yang ingin kita buat secara spesifik/rinci dari sisi fungsionalitasnya. Setiap fungsi harus mampu bekerja secara independent, dan fungsi-fungsi tersebut dapat dibangun menggunakan teknologi yang berbeda-beda sesuai dengan kebutuhan. Sehingga sangat memungkinkan akan terdapat banyak teknologi dalam satu aplikasi besar.
Sebagai contoh, saya akan coba mengambil diagram yang saya dapatkan di situs nginx.com.
![]() |
Diagram Contoh Aplikasi Taxi Online |
Setiap backend difasilitasi oleh REST API dan setiap service dapat saling berkomunikasi melalui REST API-nya masing-masing. Sebagai contoh, misalnya Driver Management menggunakan REST-API-nya Notification untuk mengirimkan daftar pengemudi yang available untuk sebuah perjalanan.
Manfaat Microservices
Arsitektur Microservices memiliki beberapa manfaat, yang pertama adalah Arsitektur Microservices dapat menurunkan tingkat kompleksitas suatu sistem. Dengan membagi-bagi setiap fungsi secara spesifik, kita sebagai pengembang dapat fokus kepada fungsi-fungsi spesifik tersebut, atau dengan kata lain, kita dapat memperkecil scope yang kita kerjakan.
Kedua, developer akan lebih fleksibel dalam menentukan tools yang lebih tepat untuk digunakan oleh suatu microservice.
Ketiga, pembagian tim atau team splitting akan lebih mudah. Satu tim akan fokus terhadap satu microservice, setiap tim tidak berbagi source code dengan tim lain, dan hanya terikat oleh interface yang didefinisikan di dalam service-service tersebut.
Keempat, microservices memungkinkan pembedaan profil satu service dengan service lainnya, terutama yang berhubungan dengan scaling up.
Masih banyak manfaat-manfaat lain yang tidak disebutkan, tetapi kurang lebih itu manfaat utama dari Arsitektur Microservices. Semoga bermanfaat.
Baca juga Seberapa Kecil Microservices yang Harus Dibuat?
Sumber bacaan:
- https://www.nginx.com/blog/introduction-to-microservices/
- https://indosystem.com/blog/microservices-konsep-dan-implementasi/
- http://www.geekyblogger.com/2014/07/tentang-microservices.html
Kalau security enaknya dibuat microservices juga atau satu instance tunggal yg mencakup semua microservices yah?
ReplyDeleteMenurut saya sih, security itu salah satu fungsionalitas yang spesifik, jadi kayaknya dibuat satu microservice lagi khusus untuk menangani security/keamanan..
DeleteCMIIW
*Fungsionalitas = Fungsi, sorry typo :D
DeleteThis comment has been removed by the author.
ReplyDeletedr yg sy tangkap mengenai Microservice seperti ini. misal ada 3 fungsi utama pada website misal fungis A,B dan C nah masing2 funsi dibuat dalam bahasa yang berbeda/sama bergantung tp masih dlm satu domain. misal saat akses www.tes.com maka itu d handle fungsi A, tp saat akses www.tes.com/search maka d handle fungsi B dst begini kan?. nah untuk database sendiri apakah lebih baik dibuat micro juga jd ke-3 fungsi itu akan memiliki database yg sama atau berbeda2? nah lalu untuk pengaturan routingnya sendiri itu gimana yah?
ReplyDeleterouting nya bisa di handle sama API Gateway bisa pake ini https://konghq.com/ atau yang lainnya / buat sendiri jg bisa.
Deletekalo database emang tiap service memiliki databasenya sendiri2 jadi terpisah dengan yang lainnya, jadi Microservice A db A (Pake Mongo) Microservice B db B (pake PostgreSQL) dll.
CMIIW
Betul kata zaky..
Deletesaya sendiri pernah pake api-gateway (getkong.org) buat routing nya
Mau sekalian nanya nih Gan, kalo misalkan satu fitur membutuhkan 2 Microservice itu nanti di olahnya di backend apa di frontend nya ya ?
Deletemengingat gateway hanya jembatan saja untuk routing.
jadi misal Fitur A itu hasil dari Microservice X dan Y, nah microservice yang menjadi Parents/Utama nya MS X , apakah X itu nanti yang akan get data ke MS Y ?
Deleteatau dari keduanya di get terlebih dahulu nanti di Proses lagi di frontend ?
Oh itu, kalo gitu sih kayaknya ada 'kesalahan' dari pembagian microservices nya, jadinya kurang independent... tp kalopun misal memang seperti itu, bisa jadi bikin 1 fungsi entah itu di Ms X atau Ms Y, tergantung fungsi itu lebih berat kemana..
Deletecmiiw