স্প্রিং ক্লাউড কনফিগারেশন (Spring Cloud Config) হল একটি সেন্ট্রাল কনফিগারেশন সার্ভিস যা মাইক্রোসার্ভিসগুলির জন্য কনফিগারেশন ম্যানেজমেন্ট সহজ করে। স্প্রিং ক্লাউড কনফিগ সার্ভার কনফিগারেশন ফাইলগুলোকে একটি সেন্ট্রাল প্লেসে রাখে এবং মাইক্রোসার্ভিসগুলো কনফিগারেশন পাওয়ার জন্য এই সার্ভিসে রিকোয়েস্ট করে। এতে অ্যাপ্লিকেশনগুলির কনফিগারেশন পরিবর্তন সহজে করা যায়, এবং সমস্ত সার্ভিসে পরিবর্তনগুলো সিঙ্ক্রোনাইজড থাকে।
স্প্রিং ক্লাউড কনফিগ সার্ভার (Spring Cloud Config Server) এবং কনফিগ ক্লায়েন্ট (Config Client) ইন্টিগ্রেশন:
স্প্রিং ক্লাউড কনফিগ সার্ভার এবং কনফিগ ক্লায়েন্ট এর ইন্টিগ্রেশন করার জন্য দুটি পৃথক অ্যাপ্লিকেশন তৈরি করতে হয়:
- Config Server - সেন্ট্রাল কনফিগারেশন সার্ভিস।
- Config Client - কনফিগারেশন সার্ভিস থেকে কনফিগারেশন নেওয়া মাইক্রোসার্ভিস।
ধাপ ১: Spring Cloud Config Server Setup
১.1 Config Server প্রজেক্ট তৈরি করুন
স্প্রিং ক্লাউড কনফিগ সার্ভার তৈরি করতে, নিচের ডিপেনডেন্সি গুলো pom.xml বা build.gradle-এ যুক্ত করুন:
pom.xml (Config Server):
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
১.2 Config Server Application Class
@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);
}
}
১.3 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 যেখানে কনফিগারেশন ফাইল সংরক্ষিত থাকে।
১.4 Git Repository Structure (Config Repository)
কনফিগ ফাইল গুলো Git রিপোজিটরিতে এইভাবে রাখা হয়:
config-repository
├── application.yml
└── service-name.yml
application.yml: সাধারণ কনফিগারেশন।service-name.yml: নির্দিষ্ট মাইক্রোসার্ভিসের কনফিগারেশন।
ধাপ ২: Spring Cloud Config Client Setup
২.1 Config Client প্রজেক্ট তৈরি করুন
Config Client অ্যাপ্লিকেশন তৈরি করতে নিচের ডিপেনডেন্সি গুলো pom.xml বা build.gradle-এ যুক্ত করুন:
pom.xml (Config Client):
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
২.2 Config Client Application Class
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);
}
}
২.3 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
২.4 @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 এবং Client টেস্ট করা
৩.1 Config Server রান করুন
Config Server অ্যাপ্লিকেশন চালু করুন:
mvn spring-boot:run -Dspring-boot.run.profiles=default
৩.2 Config Client রান করুন
Config Client অ্যাপ্লিকেশন চালু করুন:
mvn spring-boot:run
আপনি দেখতে পাবেন যে Config Client সার্ভিসটি কনফিগ সার্ভার থেকে কনফিগ গ্রহণ করে এবং তা কনসোলে আউটপুট হিসেবে দেখাবে।
স্প্রিং ক্লাউড কনফিগ সার্ভার এবং ক্লায়েন্টের উপকারিতা:
- কেন্দ্রীভূত কনফিগারেশন: মাইক্রোসার্ভিসের কনফিগারেশন এক জায়গায় রাখা যায় এবং সমস্ত সার্ভিসে সেটি সিঙ্ক্রোনাইজড থাকে।
- ডাইনামিক কনফিগারেশন রিলোড: কনফিগারেশন পরিবর্তন হলে, সার্ভিসগুলো আবার কনফিগ সার্ভার থেকে আপডেট নিতে পারে।
- Git সাপোর্ট: Git রেপোজিটরি থেকে কনফিগ ফাইলগুলি সরাসরি ব্যবহৃত হতে পারে, যা ডেভেলপমেন্টের সময় কনফিগ ম্যানেজমেন্ট আরও সহজ করে।
এভাবে আপনি স্প্রিং ক্লাউড কনফিগ সার্ভার (Spring Cloud Config Server) এবং স্প্রিং ক্লাউড কনফিগ ক্লায়েন্ট (Config Client) এর মাধ্যমে সেন্ট্রাল কনফিগারেশন ম্যানেজমেন্ট ইন্টিগ্রেট করতে পারবেন।
Read more