স্প্রিং ক্লাউড কন্ট্রাক্ট (Spring Cloud Contract) একটি টুল যা মাইক্রোসার্ভিস আর্কিটেকচারে ইন্টিগ্রেশন টেস্টিং সহজ করে তোলে। এটি কনজিউমার-প্রভাইডার (Consumer-Provider) আর্কিটেকচারে সার্ভিসগুলোর মধ্যে কন্ট্রাক্ট তৈরি এবং পরীক্ষা করার জন্য ব্যবহৃত হয়।
কন্ট্রাক্ট স্টাব (Contract Stub) তৈরির মাধ্যমে স্প্রিং ক্লাউড কন্ট্রাক্ট নিশ্চিত করে যে, মাইক্রোসার্ভিসগুলো নির্ধারিত চুক্তি বা কন্ট্রাক্ট অনুসারে একে অপরের সাথে যোগাযোগ করছে।
কন্ট্রাক্ট স্টাব (Contract Stub) কী?
কন্ট্রাক্ট স্টাব এমন একটি মক বা নকল সার্ভিস যা আসল সার্ভিসের মতো আচরণ করে। এটি কনজিউমার এবং প্রভাইডারের মধ্যে নির্ধারিত কন্ট্রাক্ট অনুযায়ী আচরণ নিশ্চিত করতে ব্যবহৃত হয়। কন্ট্রাক্ট স্টাব প্রভাইডার সার্ভিসের প্রত্যাশিত রেসপন্সগুলো কনজিউমার সার্ভিসে পরীক্ষা করার জন্য তৈরি করা হয়।
মাইক্রোসার্ভিস ইন্টিগ্রেশন টেস্টিংয়ের জন্য কন্ট্রাক্ট স্টাব ব্যবহারের ধাপ
কনজিউমার এবং প্রভাইডার নির্ধারণ
- কনজিউমার সার্ভিস (Consumer Service): যে সার্ভিস অন্য একটি সার্ভিস থেকে ডেটা বা রিসোর্স গ্রহণ করে।
- প্রভাইডার সার্ভিস (Provider Service): যে সার্ভিস ডেটা বা রিসোর্স প্রদান করে।
কন্ট্রাক্ট তৈরি
স্প্রিং ক্লাউড কন্ট্রাক্ট ব্যবহার করে একটি DSL (Domain Specific Language) ফাইল তৈরি করা হয়, যা কনজিউমার-প্রভাইডার সম্পর্কের চুক্তি বর্ণনা করে। উদাহরণস্বরূপ, গ্রোভি (Groovy) বা YAML ফরম্যাটে এই কন্ট্রাক্ট ফাইল লেখা হয়।
উদাহরণ:
Contract.make {
description "Get user details by ID"
request {
method GET()
url '/users/1'
}
response {
status 200
body(
id: 1,
name: "John Doe"
)
headers {
contentType(applicationJson())
}
}
}
কন্ট্রাক্ট ভেরিফিকেশন এবং স্টাব জেনারেশন
- প্রভাইডার সার্ভিসে কন্ট্রাক্ট ভেরিফাই করা: কন্ট্রাক্ট অনুযায়ী প্রভাইডার সার্ভিস প্রত্যাশিত রেসপন্স দিচ্ছে কিনা তা পরীক্ষা করা হয়।
- স্টাব জেনারেশন: কন্ট্রাক্ট ফাইল থেকে স্টাব জেনারেট করা হয়। এটি ব্যবহার করে কনজিউমার সার্ভিস পরীক্ষা করা যায়।
কনজিউমার সার্ভিসে ইন্টিগ্রেশন টেস্টিং
কনজিউমার সার্ভিসে স্টাব ব্যবহার করে পরীক্ষা করা হয় যে, প্রভাইডার সার্ভিস থেকে প্রত্যাশিত রেসপন্স পাওয়া যাচ্ছে কিনা।
স্প্রিং ক্লাউড কন্ট্রাক্ট ইন্টিগ্রেশন সেটআপ
প্রয়োজনীয় ডিপেনডেন্সি
Gradle বা Maven ব্যবহার করে স্প্রিং ক্লাউড কন্ট্রাক্টের প্রয়োজনীয় ডিপেনডেন্সি যোগ করুন।
Maven:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-contract-verifier</artifactId>
<version>3.0.0</version>
</dependency>
Gradle:
implementation 'org.springframework.cloud:spring-cloud-starter-contract-verifier:3.0.0'
প্লাগিন কনফিগারেশন
Maven:
<plugin>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-contract-maven-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<baseClassForTests>com.example.BaseTestClass</baseClassForTests>
</configuration>
</plugin>
Gradle:
plugins {
id "org.springframework.cloud.contract" version "3.0.0"
}
contracts {
testFramework = 'JUNIT5'
}
কন্ট্রাক্ট স্টাব ব্যবহারের সুবিধা
- ইন্টিগ্রেশন টেস্টিং সহজ এবং নির্ভুল করা।
- ডেভেলপমেন্টের প্রাথমিক ধাপেই বাগ শনাক্তকরণ।
- কনজিউমার এবং প্রভাইডারের মধ্যে স্পষ্ট চুক্তি নিশ্চিতকরণ।
- স্টাব ব্যবহার করে প্রভাইডার সার্ভিস ছাড়াই কনজিউমার টেস্টিং করা।
সারাংশ
স্প্রিং ক্লাউড কন্ট্রাক্ট মাইক্রোসার্ভিস আর্কিটেকচারে ইন্টিগ্রেশন টেস্টিং সহজ করে এবং স্টাব জেনারেশনের মাধ্যমে প্রভাইডার ও কনজিউমারের মধ্যে নির্ভরযোগ্যতা নিশ্চিত করে। এটি ব্যবহারে অ্যাপ্লিকেশন আরও স্থিতিশীল এবং কার্যকর হয়।
Read more