Kamis, 11 Juni 2020

Microservice dan Arsitektur Monolith


Monolith (Monolith architecture) adalah cara membangun aplikasi dengan memuat seluruh service/fitur pada 1 tempat/wadah dan cara ini sering kita gunakan.
Sebagai contoh kita membuat aplikasi dengan suatu bahasa dan framework tertentu (contoh: laravel, ci, asp, django dll). Saat proses pembuatan aplikasi kita membangun fitur/service AB, dan C pada 1 tempat yaitu didalam framework itu sendiri. Jadi kedepannya aplikasi ini akan semakin besar dan besar seiring dengan bertambahnya service DEF dst.
Gampangnya monolith itu semua fitur ditaruh di 1 tempat. semua ada disitu, mau membuat fitur apapun ya buatnya ditempat itu semua.
Lalu bagaimana dengan microservice? Kalau monolith menempatkan semua service pada 1 wadah, maka microservice kebalikannya. Cara ini memisah masing-masing service di tempat yang berbeda-beda. Jadi service AB dan C dipisah dan bisa saling terhubung satu sama lain.
Lalu kekurangan aplikasi monolitik itu apa sih?
  1. Ketika aplikasi menjadi besar (banyak yang akses) peforma akan menurun (kecuali punya banyak duit buat bayar server yang lebih bagus LOL)
  2. Ketika akan merubah teknologi pada aplikasi maka akan merubah secara keselutuhan aplikasi.
  3. Jika terjadi error pada salah satu fungsi maka akan mempengaruhi keselutuhan aplikasi.
Kelebihan
  1. Mudah dibangun
  2. Mudah di uji
  3. Mudah di deploy ke server atau cloud
Microservices berarti membagi aplikasi menjadi layanan yang lebih kecil dan saling terhubung tidak seperti aplikasi monolitik. Setiap microservice merupakan aplikasi kecil yang memiliki arsitektur heksagonal sendiri yang terdiri dari logika beserta berbagai adapternya (bahasa pemrograman, dll).
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.
Jadi intinya microservice yaitu membagi service ke bagian yang lebih kecil dimana service — service tersebut saling berhungan satu sama lain.Selain itu, dalam setiap services yang dibuat bisa menggunakan teknologi yang berbebeda.
Sedangkan untuk implementasi ke web, android, iOS dll tidak bisa secara langsung. Dimana kita harus membuat terlebih dahulu yang namanya API Gateway. API Gateway memiliki tugas seperti load balancing, caching, access controll , API metering, dan monitoring.
Kelebihan Microservice
  1. Aplikasi scalabale, secure dan reliable
  2. Setiap service berdiri sendiri
  3. Maintence-nya lebih mudah
  4. Tidak ada hambatan dalam menggunakan teknologi baru
  5. Setiap tim developer dapat mengembangkan setiap services-nya tanpa ada mengganngu services yang lain
Kekurangan
  1. Ketika satu entity pada database berubah maka setiap entity yang sama di setiap database service harus diubah
  2. Untuk beberapa kasus , sulit untuk menerapkan perubahan services jadi perlu perancangan yang matang.
  3. Deployment yang kompleks, perlu konfigurasi untuk menjalankan setiap services karena memiliki runtime yang berbebda, tidak seperti aplikasi monolitik tinggal upload , deploy dan beres.
  4. Perlu automation yang tinggi dalam melakukan deployment.

Tidak ada komentar:

Posting Komentar