เก็บค่า Environments Config ต่าง ๆ แบบศูนย์กลาง ด้วย Spring Cloud Config

Poolsawat Apin
2 min readJan 11, 2024

Spring Cloud Config คืออะไร

Spring Cloud Config เป็นโซลูชันสำหรับการจัดการการกำหนดค่าแบบรวมศูนย์สำหรับแอปพลิเคชัน Spring Boot โดยใช้ Git repository ช่วยให้นักพัฒนาสามารถจัดการการกำหนดค่าของแอปพลิเคชันได้อย่างง่ายดายและมีประสิทธิภาพ โดยไม่จำเป็นต้องแก้ไขโค้ด

ประโยชน์ของการใช้ Spring Cloud Config

การใช้ Spring Cloud Config มีข้อดีหลายประการ ดังนี้

  • ช่วยให้นักพัฒนาสามารถจัดการการกำหนดค่าของแอปพลิเคชันได้แบบรวมศูนย์ โดยไม่ต้องแก้ไขโค้ด
  • ช่วยให้สามารถติดตามและจัดการการเปลี่ยนแปลงของการกำหนดค่าได้อย่างง่ายดาย
  • ช่วยให้สามารถทดสอบและปรับใช้การกำหนดค่าใหม่ได้อย่างรวดเร็ว
  • ช่วยให้สามารถปรับขนาดแอปพลิเคชันได้โดยไม่กระทบต่อการกำหนดค่า

การใช้งาน Spring Cloud Config

การใช้งาน Spring Cloud Config มีขั้นตอนดังนี้

  1. ติดตั้ง Spring Cloud Config Server

ขั้นแรก เราต้องติดตั้ง Spring Cloud Config Server โดยเพิ่ม dependency ต่อไปนี้ลงในไฟล์ pom.xml ของโปรเจ็กต์ Spring Boot ของเรา

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>

2. กำหนดค่า Spring Cloud Config Server

จากนั้น เราต้องกำหนดค่า Spring Cloud Config Server โดยเพิ่มการกำหนดค่าต่อไปนี้ลงในไฟล์ application.yml หรือ bootstrap.yml ของโปรเจ็กต์

spring:
cloud:
config:
server:
git:
uri: https://github.com/my-username/my-config-repo
username: my-username
password: my-password

การกำหนดค่าด้านบนจะกำหนดให้ Spring Cloud Config Server ดึงการกำหนดค่าจาก repository GitHub โดยใช้ชื่อผู้ใช้และรหัสผ่านที่กำหนด

3. กำหนดค่า Spring Cloud Config Client

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

สุดท้าย เราต้องกำหนดค่า Spring Cloud Config Client โดยเพิ่มการกำหนดค่าต่อไปนี้ลงในไฟล์ application.yml หรือ bootstrap.yml ของโปรเจ็กต์

spring:
cloud:
config:
name: my-application
profile: default
label: master

การกำหนดค่าด้านบนจะกำหนดให้ Spring Cloud Config Client ดึงการกำหนดค่าสำหรับแอปพลิเคชันชื่อ my-application โดยใช้ profile default และ label master

ตัวอย่างการใช้งาน

ตัวอย่างต่อไปนี้แสดงวิธีใช้ Spring Cloud Config ในการกำหนดค่าฐานข้อมูลสำหรับแอปพลิเคชัน Spring Boot

spring:
datasource:
url: jdbc:postgresql://localhost:5432/my-database
username: my-username
password: my-password

การกำหนดค่าด้านบนจะกำหนดให้แอปพลิเคชันเชื่อมต่อกับฐานข้อมูล PostgreSQL ที่โฮสต์บนเครื่องท้องถิ่น

เราสามารถกำหนดค่าฐานข้อมูลเพิ่มเติมได้โดยการแยกการกำหนดค่าออกเป็นไฟล์ YAML แยกต่างหาก ตัวอย่างเช่น ไฟล์ต่อไปนี้จะกำหนดค่าชื่อผู้ใช้และรหัสผ่านสำหรับฐานข้อมูล

spring:
datasource:
username: my-username
password: my-password

จากนั้น เราจะเพิ่มไฟล์นี้ลงใน repository Git ที่ใช้โดย Spring Cloud Config Server

ในการกำหนดค่า Spring Cloud Config Client ให้ใช้การกำหนดค่าต่อไปนี้

spring:
cloud:
config:
name: my-application
profile: default
label: master

การกำหนดค่าด้านบนจะกำหนดให้ Spring Cloud Config Client ดึงการกำหนดค่าสำหรับแอปพลิเคชันชื่อ my-application โดยใช้ profile default และ label master

เพิ่มโค๊ดการเรียกใช้ค่า config สำคัญต้องกำหนเ @RefreshScope บริเวณตำแหน่งบน class ที่ต้องการเข้าถึงค่า config นั้น ๆ

@RefreshScope
@Configuration
public class CloudConfigsServer {
@Value("${spring.datasource.username: default value}")
private String databaseUsername;

@Value("${spring.datasource.password: default value}")
private String databasePassword;
}

เมื่อเราเริ่มแอปพลิเคชัน Spring Boot การกำหนดค่าฐานข้อมูลจะถูกโหลดโดย Spring Cloud Config Client

สรุป

Spring Cloud Config เป็นโซลูชันที่มีประสิทธิภาพสำหรับการจัดการการกำหนดค่าแบบรวมศูนย์สำหรับแอปพลิเคชัน Spring Boot ช่วยให้นักพัฒนาสามารถจัดการการกำหนดค่าของแอปพลิเคชันได้แบบง่ายดายและมีประสิทธิภาพ

--

--

Poolsawat Apin

Senior Engineering, Full Stack Developer [Subscribe Me @poolsawat.com]