Microservice, Apaan tuh ?

Rizal Yogi Pratama
UNIKOM Codelabs
Published in
3 min readJan 11, 2018
Monolith & Microservices (source image : www.weave.work)

Jadi hari ini saya akan membagikan tentang apa sih Microservices itu ?

Kalo kata developer jaman now, kalo gak kenal microservices itu gak gaul ! Loh kok gak gaul? kenapa min??

Alasannya sederhana karena lagi hitz bingitz hehe, selain itu microservices juga dapat membantu deveoper dalam membuat aplikasi yang high performance, scalable, reliable dan secure.

Sebelum masuk ke ranah Microservices itu sendiri, saya akan membahas software arsitektur zaman OLD dan masih digunakan sampai saat ini , yaps itu adalah Monolitik Arsitektur.

Apa Itu Monolitik Arsitektur?

Seperti namanya “Mono” berarti satu , monolitik arsitektur merupakan sebuah arsitektur dimana dalam pembuatan aplikasi. semua komponen menjadi satu kesatuan.

btw satu kesatuan gimana yaa ?

Dalam hal ini satu kesatuan berarti menyatukan antara front-end dan backend dalam satu aplikasi yang sama.

Sebagai contoh yaitu aplikasi enterprise

Aplikasi Enterprise dibangun dalam tiga bagian: database , client-side, dan server-side. Dimana Server-side akan menangani request HTTP kemudian menjalankan beberapa logika sesuai dengan domain, kemudian mengambil dan memperbarui data dari database, dan mengurim data tersebut ke sisi client-side.

Nah itulah yang disebut dengan Monolitik, dan ada beberapa penyalah gunaan arsitektur ini yaitu MENULIS QUERY LANGSUNG DI CLIENT-SIDENYA , hayooo ngaku siapa yang pernah atau justru sering hehe

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

Lalu, Apa sih Microservice Itu?

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.

Contoh Arsitektur Microservices

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.

Setiap arsitektur memiliki kelebihan dan kekurangan masing — masing, sepeti halnya kita manusia :)

Sekian yang bisa saya bagikan, jika ada pertanyaan, sanggahan atau kesalahan silahkan tulis komentar anda di kolom komentar. Soalnya saya juga sedang belajar :).

~Happy Coding

--

--

Rizal Yogi Pratama
UNIKOM Codelabs

Backend Developer & Fulltime Superheroes. Living the day by Writing Code, Photography, Chocolates, and Fighting the Super Villain.