Apa Itu Microservices Architecture?

By Rizky Kurniawan - December 6, 2021 ~4 mins read

Halo, selamat datang di [Ruang Developer Blog][1]. Dalam dunia pengembangan aplikasi terdapat beberapa jenis arsitektur yang dapat diterapkan, salah satunya adalah Microservices Architecture.

Pengertian Microservices Architecture

Arsitektur mikroservis adalah gaya arsitektur yang menyusun aplikasi sebagai kumpulan layanan yang sangat dapat dipelihara dan diuji, dapat digunakan secara mandiri, dan terorganisir. Jenis arsitektur ini memungkinkan pengiriman aplikasi besar dan kompleks yang cepat dan handal.

Arsitektur mikroservis adalah metode khusus untuk mengembangkan sistem perangkat lunak yang berfokus pada modul fungsi tunggal dengan antarmuka dan operasi yang terdefinisi dengan baik. Arsitektur mikroservis semakin populer beberapa tahun terakhir.

Karakteristik Microservices Architecture

Terdapat enam karakteristik arsitektur mikroservis sebagai berikut:

1. Multiple Components

Aplikasi yang dibangun menggunakan arsitektur mikroservis dapat dipecah menjadi beberapa komponen. Tiap komponen inilah yang disebut sebagai satu buah servis. Pemecahan ini bertujuan agar tiap komponen dapat dideploy, dimodifikasi, dan deploy ulang secara independen tanpa harus mempengaruhi keseluruhan aplikasi.

2. Built For Business

Arsitektur mikroservis diatur berdasarkan kapabilitas dan prioritas bisnis. Tidak seperti pengembangan monolitik tradisional, di mana masing-masing tim berfokus pada bagian tertentu seperti UI, database, stack, atau logika. Arsitektur mikroservis menganut konsep tim lintas fungsi. Tanggung jawab masing-masing tim adalah membuat produk tertentu berdasarkan satu atau lebih layanan individu.

3. Simple Routing

Arsitektur mikroservis bertindak seperti sistem UNIX klasik, mereka menerima permintaan, memproses, kemudian menghasilkan respons yang sesuai.

4. Decentralized

Karena arsitektur mikroservis melibatkan berbagai macam teknologi dan platform, maka metode tata kelola terpusat tidak lagi efisien untuk diterapkan. Sebaliknya, arsitektur mikroservis menggunakan metode tata kelola terdesentralisasi karena para developer berusaha keras untuk menghasilkan alat yang berguna yang kemudian dapat digunakan oleh orang lain untuk memecahkan masalah yang sama. Pada aplikasi yang menerapkan arsitektur mikroservis, tiap servis biasanya mengelola database mereka masing-masing.

5. Failure Resistant

Arsitektur mikroservis dirancang untuk mencegah kegagalan. Karena beberapa servis yang unik dan beragam saling berkomunikasi, maka sangat mungkin jika sebuah servis dapat gagal karena suatu alasan. Dalam hal ini, klien harus membolehkan servis yang lain tetap berfungsi saat ada servis yang gagal. Memantau arsitektur mikroservis dapat mencegah kegagalan. Namun, persyaratan ini membuat arsitektur mikroservis memiliki kerumitan yang lebih tinggi dibandingkan dengan arsitektur monolitik.

6. Evolutionary

Arsitektur mikroservis adalah jenis arsitektur yang sangat evolusioner. Banyak aplikasi yang awalnya menggunakan arsitektur monolitik, namun karena terdapat beberapa kelemahan yang muncul membuat aplikasi tersebut secara perlaha beralih ke jenis arsitektur mikroservis dengan tetap berinteraksi pada sistem monolitik yang lama melalui Application Programming Interface (API).

Kelebihan dan kekurangan Microservices Architecture

Kelebihan

  1. Arsitektur mikroservis memberi pengembang kebebasan untuk mengembangkan dan menyebarkan layanan secara mandiri
  2. Dapat dikembangkan oleh tim yang kecil
  3. Kode untuk layanan yang berbeda dapat ditulis dalam bahasa yang berbeda (meskipun banyak praktisi tidak menyarankannya)
  4. Integrasi yang mudah dan penerapan otomatis (menggunakan alat integrasi berkelanjutan sumber terbuka seperti Jenkins, Hudson, dll.)
  5. Mudah dipahami dan dimodifikasi untuk pengembang, sehingga dapat membantu anggota tim baru menjadi produktif dengan cepat
  6. Pengembang dapat menggunakan teknologi terbaru
  7. Kode diatur berdasarkan kemampuan bisnis
  8. Memulai penampung web lebih cepat, sehingga penerapannya juga lebih cepat
  9. Ketika perubahan diperlukan di bagian tertentu dari aplikasi, hanya layanan terkait yang dapat dimodifikasi dan digunakan kembali—tidak perlu memodifikasi dan menerapkan ulang seluruh aplikasi
  10. Isolasi kesalahan yang lebih baik: jika satu layanan mikro gagal, layanan mikro lainnya akan terus bekerja (walaupun satu area bermasalah dari aplikasi monolit dapat membahayakan seluruh sistem)
  11. Mudah untuk dikembangkan dan diintegrasikan dengan layanan pihak ketiga
  12. Tidak ada komitmen jangka panjang untuk tech stack yang digunakan

Kekurangan

  1. Karena penyebaran terdistribusi, pengujian bisa menjadi rumit dan membosankan
  2. Peningkatan jumlah layanan dapat mengakibatkan hambatan informasi
  3. Arsitektur ini membawa kompleksitas tambahan karena pengembang harus mengurangi toleransi kesalahan, latensi jaringan, dan menangani berbagai format pesan serta penyeimbangan beban
  4. Menjadi sistem terdistribusi, dapat mengakibatkan duplikasi usaha
  5. Ketika jumlah layanan meningkat, integrasi dan pengelolaan seluruh produk dapat menjadi rumit
  6. Selain beberapa kompleksitas arsitektur monolitik, pengembang harus berurusan dengan kompleksitas tambahan dari sistem terdistribusi
  7. Pengembang harus melakukan upaya tambahan untuk menerapkan mekanisme komunikasi antar layanan
  8. Menangani kasus penggunaan yang menjangkau lebih dari satu layanan tanpa menggunakan transaksi terdistribusi tidak hanya sulit tetapi juga membutuhkan komunikasi dan kerja sama antara tim yang berbeda
Bagikan:

Ingin Berdiskusi?

Yuk bergabung di Grup Telegram Ruang Developer atau mulai diskusi melalui GitHub. See You!

Dapatkan contoh source code project backend, frontend, atau fullstack untuk kamu amati, tiru, dan modifikasi sesuka hati. Klik untuk melihat detail!
comments powered by Disqus

Berlangganan Gratis

Kamu akan menerima email update dari Ruang Developer

Beri Dukungan

Beri dukungan, dapatkan full source code project web untuk bahan referensi, tiru, dan modifikasi.
Lightbox