Microservice merupakan pengembangan dari Monolitik Arsitektur. Microservice ini merupakan kumpulan proses independen dan kecil yang berkomunikasi antara satu dengan lainnya untuk membentuk aplikasi kompleks yang agnostik terhadap bahasa API apa pun. Servis-servis ini terdiri dari blok-blok kecil, terpisah, dan fokus pada tugas-tugas ringan untuk memfasilitasi metode modular dalam pembangunan sistem. Arsitektur bergaya microservice mulai menjadi standar dalam pembangunan sistem yang dinamis dan konstan berkembang.
Microservices dikenal sebagai membagi aplikasi menjadi layanan yang lebih kecil dan saling terhubung. Lain halnya jika dibandingkan dengan monolitik yang merupakan kebalikan dari Microservices. Monolitik memiliki arti satu. Arsitektur monolitik merupakan sebuah arsitektur dalam pembuatan aplikasi dimana semua komponen menjadi satu kesatuan.
Setiap Microservices merupakan aplikasi kecil yang memiliki arsitektur heksagonal sendiri yang terdiri dari logika beserta berbagai adapternya (bahasa pemrograman, dan lain-lain).
Meskipun pendekatan monolitik berfungsi dengan baik untuk beberapa organisasi dan beberapa aplikasi, namun Microservices menjadi populer dengan perusahaan yang membutuhkan kelincahan dan skalabilitas yang lebih besar.
infrastruktur microService membagi layanan-layanan yang ada menjadi bagian-bagian yang lebih kecil. Misalkan ada server khusus untuk memproses layanan antrian, layanan hosting khusus untuk antarmuka pengguna, server khusus untuk manajemen database, dan sebagainya.
Microservice architecture
- Aplikasi scalable, secure dan reliable
- Setiap layanan memiliki infrastruktur sendiri
- Karena setiap layanan memiliki infrastruktur sendiri, bisa dengan mudah membuat aplikasi tanpa memikirkan hubungan / ketergantungan module dengan layanan yang lain. misalkan kamu bisa membuat aplikasi dengan beberapa bahasa pemrograman.
- Proses update aplikasi hanya melingkupi layanan yang terkait.
- Codenya berbasis layanan. Kamu harus memiliki dokumentasi yang lebih dari pada infrastruktur Monolithic
- Proses Scalingnya bisa menggunakan beberapa metode, scaling up dan scaling side
- Ada kemungkinan komunikasi antar modulenya mengalami kegagalan. Untuk itu kamu harus selalu mempersiapkan cara handlenya.
Kenapa Microservices sangat diperlukan ?
- Dapat lebih responsif terhadap kebutuhan pelanggan, Perusahaan yang mengadopsi arsitektur microservices dapat dengan cepat mengirimkan kapabilitas ketika pelanggan membutuhkan.
- Microservices dibangun di atas prinsip-prinsip Agile dan DevOps, dan membantu tim-tim software untuk berjalan secara paralel sementara iterasi secara cepat pada kemampuan diskrit.
- Sistem Arsitektur microservicesI ni sangat bergantung pada otomatisasi yang dapat diulang, mendukung skala layanan, dan menggunakan pola yang dirancang untuk menjaga sistem tetap berjalan bahkan ketika komponen individual gagal.
Pola arsitektur Microservice secara signifikan mempengaruhi hubungan antara aplikasi dan database. Alih-alih berbagi skema database tunggal dengan services lainnya, masing-masing services memiliki skema database tersendiri. Di satu sisi, pendekatan ini bertentangan dengan gagasan model data enterprise-wide. Selain itu, sering kali menghasilkan duplikasi beberapa data. Namun, memiliki skema database per service sangat penting jika ingin mendapatkan keuntungan dari layanan microservice. Masing-masing service memiliki database sendiri. Selain itu, services dapat menggunakan jenis database dan bahasa pemrograman yang paling sesuai dengan kebutuhannya.
Kelebihan Microservice
- Aplikasi scalabale, secure dan reliable
- Setiap service berdiri sendiri
- Maintence-nya lebih mudah
- Tidak ada hambatan dalam menggunakan teknologi baru
- Setiap tim developer dapat mengembangkan setiap services-nya tanpa ada mengganngu services yang lain
Kekurangan
- Ketika satu entity pada database berubah maka setiap entity yang sama di setiap database service harus diubah
- Untuk beberapa kasus , sulit untuk menerapkan perubahan services jadi perlu perancangan yang matang.
- Deployment yang kompleks, perlu konfigurasi untuk menjalankan setiap services karena memiliki runtime yang berbebda, tidak seperti aplikasi monolitik tinggal upload , deploy dan beres.
- Perlu automation yang tinggi dalam melakukan deployment.