Kalian udah familiar kan dengan Spring? Seperti yang kita tau Spring punya banyak banget project, dan kesempatan kali ini Nostra mau sharing tentang Spring Cloud. Sebelum kita mulai membahas Spring Cloud, Nostra mau sharing dulu nih latar belakang dari topik ini.
Jadi begini, saat ini tren teknologi khususnya aplikasi adalah menggunakan arsitektur Microservices. Nah Spring Cloud adalah kumpulan projects dari Spring untuk memfasilitasi arsitektur tersebut. Secara spesifik sharing ini akan membahas tentang Spring Cloud Config.
Apasih benefits dari Spring Cloud Config?
Oke jadi kan Microservices adalah arsitektur dimana kita punya banyak services dengan fungsi masing-masing dan konfigurasi yang berbeda-beda. Spring Cloud Config memberikan kemudahan untuk maintain seluruh konfigurasi dari services tersebut dengan mengumpulkan seluruh konfigurasi pada "config server" atau sederhananya pada satu service tersendiri. Keuntungan lainnya adalah kita bisa mengubah konfigurasi tersebut pada config server dan kemudian services terkait cukup memanggil satu API dari Spring Actuator, yaitu dengan menggunakan method POST ke alamat http://{service-url}:{services-port}/refresh. API Call ke alamat tersebut akan memberikan balikan, apa saja yang berubah dari konfigurasi milik service tersebut.
Contoh Kembalian '/refresh' |
Wow, jadi gimana cara implementasi Spring Cloud Config ini?
Spring Cloud Config memiliki tiga komponen utama, yaitu config server, client, dan file config yang disimpan dengan Git. Mekanisme yang digunakan Spring Cloud Config untuk mengetahui perubahan pada client config adalah dengan membaca commit pada Git untuk config file terkait. Melalui Git setiap commit akan mengubah versi dari file tersebut, dimana pada contoh '/refresh' tersebut kita bisa melihat bahwa terjadi perubahan pada 'config.client.version' dimana sebenarnya config file itu hanya memiliki config 'message' dan telah diubah.
Config File |
Config Server
Service yang akan menjadi config server harus menggunakan anotasi '@EnableConfigServer' pada aplikasi, dimana untuk dapat menggunakan anotasi tersebut kita memasukkan dependensi terhadap Spring Cloud Config Server. Setelah kita menggunakan anotasi tersebut, selanjutnya kita perlu menyatakan pada config dari config server ini, yaitu mengenai port berapa yang akan digunakan dan dimana config dari services akan disimpan.
Contoh Penggunaan Anotasi '@EnableConfigServer' |
Dependensi Terhadap Spring Cloud Config Server |
Contoh Config Server Properties |
Client
Lalu bagaimana cara konfigurasi client untuk mengambil konfigurasi pada config server? Hal ini dilakukan melalui properties yang ada pada client. Apabila kita telah berhasil menghubungkan client dengan config server maka kita dapat mengakses seluruh konfigurasi untuk client dengan menyimpannya pada config server. Bagaimana cara client bisa reload perubahan yang terjadi pada konfigurasi di config server? Well untuk melakukannya kita cukup menggunakan anotasi '@RefreshScope' pada bean yang mengakses konfigurasi pada config server.
Contoh Properties pada Client |
Contoh Penggunaan Anotasi '@RefreshScope' |
Oke, kalau kalian melihat kembali contoh-contoh di atas maka kalian akan menemukan ada sedikit trick disini, yaitu pada client terdapat property 'spring.application.name' dan itu isinya sama seperti nama file konfigurasi yang dimonitor pada configu server. Jadi Spring Cloud Config ini dapat menentukan config file mana yang diperuntukkan kepada suatu service, yaitu dengan membandingkan isi dari 'spring.application.name' dengan nama config file di Git yang dimonitor oleh config server.
et voila, cukup sederhana cara implementasinya akan tetapi perlu diperhatikan bahwa ketiga komponen tersebut harus terhubung agar dapat berjalan sebagaimana diinginkan.
That's all folks. Selamat mencoba dan berkarya!
Regards.
Sumber:
No comments:
Post a Comment