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
- Arsitektur mikroservis memberi pengembang kebebasan untuk mengembangkan dan menyebarkan layanan secara mandiri
- Dapat dikembangkan oleh tim yang kecil
- Kode untuk layanan yang berbeda dapat ditulis dalam bahasa yang berbeda (meskipun banyak praktisi tidak menyarankannya)
- Integrasi yang mudah dan penerapan otomatis (menggunakan alat integrasi berkelanjutan sumber terbuka seperti Jenkins, Hudson, dll.)
- Mudah dipahami dan dimodifikasi untuk pengembang, sehingga dapat membantu anggota tim baru menjadi produktif dengan cepat
- Pengembang dapat menggunakan teknologi terbaru
- Kode diatur berdasarkan kemampuan bisnis
- Memulai penampung web lebih cepat, sehingga penerapannya juga lebih cepat
- 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
- 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)
- Mudah untuk dikembangkan dan diintegrasikan dengan layanan pihak ketiga
- Tidak ada komitmen jangka panjang untuk tech stack yang digunakan
Kekurangan
- Karena penyebaran terdistribusi, pengujian bisa menjadi rumit dan membosankan
- Peningkatan jumlah layanan dapat mengakibatkan hambatan informasi
- Arsitektur ini membawa kompleksitas tambahan karena pengembang harus mengurangi toleransi kesalahan, latensi jaringan, dan menangani berbagai format pesan serta penyeimbangan beban
- Menjadi sistem terdistribusi, dapat mengakibatkan duplikasi usaha
- Ketika jumlah layanan meningkat, integrasi dan pengelolaan seluruh produk dapat menjadi rumit
- Selain beberapa kompleksitas arsitektur monolitik, pengembang harus berurusan dengan kompleksitas tambahan dari sistem terdistribusi
- Pengembang harus melakukan upaya tambahan untuk menerapkan mekanisme komunikasi antar layanan
- 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