Burak / Kutbay
Menü

Spring Cloud Config Server Nedir? Uygulama Örneği

399 kelime · 2 dk okuma

Bu yazıda

Spring Cloud Config Server oluşturarak mikroservislerimizin konfigurasyonlarını tek bir uygulama üzerinden yönetebilmek ve gerektiğinde değişikliklere anında cevap veren bir config server yapmayı açıklayacağım.

01Yayın
02Güncelleme
03Kategori
Spring Cloud
04Okuma
2 dakika
05Yazar

Bu yazıyı paylaş

https://blog.burakkutbay.com/spring-cloud-config-server-nedir-uygulama-ornegi.html/

Ya da doğrudan paylaş: X · LinkedIn

Bu sayfada
  1. Spring Cloud Config Server Uygulama
  2. Spring Cloud Config Client Uygulama
  3. İlgili Spring rehberleri
Spring Cloud Config Server uygulama örneği
FIG_001 · Spring Cloud Config Server Nedir Uygulama Örneği Dersler

Spring Cloud Dersleri‘ne devam ediyorum.

Bu yazıda Spring Cloud Config Server oluşturarak mikroservislerimizin konfigurasyonlarını tek bir uygulama üzerinden yönetebilmek ve gerektiğinde değişikliklere anında cevap veren bir config server yapmayı açıklayacağım.

Spring Config Server sayesinde mikroservislerimizin operasyon katmanınlarını ayırarak tek bir nokta üzerinden yönetmeyi sağlamaktadır. Spring Config Server sayesinde her mikroservisimiz için ayrı ayrı konfigürasyon dosyaları ile de uğraşmak zorunda kalmıyoruz.

Yapılan değişiklikler üzerinden

Bir diagram üzerinden açıklamak gerekirse;

Spring Cloud Config Server
Spring Cloud Config Server

Cloud config server’ımız bir file ya da .git dosyası ya da farklı kaynaklar. (S3, HashiCorp vs.)üzeriden tutulan verileri tutar ve diğer uygulamalarımız config server’a istekte bulunarak bu bilgileri istek yapan servislerimize iletir.

Spring Cloud Config Server Uygulama

Spring Cloud Config Server uygulamamızı oluşturalım. Maven bağımlılığımız aşağıdaki gibi olacaktır.

HTML, XML
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
Code language: HTML, XML (xml)

Bir rest controller yazalım bu yazacağımız controller üzerinde cevap olarak config file’dan okunan değeri cevap olarak döneceğiz ve bu döndüreceğimiz değer config değerinden okunduğu için anlık değer değiştiğinde bile restart etmemize gerek kalmadan güncel değeri okuyabileceğiz.

Java
@RestController
@RequestMapping("/")
public class ServerController {

	@Value("${server.version}")
	int serverVersion;
	
	@GetMapping
	public String getVersion() {
		return "Server version: " + serverVersion; 		
	}
}
Code language: Java (java)

application.properties dosyamızda gerekli olan ayarlarımızı girelim.

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

application.properties dosyası üzerinde dosya sistemi üzerinde yer alan konfigürasyon dosyalarımız hangi yol üzerinde oluğunu belirtiyoruz ve o klasör altındaki bizim enviroment değerlerimizi okuyabilir ve istediğimiz değişikliği esnek bir biçimde değiştirebiliriz. Bu tanımlama içerisinde config klasöründe olduğunu belirtiyoruz. Bu klasör ise resources klasörünün altında bulunuyor.

Spring Cloud Config Server Config Folder
Spring Cloud Config Server Config Folder

Oluşturduğumuz bu dosyaların içerisine değer/değerlerimizin tanımlamalarını yapalım.

Kod
server.version=5

Bu değeri bizim istek yaptığımız herhangi bir uygulama içerisinden çağırdığımızda bu değeri okuyabileceğiz.

Spring Cloud Config Client Uygulama

Bu konfigürasyon dosyamızdan verileri okuyan uygulamamıza config client bağımlılığımızı eklememiz yeterli olmaktadır.

application.properties uygulamasına konfigürasyonların hangi nereden okunması gerektiği belirtiyoruz.

JavaScript
server.port=8086
spring.application.name=app-1
spring.profiles.active=dev
spring.cloud.config.uri=http://localhost:8085
spring.config.import=optional:configserver:http://localhost:8085Code language: JavaScript (javascript)

app-1 uygulamamızın konfigürasyon dosylarını config server url’sini tanımladık.

app-1 uygulamamızın localhost:8086 adresine istek gönderdiğimizde varsayılan bir değeri okumamız istediğimizde çıkan sonuç aşağıdaki gibi olacaktır.

Kod
Server version 5

Farklı tüm ortamlar için farklı değerler olduğunda dev, stg, prod gibi ortamlarda farklı değerler verebiliriz. Bu değişikleri native olarak derslendiği için anında değişiklikler restarta gerek kalmadan hot reload olarak geçerliliğe girer.

Sonraki Spring Cloud Dersleri’nde görüşmek üzere.


Önceki Ders: Axon Server Nedir?
Spring Cloud Dersleri
Sonraki Ders: Spirng Cloud Aws SQS Kullanımı

İlgili Spring rehberleri

Bu konuyu tamamlamak için Spring Boot Dersleri merkez rehberine, Spring Cloud Dersleri sayfasına ve Testcontainers ile Spring Boot testleri yazısına göz atabilirsiniz.

Etiketler · 5

Yorum yaz

E-posta adresin yayımlanmaz. Zorunlu alanlar * ile işaretli.