Sekarang pertanyaan mendasar setelah kita tahu microservices adalah kenapa kita butuh arsitektur ini ?.

Apakah dengan arsitektur monolitik atau satu aplikasi besar itu tidak bagus dan tidak efektif.?

Tentu saja tidak jawabannya. Teknologi tetaplah hanya alat yang memudahkan kita. Dibuat dengan tujuan tertentu dan digunakan sesuai dengan kebutuhannya. Palu mungkin cocok untuk digunakan untuk memaku. Obeng sebenernya juga bisa digunakan untuk memaku tetapi tidak cocok dan butuh effort yang tidak sedikit untuk memaku.

Begitupun dengan teknologi. Ada alasan dibuatnya sebuah teknologi tertentu. Alasan ini mungkin akan sangat berguna untuk sebuah kondisi, tetapi belum tentu cocok untuk kondisi yang lain.

Nah, sekarang coba kita lihat apa alasannya dibuatnya arsitektur microservice ini.

Tujuannya kalau mau disimpulkan adalah :

  1. untuk bisa lebih cepat dalam develop dan deployment berulang-ulang untuk bagian tertentu applikasi
  2. untuk skalabilitas dan optimasi bagian tertentu aplikasi.

That its.

Semua syarat tambahan seperti mudah dimanage, decentralized data management, polygot persistence, mudah untuk Continous Integrationn/ Continous Delivery, mudah develop dengan banyak tim secara paralel adalah efek lanjutan dari tujuan awal tadi.

Jadi kalau begitu, kita akan cocok memakai arsitektur microservices jika :

  1. aplikasinya butuh untuk di develop dan dideploy secara cepat dan terpisah tanpa khawatir mengganggu seluruh aplikasi.

Karakteristik ini menjadi karakteristik aplikasi-aplikasi perusahaan rintisan. Aplikasi rintisan memang masih membutuhkan deployment berulang-ulang dengan waktu yang cepat. Hal ini karena masih banyak masukan dan uji coba yang mesti dilakukan terhadap aplikasi baru ini. Aplikasi yang masuk kategori ini juga bersifat aplikasi produk yang terus dikembangkan. Jadi bukan lagi aplikasi bersifat proyek yang sekali di develop lantas ditinggalkan begitu saja.

  1. butuh optimasi dan skalabilitas secara berkala.

Beberapa produk rintisan memerlukan optimasi dan skalabilitas secara berkala. Optimasi dan skalabilitas mutlak diperlukan seiring berjalannya waktu dan berkembangnya jumlah pengguna. Skalabilitas berarti kemampuan untuk mengubah sumber daya sesuai dengan kebutuhan sistem yang bertambah atau berkurang.

Kalau sistem yang kita punyai tidak membutuhkan optimasi dan skalabilitas karena jumlah pengguna yang sedikit dan tidak mungkin berkembang lagi, maka monolitik mungkin adalah pilihan yang lebih tepat dibandingkan microservices.

Apakah arsitektur microservices ini akan menyelesaikan masalah development speed, deployment, dan skalabilitas seperti artikel sebelumnya ?

Penggunaannya juga sesuai dengan tujuan awalnya. Teknologi tidak akan pernah bisa menggantikan secara sempurna evolusi kita berfikir dan menyelesaikan masalah.