Spring Cloud Config Server একটি সার্ভিস যা মাইক্রোসার্ভিস আর্কিটেকচারে কনফিগারেশন ম্যানেজমেন্ট করতে ব্যবহৃত হয়। এটি একটি কেন্দ্রীয় কনফিগারেশন স্টোর হিসেবে কাজ করে, যেখানে সমস্ত মাইক্রোসার্ভিসের কনফিগারেশন এক জায়গায় রাখা হয় এবং বিভিন্ন সার্ভিসগুলি সেই কনফিগারেশন রিটার্ন করতে পারে। এই কনফিগারেশনগুলি Git, JDBC, File System ইত্যাদি থেকে রিট্রিভ করা যেতে পারে।
Spring Cloud Config Server মূলত একটি centralized configuration server হিসেবে কাজ করে, যেখানে সমস্ত মাইক্রোসার্ভিসের জন্য কনফিগারেশন একত্রিত করা হয় এবং সার্ভিসগুলো সহজে সেই কনফিগারেশন ব্যবহার করতে পারে।
প্রথমে, আপনাকে Spring Cloud Config Server ডিপেনডেন্সি আপনার pom.xml
-এ যোগ করতে হবে।
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
এটি আপনার প্রজেক্টে Spring Cloud Config Server এর জন্য প্রয়োজনীয় সমস্ত ডিপেনডেন্সি যোগ করবে।
Config Server-এর জন্য @EnableConfigServer
অ্যানোটেশন ব্যবহার করুন। এটি স্প্রিং বুট অ্যাপ্লিকেশনকে একটি কনফিগারেশন সার্ভার হিসাবে কনফিগার করবে।
ConfigServerApplication.java
:import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
এই ক্লাসটি Spring Boot application এবং Config Server এর জন্য শুরু করার জন্য প্রয়োজনীয় অ্যানোটেশন দিয়ে সেটআপ করা হয়েছে।
application.yml
বা application.properties
ফাইলের মাধ্যমে কনফিগারেশন সার্ভারের বিভিন্ন কনফিগারেশন সেট করুন। সাধারণত এটি Git রেপোজিটরি থেকে কনফিগারেশন ফাইলগুলো রিট্রিভ করতে ব্যবহৃত হয়।
application.yml
:server:
port: 8888
spring:
cloud:
config:
server:
git:
uri: https://github.com/your/repository
clone-on-start: true
এখানে, uri
দিয়ে আপনি Git repository এর URL দিন যেখানে আপনার কনফিগারেশন ফাইলগুলি রাখা আছে। এই কনফিগারেশন ফাইলটি YAML অথবা properties ফরম্যাটে থাকতে পারে। এছাড়া, clone-on-start
সেটিংটি সার্ভার চালু হলে গিট রিপোজিটরি থেকে কনফিগারেশন ফাইল ক্লোন করার জন্য ব্যবহৃত হয়।
Config Server সাধারণত Git রিপোজিটরি থেকে কনফিগারেশন ফাইল পাবে। এটি একটি সাধারণ Git repository হতে পারে, যেখানে মাইক্রোসার্ভিসগুলির জন্য কনফিগারেশন রাখা থাকে।
/config-repo
├── application.yml
├── service1.yml
└── service2.yml
এখানে, application.yml
গ্লোবাল কনফিগারেশন হতে পারে, এবং service1.yml
এবং service2.yml
নির্দিষ্ট সার্ভিসের কনফিগারেশন।
মাইক্রোসার্ভিসগুলোতে কনফিগারেশন প্রাপ্তি নিশ্চিত করতে, আপনাকে ক্লায়েন্ট সাইডে spring-cloud-starter-config
ডিপেনডেন্সি যোগ করতে হবে এবং config server এর URL কনফিগার করতে হবে।
pom.xml
(Client Side):<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
application.yml
(Client Side):spring:
cloud:
config:
uri: http://localhost:8888
এখানে uri
সেট করা হয়েছে যেখানে Config Server রান করছে। এটি কনফিগারেশন রিট্রিভ করার জন্য Config Server এর এন্ডপয়েন্ট।
একবার Config Server চালু হলে, ক্লায়েন্ট মাইক্রোসার্ভিসগুলি কনফিগারেশন তথ্য Config Server
থেকে রিট্রিভ করতে সক্ষম হবে।
ধরা যাক, application.yml
ফাইলের মধ্যে এই কনফিগারেশনটি রয়েছে:
myapp:
name: My Spring Cloud Application
description: This is a Spring Cloud Example
এটি আপনার ক্লায়েন্ট মাইক্রোসার্ভিসে পাওয়া যাবে এবং আপনি এটি ব্যবহার করতে পারবেন।
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AppController {
@Value("${myapp.name}")
private String appName;
@Value("${myapp.description}")
private String appDescription;
@GetMapping("/config")
public String getConfig() {
return "App Name: " + appName + ", Description: " + appDescription;
}
}
এটি Config Server থেকে কনফিগারেশন ডেটা রিটার্ভ করে এবং একটি REST API এর মাধ্যমে এটি প্রদর্শন করবে।
আপনি OAuth2 বা Basic Authentication ব্যবহার করে Config Server সুরক্ষিত করতে পারেন। উদাহরণস্বরূপ, যদি আপনাকে Basic Authentication
ব্যবহার করতে হয়, তাহলে আপনাকে application.yml
ফাইলে ইউজারনেম এবং পাসওয়ার্ড সেট করতে হবে।
application.yml
(Config Server Security):spring:
security:
user:
name: config-user
password: config-password
Spring Cloud Config Server মাইক্রোসার্ভিস আর্কিটেকচারের জন্য একটি গুরুত্বপূর্ণ উপাদান, যা সমস্ত মাইক্রোসার্ভিসের জন্য একটি কেন্দ্রীয় কনফিগারেশন সার্ভিস সরবরাহ করে। এটি বিভিন্ন পরিবেশে মাইক্রোসার্ভিসগুলির কনফিগারেশন সিঙ্ক্রোনাইজ করতে সাহায্য করে, এবং পরিবর্তনগুলো মাইক্রোসার্ভিসে সহজে প্রয়োগ করা সম্ভব হয়। এটি Git, JDBC বা ফাইল সিস্টেমের মাধ্যমে কনফিগারেশন ম্যানেজ করতে পারে, যা মাইক্রোসার্ভিসগুলির জন্য একীভূত কনফিগারেশন ম্যানেজমেন্ট নিশ্চিত করে।
Spring Cloud Config Server একটি কেন্দ্রীয় কনফিগারেশন সার্ভিস যা মাইক্রোসার্ভিস আর্কিটেকচারের মধ্যে সমস্ত সার্ভিসের কনফিগারেশন সেন্ট্রালাইজড এবং ম্যানেজ করতে ব্যবহৃত হয়। এর মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের কনফিগারেশনগুলি একটি কেন্দ্রীয় রিপোজিটরি (যেমন Git, SVN বা ফাইল সিস্টেম) থেকে একসাথে সংগ্রহ এবং রিফ্রেশ করতে পারেন। এতে সার্ভিসগুলো নির্ভরশীল হয়ে পড়ে না যে তাদের কনফিগারেশন ফাইল কোথায় সঞ্চিত আছে এবং তা ডেভেলপমেন্ট বা প্রোডাকশন পরিবেশে কিভাবে কনফিগার করা হয়েছে।
Config Server একটি সার্ভার হিসাবে কাজ করে, যা ক্লায়েন্টদের কনফিগারেশন প্রদান করে, এবং কনফিগারেশনগুলি আপডেটের ক্ষেত্রে পরিবর্তনগুলো রিফ্রেশ করতে সাহায্য করে।
Spring Cloud Config Server
এর মাধ্যমে সমস্ত সার্ভিসের কনফিগারেশন এক জায়গায় রাখা এবং এটি ম্যানেজ করা সহজ হয়।application.properties
বা application.yml
এক্সটার্নাল রিপোজিটরি (যেমন Git) থেকে লোড করা হয়, যা ডেভেলপারদের জন্য বেশ সুবিধাজনক। একাধিক অ্যাপ্লিকেশন কনফিগারেশন একই রিপোজিটরির মধ্যে রাখা যেতে পারে।application-dev.properties
, application-prod.properties
বা application-test.properties
ফাইল তৈরি করতে পারেন।Config Server সাধারণত একটি RESTful সার্ভিস যা কনফিগারেশন ফাইলগুলিকে Git বা SVN রিপোজিটরি থেকে লোড করে এবং ক্লায়েন্টদের প্রদান করে।
application-dev.properties
, application-prod.properties
)। এই ফাইলগুলো নির্দিষ্ট পরিবেশের জন্য কনফিগারেশন সংরক্ষণ করে।Config Server সেটআপ:
প্রথমে, Spring Cloud Config Server অ্যাপ্লিকেশন তৈরি করতে হবে।
pom.xml (Config Server ডিপেন্ডেন্সি):
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
application.yml (Config Server কনফিগারেশন):
spring:
cloud:
config:
server:
git:
uri: https://github.com/your-repo/config-repo
searchPaths: '{application}'
cloneOnStart: true
এই কনফিগারেশনটি একটি Git রিপোজিটরির URL প্রদান করে যেখানে কনফিগারেশন ফাইলগুলি সংরক্ষিত থাকে।
Config Client সেটআপ:
pom.xml (Config Client ডিপেন্ডেন্সি):
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
application.yml (Config Client কনফিগারেশন):
spring:
application:
name: my-service
cloud:
config:
uri: http://localhost:8888 # Config Server URI
এই কনফিগারেশনটি Config Server থেকে কনফিগারেশন ডাটা রিট্রাইভ করবে।
POST /actuator/refresh
এন্ডপয়েন্টে রিকোয়েস্ট পাঠিয়ে কনফিগারেশন রিফ্রেশ করতে পারেন।Spring Cloud Config Server একটি শক্তিশালী টুল যা মাইক্রোসার্ভিস আর্কিটেকচারের কনফিগারেশন ম্যানেজমেন্টকে সহজ করে তোলে। এটি সার্ভিসগুলির কনফিগারেশন সেন্ট্রালাইজ করতে, পরিবর্তন করতে এবং নিরাপদে পরিচালনা করতে সহায়ক, ফলে আপনার অ্যাপ্লিকেশন আরও স্কেলেবল এবং ম্যানেজযোগ্য হয়ে ওঠে।
Spring Cloud Config Server হল একটি সেন্ট্রাল কনফিগারেশন সার্ভিস, যা Spring Boot অ্যাপ্লিকেশনগুলির কনফিগারেশন স্টোর এবং ম্যানেজ করার জন্য ব্যবহৃত হয়। এটি মাইক্রোসার্ভিস আর্কিটেকচারে সমস্ত সার্ভিসের কনফিগারেশনকে একটি সেন্ট্রাল প্লেসে রাখার সুবিধা দেয় এবং আপনার অ্যাপ্লিকেশনকে কনফিগারেশন পরিবর্তনগুলি সহজে এক্সেস করার অনুমতি দেয়।
প্রথমে Spring Cloud Config Server এবং Spring Cloud Config Client এর জন্য প্রয়োজনীয় ডিপেনডেন্সি আপনার pom.xml ফাইলে যোগ করুন।
<dependencies>
<!-- Spring Boot Starter Web for REST API -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Cloud Config Server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- Spring Boot Starter Actuator (Optional for monitoring) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<dependencies>
<!-- Spring Boot Starter Web for REST API -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Cloud Config Client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>
Spring Cloud Config Server সঠিকভাবে কাজ করার জন্য আপনাকে @EnableConfigServer
এনোটেশন ব্যবহার করে একটি অ্যাপ্লিকেশন তৈরি করতে হবে। এই অ্যাপ্লিকেশনটি আপনার সমস্ত মাইক্রোসার্ভিসের কনফিগারেশন পাঠাবে।
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
application.properties
কনফিগারেশন:application.properties
বা application.yml
ফাইল কনফিগার করে Config Server-কে বলুন কোন রিপোজিটরি থেকে কনফিগারেশন ফাইল পড়তে হবে।
# Config Server Configuration
server.port=8888
spring.cloud.config.server.git.uri=https://github.com/your-username/your-config-repository
spring.cloud.config.server.git.clone-on-start=true
spring.cloud.config.server.git.searchPaths=configs
spring.cloud.config.server.git.username=your-username
spring.cloud.config.server.git.password=your-password
spring.cloud.config.server.git.uri
: এটি গিট রিপোজিটরি ইউআরএল যেখানে আপনার কনফিগারেশন ফাইল রয়েছে।spring.cloud.config.server.git.searchPaths
: কনফিগারেশন ফাইলের অবস্থান (যদি আপনি গিট রিপোজিটরিতে একাধিক ফোল্ডার ব্যবহার করেন)।spring.cloud.config.server.git.username
ও spring.cloud.config.server.git.password
: যদি রিপোজিটরি প্রাইভেট হয়, তবে আপনার গিট রিপোজিটরি অ্যাক্সেসের জন্য ইউজারনেম এবং পাসওয়ার্ড ব্যবহার করতে হবে।Config Server গিট রিপোজিটরি থেকে কনফিগারেশন ফাইল পড়বে, তাই একটি গিট রিপোজিটরি তৈরি করুন (যদি আপনি আগে থেকেই না করে থাকেন)। আপনি এখানে কনফিগারেশন ফাইল যেমন application.properties
বা application.yml
রাখতে পারেন।
# application.yml
server:
port: 8081
spring:
application:
name: my-service
এই ফাইলটি গিট রিপোজিটরিতে যোগ করুন এবং Config Server-এ ব্যবহার করার জন্য সেট আপ করুন।
Config Client সেট আপ করতে হলে, spring-cloud-starter-config
ডিপেনডেন্সি এবং কনফিগারেশন প্রপার্টি যোগ করতে হবে।
Client অ্যাপ্লিকেশন আপনার Spring Boot অ্যাপ্লিকেশন হতে পারে, যা কনফিগারেশন সার্ভার থেকে কনফিগারেশন গ্রহণ করবে।
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
application.properties
):Config Client-এর application.properties
ফাইলে আপনি Config Server এর ইউআরএল এবং সার্ভিসের নাম উল্লেখ করবেন।
# Config Client Configuration
spring.application.name=my-service
spring.cloud.config.uri=http://localhost:8888
এখানে, spring.cloud.config.uri
Config Server-এর URL যেখানে আপনার কনফিগারেশন ফাইল রাখা আছে।
@RefreshScope
এনোটেশন ব্যবহার করে ডাইনামিক কনফিগারেশন রিফ্রেশ করার অনুমতি দেওয়া যায়।
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope
public class ConfigClientController {
@Value("${server.port}")
private String serverPort;
@GetMapping("/config")
public String getConfig() {
return "Config Server Port: " + serverPort;
}
}
এখানে, @Value("${server.port}")
কনফিগারেশন ফাইল থেকে server.port
প্রপার্টি কে ইনজেক্ট করবে এবং /config
এ এই কনফিগারেশন প্রদর্শন করবে।
http://localhost:8081/config
গিয়ে কনফিগারেশন তথ্য দেখুন।যদি আপনি কনফিগারেশন পরিবর্তন করতে চান এবং সেটা Client অ্যাপ্লিকেশন-এ রিফ্রেশ করতে চান, তবে আপনি @RefreshScope
ব্যবহার করতে পারেন এবং /actuator/refresh
এ POST রিকোয়েস্ট পাঠাতে পারেন।
curl -X POST http://localhost:8081/actuator/refresh
এটি Config Server থেকে নতুন কনফিগারেশন লোড করবে এবং Client অ্যাপ্লিকেশন তা রিফ্রেশ করবে।
@RefreshScope
ব্যবহার করে কনফিগারেশন রিফ্রেশ করতে সক্ষম হয়।Spring Cloud Config ব্যবহারের মাধ্যমে আপনি কনফিগারেশন ম্যানেজমেন্ট প্রক্রিয়া সহজ ও সেন্ট্রালাইজড করতে পারেন, যা মাইক্রোসার্ভিস আর্কিটেকচারের জন্য অত্যন্ত কার্যকর।
Spring Cloud-এ Git Repository ব্যবহার করে কনফিগারেশন Externalize করা একটি শক্তিশালী বৈশিষ্ট্য, যা মাইক্রোসার্ভিস আর্কিটেকচারে কনফিগারেশন ম্যানেজমেন্ট সহজ করে। এটি আপনার অ্যাপ্লিকেশনের কনফিগারেশনকে একত্রে সংরক্ষণ করতে এবং সার্ভিসগুলোকে ডাইনামিকভাবে কনফিগারেশন আপডেট করতে সক্ষম করে, যার ফলে কনফিগারেশন পরিবর্তন করার জন্য সার্ভিসের রিইস্টার্ট করার প্রয়োজন হয় না।
Spring Cloud Config Server-এর মাধ্যমে Git Repository থেকে কনফিগারেশন লোড করা হয়। এর জন্য আপনাকে দুটি প্রধান উপাদান তৈরি করতে হবে:
Spring Cloud Config Server তৈরি করতে প্রথমে একটি Spring Boot অ্যাপ্লিকেশন তৈরি করুন এবং spring-cloud-config-server
ডিপেন্ডেন্সি যুক্ত করুন।
pom.xml
)<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
Config Server-এর জন্য application.yml
বা application.properties
ফাইল কনফিগার করুন। এখানে আমরা Git repository থেকে কনফিগারেশন ফাইল লোড করব।
server:
port: 8888 # Config server runs on port 8888
spring:
cloud:
config:
server:
git:
uri: https://github.com/your-org/config-repo # Replace with your Git repository URL
searchPaths: '{application}' # Optional: specifies which directory within the repo to search for config
clone-on-start: true # Optionally clone on start
username: your-username # Optional: if repository is private
password: your-password # Optional: if repository is private
ConfigServerApplication.java
)Config Server সক্রিয় করতে @EnableConfigServer
ব্যবহার করুন।
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
Config Client একটি মাইক্রোসার্ভিস যা Config Server থেকে কনফিগারেশন ফাইল লোড করবে।
pom.xml
)<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
Config Client এ application.yml
বা application.properties
ফাইল কনফিগার করুন এবং Config Server URL উল্লেখ করুন।
spring:
application:
name: my-service # Name of the client service
cloud:
config:
uri: http://localhost:8888 # Config Server URL
ClientApplication.java
)Config Client-এর একটি সাধারণ উদাহরণ:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class ClientApplication {
public static void main(String[] args) {
SpringApplication.run(ClientApplication.class, args);
}
@GetMapping("/config-info")
public String getConfigInfo() {
return "Config loaded successfully from Config Server!";
}
}
Git Repository এ কনফিগারেশন ফাইলগুলো রাখুন। উদাহরণস্বরূপ, যদি আপনার মাইক্রোসার্ভিসের নাম my-service
হয়, তবে আপনার Git repository এ একটি my-service.yml
অথবা application.yml
ফাইল থাকতে হবে।
Example my-service.yml
in Git Repo:
server:
port: 8081 # Custom port for this client
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: user
password: password
Spring Cloud Config Server এবং Client এর সাহায্যে কনফিগারেশনকে ডাইনামিকালি রিফ্রেশ করা যায়, অর্থাৎ কনফিগারেশন পরিবর্তন করলেও সার্ভিস রিইস্টার্ট করার প্রয়োজন হয় না।
Config Client এ spring-boot-starter-actuator
ডিপেন্ডেন্সি যুক্ত করুন।
Maven Dependency:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Config Client এর application.yml
এ রিফ্রেশ কল করার জন্য @RefreshScope
এবং /actuator/refresh
এনডপয়েন্ট সক্রিয় করুন।
@RefreshScope
annotation:import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RefreshScope
@RestController
public class ConfigController {
@Value("${server.port}")
private String serverPort;
@GetMapping("/config-port")
public String getConfigPort() {
return "Server port from config: " + serverPort;
}
}
কনফিগারেশন রিফ্রেশ করতে, /actuator/refresh
এ HTTP POST রিকোয়েস্ট পাঠান।
curl -X POST http://localhost:8081/actuator/refresh
এটি কনফিগারেশন পুনরায় লোড করবে এবং যেকোনো পরিবর্তন অ্যাপ্লিকেশনে প্রতিফলিত হবে।
Config Server এবং Client এর পুরো কাঠামো GitHub ব্যবহার করে কনফিগারেশন ম্যানেজমেন্টের জন্য সাজানো যায়। যখন কনফিগারেশন GitHub repository থেকে সরবরাহ করা হয়, তখন এটি ডেভেলপারদের জন্য খুবই সুবিধাজনক এবং কনফিগারেশন আপডেট এবং রোলব্যাক সহজ হয়।
Spring Cloud Config Server এবং GitHub repository ব্যবহার করে কনফিগারেশন Externalize করার মাধ্যমে আপনি মাইক্রোসার্ভিস আর্কিটেকচারের জন্য সেন্ট্রালাইজড কনফিগারেশন ম্যানেজমেন্ট বাস্তবায়ন করতে পারেন। এর মাধ্যমে আপনি আপনার সার্ভিসের কনফিগারেশন সহজভাবে ম্যানেজ এবং ডাইনামিকভাবে আপডেট করতে পারবেন, যেটি সিস্টেমের ফ্লেক্সিবিলিটি এবং মেইনটেনিবিলিটি বৃদ্ধি করবে।
যদি আরো কোনো অংশে সাহায্য বা বিস্তারিত ব্যাখ্যা প্রয়োজন হয়, জানাবেন! 😊
স্প্রিং ক্লাউড কনফিগারেশন (Spring Cloud Config) হল একটি সেন্ট্রাল কনফিগারেশন সার্ভিস যা মাইক্রোসার্ভিসগুলির জন্য কনফিগারেশন ম্যানেজমেন্ট সহজ করে। স্প্রিং ক্লাউড কনফিগ সার্ভার কনফিগারেশন ফাইলগুলোকে একটি সেন্ট্রাল প্লেসে রাখে এবং মাইক্রোসার্ভিসগুলো কনফিগারেশন পাওয়ার জন্য এই সার্ভিসে রিকোয়েস্ট করে। এতে অ্যাপ্লিকেশনগুলির কনফিগারেশন পরিবর্তন সহজে করা যায়, এবং সমস্ত সার্ভিসে পরিবর্তনগুলো সিঙ্ক্রোনাইজড থাকে।
স্প্রিং ক্লাউড কনফিগ সার্ভার এবং কনফিগ ক্লায়েন্ট এর ইন্টিগ্রেশন করার জন্য দুটি পৃথক অ্যাপ্লিকেশন তৈরি করতে হয়:
স্প্রিং ক্লাউড কনফিগ সার্ভার তৈরি করতে, নিচের ডিপেনডেন্সি গুলো pom.xml
বা build.gradle
-এ যুক্ত করুন:
pom.xml
(Config Server):
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
@EnableConfigServer
অ্যানোটেশন ব্যবহার করে স্প্রিং কনফিগ সার্ভার সক্রিয় করতে হবে।
package com.example.configserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
application.yml
কনফিগারেশন (Config Server)এখন Config Server-এর application.yml
অথবা application.properties
ফাইলে কনফিগারেশন রিসোর্সের লোকেশন উল্লেখ করতে হবে। উদাহরণস্বরূপ, একটি Git রেপোজিটরি ব্যবহার করতে পারেন যেখানে কনফিগারেশন ফাইল সংরক্ষিত থাকবে।
application.yml
(Config Server):
server:
port: 8888
spring:
cloud:
config:
server:
git:
uri: https://github.com/your-repo/config-repository
searchPaths: '{application}'
এখানে uri
হলো Git রিপোজিটরির URL যেখানে কনফিগারেশন ফাইল সংরক্ষিত থাকে।
কনফিগ ফাইল গুলো Git রিপোজিটরিতে এইভাবে রাখা হয়:
config-repository
├── application.yml
└── service-name.yml
application.yml
: সাধারণ কনফিগারেশন।service-name.yml
: নির্দিষ্ট মাইক্রোসার্ভিসের কনফিগারেশন।Config Client অ্যাপ্লিকেশন তৈরি করতে নিচের ডিপেনডেন্সি গুলো pom.xml
বা build.gradle
-এ যুক্ত করুন:
pom.xml
(Config Client):
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
Config Client অ্যাপ্লিকেশনের মধ্যে @SpringBootApplication
অ্যানোটেশন থাকবে, এবং কনফিগ সার্ভারের কনফিগারেশন ফাইল গ্রহণ করার জন্য @EnableConfigServer
প্রয়োজন নেই।
package com.example.configclient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
application.yml
কনফিগারেশন (Config Client)Config Client অ্যাপ্লিকেশনের application.yml
বা application.properties
ফাইলে কনফিগ সার্ভারের লোকেশন এবং কনফিগের ফাইল নাম উল্লেখ করতে হবে।
application.yml
(Config Client):
spring:
application:
name: service-name # service-name এর সাথে মিলিয়ে config server থেকে কনফিগ আনা হবে
cloud:
config:
uri: http://localhost:8888 # Config Server এর URL
@Value
বা @ConfigurationProperties
ব্যবহার করে কনফিগ মান আনাConfig Client অ্যাপ্লিকেশন থেকে কনফিগ মান গ্রহণ করতে, @Value
অথবা @ConfigurationProperties
ব্যবহার করা যায়।
কনফিগ মান গ্রহণের উদাহরণ:
package com.example.configclient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class ConfigClientRunner implements CommandLineRunner {
@Value("${custom.property}")
private String customProperty;
@Override
public void run(String... args) throws Exception {
System.out.println("Fetched Property from Config Server: " + customProperty);
}
}
এখানে custom.property
Config Server থেকে আসে।
Config Server অ্যাপ্লিকেশন চালু করুন:
mvn spring-boot:run -Dspring-boot.run.profiles=default
Config Client অ্যাপ্লিকেশন চালু করুন:
mvn spring-boot:run
আপনি দেখতে পাবেন যে Config Client সার্ভিসটি কনফিগ সার্ভার থেকে কনফিগ গ্রহণ করে এবং তা কনসোলে আউটপুট হিসেবে দেখাবে।
এভাবে আপনি স্প্রিং ক্লাউড কনফিগ সার্ভার (Spring Cloud Config Server) এবং স্প্রিং ক্লাউড কনফিগ ক্লায়েন্ট (Config Client) এর মাধ্যমে সেন্ট্রাল কনফিগারেশন ম্যানেজমেন্ট ইন্টিগ্রেট করতে পারবেন।
Read more