Spring Cloud Config İle Konfigürasyon Parametrelerinin Tek Bir Yerden Dağıtımı

Abdurrahman Gazi DİŞ
Appcent
Published in
4 min readFeb 16, 2024

Mikroservis mimarisi, karmaşık sistemleri küçük, bağımsız hizmetlere bölmek için popüler bir yaklaşımdır. Ancak, mikroservislerin yaygın bir zorluğu, yapılandırmanın yönetimidir. Bu sorunu çözmek için Spring Cloud Config, dağıtılmış sistemlerde yapılandırma yönetimine çözüm sunar. Bu makalede, Spring Cloud Config’in ne olduğunu, nasıl çalıştığını ve nasıl kullanıldığını ele alacağız.

Spring Cloud Config Nedir?

  • Spring Cloud Config, dağıtılmış sistemlerde yapılandırma yönetimini kolaylaştıran bir çözümdür.
  • Merkezi bir yapılandırma sunucusu üzerinden yapılandırma dosyalarını yönetir.
  • Uygulamalar, bu merkezi sunucudan yapılandırmalarını dinamik olarak alabilirler.

Spring Cloud Config’in Avantajları:

  • Merkezi yapılandırma yönetimi: Tüm mikroservisler için tek bir yerde yapılandırma dosyalarını yönetme imkanı sağlar.
  • Dinamik yapılandırma: Uygulamalar, çalışma zamanında yapılandırmalarını güncelleyebilirler.
  • Güvenli yapılandırma depolama: Hassas verileri şifreleyerek güvenli bir şekilde depolayabilirsiniz.
  • Yüksek ölçeklenebilirlik: Spring Cloud Config, büyük ölçekli sistemlerde kullanılmak üzere tasarlanmıştır.

Spring Cloud Config Nasıl Çalışır?

  • Spring Cloud Config Server, yapılandırma dosyalarını depolayan ve sunan bir REST API sunucusudur.
  • Uygulamalar, Spring Cloud Config Server’a yapılandırma sorguları göndererek yapılandırmalarını alır.
  • Yapılandırma dosyaları Git, Subversion veya merkezi bir depolama sağlayıcısı gibi desteklenen bir depolamada saklanabilir.

Spring Cloud Config Kullanımı

Örnek bir senaryoda Spring Cloud Server ve Spring Boot Client uygulaması oluşturarak bir örnek gerçekleştirelim.

Spring Cloud Config Server Yapılandırma

https://start.spring.io/ adresine giderek aşağıdaki gibi gerekli bağımlılıkları ekleyerek projeyi bilgisayarınıza indiriniz.

Projeyi kod editörünüzden açtıktan sonra resources klasörüne aşağıdaki gibi property dosyalarını ekleyin.

Yukarıda yer alan property dosyaları yerine isterseniz .yml uzantılı konfigürasyon dosyaları da oluşturabilirsiniz.

Burada yer alan dosya isimlendirme formatı şu şekilde olmalıdır.

{{app-name}}-{{ortam, dev,prod vb}}.properties veya yml

Örnek olarak config-server-dev.properties dosyasında client uygulamarınıza ekleyeceğiniz configlerin parametreli olmalıdır.

server.version=5
test.var="Hello, World! - dev"

application.properties dosyası ise aşağıdaki gibi olmalıdır.

server.port=4444
spring.application.name=config-server
spring.profiles.active=native
spring.cloud.config.server.native.search-locations=classpath:/config

spring.application.name kısmında uygulamamızın ismini vermiş olduk.

spring.cloud.config.server.native.search-locations kısmında dinleyeceğimiz config dosyalarının pathini vermiş olduk.

Son olarak bu spring projesinin bir cloud config server olduğunu belirtmemiz için spring projesinin main sınıfına @EnableConfigServer anatasyonunu ekliyoruz.

package com.spring.cloudconfigserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer
public class CloudconfigserverApplication {

public static void main(String[] args) {
SpringApplication.run(CloudconfigserverApplication.class, args);
}

}

Projeyi çalıştırdıktan sonra http://localhost:4444/config-server/dev adresine istek attığımızda config serverin bize dev ortamı için verdiği config parametlerini görüntülememiz gerekir. Sonda yer alan dev yerine prod dersek ise de prod configleri listelenecektir.

Cloud Config Server uygulamasını yapılandırdığımıza göre bu servera istek atarak config parametrelerini dinleyecek olan örnek bir de client spring boot projesi yapılandıralım.

Spring Cloud Config Client Yapılandırma

https://start.spring.io/ adresine giderek aşağıdaki gibi gerekli bağımlılıkları ekleyerek projeyi bilgisayarınıza indiriniz.

Client uygulamasını kod editöründe açalım ve içerisinde varsayılan gelen application.properties dosyasını aşağıdaki gibi dolduralım.

server.port=5555
spring.application.name=config-server
spring.profiles.active=dev
spring.cloud.config.uri=http://localhost:4444
spring.config.import=optional:configserver:http://localhost:4444

spring.application.name kısmına server uygulamasına verdiğimiz ismi yazıyoruz.

spring.profiles.active kısmında çalıştıracağımız ortam bilgisini veriyoruz örnek olarak dev tanımladım.

spring.cloud.config.uri ve spring.config.import alanlarına Cloud Config Server projesinin adresini veriyoruz.

Server üzerindeki config bilgilerini client projesinde de teyit etmek ve görüntülemek amacıyla bir test controlleri oluşturup endpoint üzerinden config paramteresini response edelim.

Örnek TestController Sınıfı

package com.spring.cloudconfigclient;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import lombok.RequiredArgsConstructor;

@RestController
@RequiredArgsConstructor
public class TestController {

@Value("${test.var}")
private String testVar;

@GetMapping("getConfigValue")
public ResponseEntity<?> getTestVar() {
return ResponseEntity.ok().body(testVar);
}

}

Gerekli tanımlamaları yaptıktan sonra client projesini de çalıştırıyoruz.

http://localhost:5555/getConfigValue adresine GET isteği atıyoruz.

Görüldüğü gibi Spring Cloud Config Server üzerindeki tanımladığımız test.var değerini client uygulamamızdan erişebilmiş olduk.

Bu örnekte olduğu gibi client uygulamarınız için gerekli olan konfigürasyon parametrelerini cloud config server projesine ekleyerek configlerin dağıtımını cloud ortamdan yapabilirsiniz.

Sonuç

Spring Cloud Config, mikroservis mimarilerinde yapılandırma yönetimini kolaylaştıran güçlü bir araçtır. Merkezi yapılandırma yönetimi ve dinamik yapılandırma özellikleri, karmaşık sistemlerde yapılandırma dosyalarını yönetmeyi kolaylaştırır. Bu makalede belirtilen adımları izleyerek, Spring Cloud Config’i kullanarak mikroservis uygulamalarınızın yapılandırmasını merkezi bir konumdan yönetebilirsiniz.

--

--

Abdurrahman Gazi DİŞ
Appcent
Writer for

Java Developer @appcent || Linkedin: abdurrahman-gazi-dis