Skip to main content
Background Image
  1. All Notes/

Microservices Learning Notes

·3 mins·
Table of Contents

Microservices
#

Jadi apa itu microservices? Microservices adalah arsitektur pengembangan perangkat lunak yang memecah aplikasi yang besar menjadi aplikasi-aplikasi kecil. Laravel adalah contoh dari arsitektur monolitik, di mana semua fitur itu ada di dalam satu aplikasi. Sedangkan microservices itu benar-benar dipecah. Semisal kita ambil contoh e-commerce, pasti di dalamnya ada service mengenai user dan juga product. Jadi dua service ini bisa dipecah menjadi dua aplikasi yang berbeda. Jadi ada aplikasi user service dan ada aplikasi product service, bukan digabung menjadi satu aplikasi.

Pada blog ini moslty akan menggunakan Spring Boot sebagai framework untuk membuat microservices. Karena Spring Boot ini sudah menyediakan banyak sekali fitur yang memudahkan kita dalam membuat microservices. Juga, opini pribadi, Spring Boot itu sangat mudah dimengerti dan dipelajari.

Service Discovery
#

Pada microservices dari sisi client pasti membutuhkan alamat dari service yang akan diakses. Namun, gimana kalo alamat service ini dinamis dan juga ada banyak instance dari service tersebut? Nah di sini kenapa dibutuhkan service discovery. Service discovery ini berfungsi sebagai pusat informasi alamat service yang ada di sistem microservices kita. Jadi, ketika ada client yang mau mengakses suatu service, client tersebut akan menanyakan dulu ke service discovery ini untuk mendapatkan alamat service yang diinginkan.

Biasanya menggunakan dependency seperti Eureka Client dan Eureka Server dari Spring Cloud Netflix untuk mengimplementasikan service discovery ini. Jadi setiap service terkait akan ada Eureka Client dan service yang memiliki semua informasi dari semua alamat service yang ada akan menggunakan Eureka Server.

Service Discovery Diagram

Edge Serer / API Gateway
#

Pada microservices, biasanya ada satu service yang berfungsi sebagai pintu masuk dari semua request yang masuk ke sistem microservices kita. Service ini biasa disebut dengan Edge Server atau API Gateway. Fungsi utama dari Edge Server ini adalah untuk menerima semua request dari client, kemudian meneruskan request tersebut ke service yang sesuai. Ketika request diterima oleh API Gateway, request akan diteruskan ke service discovery untuk mendapatkan alamat service yang sesuai, kemudian request akan diteruskan ke service tersebut.

API Gateway Diagram

Centralized Configuration
#

Pada microservices, biasanya ada banyak service yang berjalan secara terpisah. Setiap service ini pasti memiliki konfigurasi yang berbeda-beda. Nah, untuk memudahkan pengelolaan konfigurasi ini, biasanya digunakan centralized configuration. Centralized configuration ini berfungsi sebagai tempat penyimpanan konfigurasi yang bisa diakses oleh semua service yang ada di sistem microservices kita. Dengan centralized configuration, ketika ada perubahan konfigurasi, kita hanya perlu mengubahnya di satu tempat saja, dan semua service yang terkait akan mendapatkan konfigurasi terbaru tersebut.

Circuit Breaker
#

Pada microservices, karena ada banyak service yang berjalan secara terpisah, ada kemungkinan suatu service mengalami kegagalan atau down. Nah, untuk mengatasi hal ini, biasanya digunakan circuit breaker. Circuit breaker ini berfungsi untuk memantau kesehatan dari setiap service yang ada di sistem microservices kita. Ketika suatu service mengalami kegagalan, circuit breaker akan memutuskan koneksi ke service tersebut untuk sementara waktu, sehingga tidak membebani service yang sedang down tersebut. Setelah beberapa waktu, circuit breaker akan mencoba untuk menghubungi kembali service tersebut untuk melihat apakah sudah pulih atau belum. Biasanya menggunakan dependency seperti Resilience4j atau Spring Cloud Circuit Breaker untuk mengimplementasikan circuit breaker ini.

Andaru Hymawan
Author
Andaru Hymawan
A student who loves to code and yap. Currently learning web development and exploring new technologies.