১. ভূমিকা
এই কোডল্যাবে, আমরা আপনার বিদ্যমান সার্ভিসগুলোর জন্য সিন্থেটিক মনিটরিং টেস্ট তৈরি করতে ‘হেল্প মি রাইট’ ফিচারটির ব্যবহার দেখব।
আপনি যা করবেন...
- আপনি গুগল ক্লাউড রান-এ একটি এপিআই স্থাপন করবেন, যা আমাদের পরীক্ষিত পরিষেবার ভিত্তি হিসেবে কাজ করবে।
- এরপর আপনি একটি সিন্থেটিক মনিটর লিখবেন, যা ক্লাউড মনিটরিং-এর একটি বৈশিষ্ট্য।
- আপনি সিন্থেটিক মনিটরটি লেখার জন্য ‘হেল্প মি রাইট’ ফিচারটি ব্যবহার করবেন।
আপনি যা শিখবেন...
- সিন্থেটিক মনিটরিং কী।
- সিন্থেটিক মনিটরিং-এ জেমিনির 'হেল্প মি রাইট' ফিচারটি ব্যবহার করে কীভাবে কোর সার্ভিসের কার্যকারিতা যাচাই করার জন্য টেস্ট কেস তৈরি করা যায়।
আপনার যা যা লাগবে...
- ক্রোম ওয়েব ব্রাউজার
- একটি জিমেইল অ্যাকাউন্ট
- বিলিং সক্ষম একটি ক্লাউড প্রজেক্ট
- আপনার ক্লাউড প্রজেক্টের জন্য জেমিনি কোড অ্যাসিস্ট সক্রিয় করা হয়েছে।
এই ল্যাবটি নতুনদের সহ সকল স্তরের ডেভেলপারদের জন্য তৈরি করা হয়েছে। যদিও নমুনা অ্যাপ্লিকেশনটি পাইথন ভাষায় তৈরি, এখানে কী ঘটছে তা বোঝার জন্য আপনার পাইথন প্রোগ্রামিং সম্পর্কে পূর্ব পরিচিতি থাকার প্রয়োজন নেই।
২. সেটআপ
আমরা এখন আমাদের গুগল ক্লাউড প্রজেক্টে জেমিনি ফর ক্লাউড সক্রিয় করব। নিচে দেওয়া ধাপগুলো অনুসরণ করুন:
- https://console.cloud.google.com- এ যান এবং নিশ্চিত করুন যে আপনি এই ল্যাবের জন্য যে গুগল ক্লাউড প্রজেক্টটি নিয়ে কাজ করতে চান, সেটি নির্বাচন করেছেন। উপরের ডানদিকে থাকা ওপেন জেমিনি আইকনটিতে ক্লিক করুন।

- কনসোলের ডানদিকে Gemini for Cloud চ্যাট উইন্ডোটি খুলে যাবে। নিচে দেখানো Enable বাটনটিতে ক্লিক করুন। যদি আপনি Enable বাটনটি দেখতে না পান এবং তার পরিবর্তে একটি চ্যাট ইন্টারফেস দেখতে পান, তাহলে সম্ভবত আপনি প্রজেক্টটির জন্য Gemini for Cloud ইতিমধ্যেই এনাবল করেছেন এবং আপনি সরাসরি পরবর্তী ধাপে যেতে পারেন।

- একবার এটি সক্রিয় হয়ে গেলে, আপনি এক বা দুটি কোয়েরি জিজ্ঞাসা করে জেমিনি ফর ক্লাউড পরীক্ষা করতে পারেন। কয়েকটি নমুনা কোয়েরি দেখানো হয়েছে, তবে আপনি নিম্নলিখিত কোয়েরিটি চেষ্টা করতে পারেন
What is Synthetic Monitoring?

জেমিনি ফর ক্লাউড আপনার প্রশ্নের উত্তর দেবে। গুগল ক্লাউডে কীভাবে সিন্থেটিক মনিটর লিখতে হয়, সে বিষয়ে প্রদত্ত রেফারেন্স ডকুমেন্টেশনের তালিকাটি দেখুন।
আপনি ক্লিক করতে পারেন
Gemini for Cloud চ্যাট উইন্ডোটি বন্ধ করতে উপরের ডান কোণার আইকনটিতে ক্লিক করুন।
৩. গুগল ক্লাউড রান-এ একটি নমুনা ইনভেন্টরি এপিআই স্থাপন করুন
টেস্টগুলো লেখা শুরু করার আগে, আমাদের একটি নমুনা এপিআই (API) প্রয়োজন হবে যা দিয়ে আমরা পরীক্ষা করতে পারব। এর জন্য, আমরা একটি সাধারণ ইনভেন্টরি এপিআই (API) লিখব যা আমরা গুগল ক্লাউড রান (Google Cloud Run)- এ ডেপ্লয় করব।
আমরা ক্লাউড শেল আইডিই (Cloud Shell IDE) ব্যবহার করব, যা একটি সম্পূর্ণ পরিচালিত কোড ওএসএস (Code OSS) ভিত্তিক ডেভেলপমেন্ট এনভায়রনমেন্ট। এই এনভায়রনমেন্টটির সাথে ক্লাউড কোড আইডিই এক্সটেনশন (Cloud Code IDE Extension) রয়েছে, যা গুগল ক্লাউড পরিষেবাগুলোর সাথে কাজ করাকে আরও কার্যকর করে তোলে। নিচে দেওয়া ধাপগুলো অনুসরণ করুন:
- ide.cloud.google.com- এ যান। IDE-টি প্রদর্শিত হতে কিছুটা সময় লাগতে পারে, তাই অনুগ্রহ করে ধৈর্য ধরুন।
- দেখানো অনুযায়ী নিচের স্ট্যাটাস বারে থাকা ‘ Cloud Code - Sign in’ বোতামটিতে ক্লিক করুন। নির্দেশনা অনুযায়ী প্লাগইনটি অনুমোদন করুন। যদি স্ট্যাটাস বারে "Cloud Code - no project" দেখতে পান, তবে সেটি নির্বাচন করুন এবং তারপরে প্রজেক্টের তালিকা থেকে নির্দিষ্ট গুগল ক্লাউড প্রজেক্টটি বেছে নিন, যেটিতে আপনি কাজ করতে চান।

- দেখানো অনুযায়ী নীচের ডান কোণায় থাকা জেমিনি বাটনে ক্লিক করুন এবং শেষবারের মতো সঠিক গুগল ক্লাউড প্রজেক্টটি নির্বাচন করুন। যদি আপনাকে ক্লাউড এআই কম্প্যানিয়ন এপিআই (Cloud AI Companion API) সক্রিয় করতে বলা হয়, তবে তা করুন এবং সামনে এগিয়ে যান।
- আপনার গুগল ক্লাউড প্রজেক্টটি নির্বাচন করার পর, নিশ্চিত করুন যে আপনি স্ট্যাটাস বারের ক্লাউড কোড স্ট্যাটাস মেসেজে সেটি দেখতে পাচ্ছেন এবং নিচে দেখানো অনুযায়ী স্ট্যাটাস বারের ডানদিকে আপনার কোড অ্যাসিস্টও চালু আছে:

- নিচের স্ট্যাটাস বারে থাকা গুগল ক্লাউড প্রজেক্টের নামে ক্লিক করুন।

- বিকল্পগুলির একটি তালিকা প্রদর্শিত হবে। নিচের তালিকা থেকে নতুন অ্যাপ্লিকেশন (New Application) -এ ক্লিক করুন।

- ক্লাউড রান অ্যাপ্লিকেশনটি নির্বাচন করুন।
- Python (Flask): Cloud Run অ্যাপ্লিকেশন টেমপ্লেটটি নির্বাচন করুন।
- নতুন অ্যাপ্লিকেশনটি আপনার পছন্দের স্থানে সংরক্ষণ করুন।
- একটি নোটিফিকেশন নিশ্চিত করে যে আপনার অ্যাপ্লিকেশনটি তৈরি হয়েছে, এবং নিচে দেখানো ছবির মতো আপনার অ্যাপ্লিকেশনটি লোড হওয়া অবস্থায় একটি নতুন উইন্ডো খোলে। একটি
README.mdফাইল খুলে যায়। আপনি আপাতত ওই ভিউটি বন্ধ করতে পারেন।

- এক্সপ্লোরার থেকে
app.pyফাইলটিতে যান এবং নিচে দেখানো বিষয়বস্তু দিয়ে এটি প্রতিস্থাপন করুন:
from flask import Flask, jsonify, request
app = Flask(__name__)
inventory = [
{
'id': 1,
'name': 'Item 1',
'quantity': 10
},
{
'id': 2,
'name': 'Item 2',
'quantity': 20
},
{
'id': 3,
'name': 'Item 3',
'quantity': 30
}
]
@app.route('/inventory', methods=['GET'])
def get_inventory():
return jsonify(inventory)
@app.route('/inventory/<int:id>', methods=['GET'])
def get_inventory_item(id):
for item in inventory:
if item['id'] == id:
return jsonify(item)
return jsonify({'error': 'Item not found'}), 404
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=8080)
- এখন ক্লাউড রান-এ ইনভেন্টরি এপিআই ডেপ্লয় করার সময়। এর জন্য আমাদের উপরের বাম দিকের মেনু আইকনের মাধ্যমে ক্লাউড শেল আইডিই (Cloud Shell IDE) থেকে একটি নতুন টার্মিনাল সেশন চালু করতে হবে। নিচে দেখানো অনুযায়ী মেনু আইকনে ক্লিক করুন এবং তারপর টার্মিনাল → নতুন টার্মিনাল (Terminal → New Terminal)- এ যান:

- টার্মিনাল সেশনে নিম্নলিখিত কমান্ডটি দিন:
gcloud run deploy --source .
- উপরের কমান্ডটি ডেপ্লয় করার জন্য একটি
regionসম্পর্কে জিজ্ঞাসা করবে, অনুগ্রহ করেus-central1বেছে নিন। এটিunauthenticated invocationsঅনুমতি চাইবে, অনুগ্রহ করেyবলে সেটির অনুমতি দিন। - সার্ভিসটি সফলভাবে ডেপ্লয় হয়ে গেলে, এটি একটি সার্ভিস ইউআরএল (Service URL) প্রদান করবে। সেটি লিখে রাখুন।
৪. ইনভেন্টরি এপিআই পরীক্ষা করে দেখুন
এখন আপনি ব্রাউজার চালু করে নিম্নলিখিত এন্ডপয়েন্টগুলিতে হিট করে ইনভেন্টরি এপিআই পরীক্ষা করতে পারেন:
SERVICE_URL/inventory
এটি সার্ভিসের নমুনা ডেটা অনুযায়ী আপনাকে ৩টি ইনভেন্টরি আইটেম ফেরত দেবে। নমুনা প্রতিক্রিয়াটি নিচে দেওয়া হলো:
[
{
"id": 1,
"name": "Item 1",
"quantity": 10
},
{
"id": 2,
"name": "Item 2",
"quantity": 20
},
{
"id": 3,
"name": "Item 3",
"quantity": 30
}
]
আমরা এখন নীচের URL-টির মাধ্যমে একটি নির্দিষ্ট ইনভেন্টরি আইটেম পেতে পারি। এটি আপনাকে সেই ইনভেন্টরি আইটেমটি ফেরত দেবে যার id মান ১।
SERVICE_URL/inventory/1
উত্তরটি নিম্নরূপ হওয়া উচিত:
{
"id": 1,
"name": "Item 1",
"quantity": 10
}
অবশেষে, আমরা এমন একটি ইনভেন্টরি আইটেম পুনরুদ্ধার করার চেষ্টা করতে পারি যার অস্তিত্ব নেই।
SERVICE_URL/inventory/200
যেহেতু ২০০ id মানের কোনো ইনভেন্টরি আইটেম নেই, তাই এটি আপনাকে একটি ত্রুটি বার্তা দেবে। প্রতিক্রিয়াটি নিম্নলিখিতের অনুরূপ হওয়া উচিত:
{
"error": "Item not found"
}
আমরা এখন জেমিনির সাহায্যে ক্লাউড মনিটরিং-এ আমাদের সিন্থেটিক মনিটরিং টেস্টগুলো লেখার জন্য প্রস্তুত।
৫. গুগল ক্লাউডে সিন্থেটিক মনিটরিং
ডকুমেন্টেশনে যেমন বলা আছে, সিন্থেটিক মনিটর আপনাকে নির্ধারণ করতে দেয় যে আপনি কী পরীক্ষা করবেন এবং পরীক্ষাগুলোর একটি ক্রম। উদাহরণস্বরূপ, আপনি আপনার অ্যাপ্লিকেশনের লগইন পেজ, আপনার ই-কমার্স স্টোরের চেকআউট প্রক্রিয়া, অথবা আপনার অ্যাপ্লিকেশন থেকে থার্ড-পার্টি পরিষেবাগুলোতে করা এপিআই কলগুলো পরীক্ষা করতে পারেন।
যখন আপনি একটি সিন্থেটিক মনিটর তৈরি করেন, তখন আপনি একটি দ্বিতীয় প্রজন্মের ক্লাউড ফাংশন ডেপ্লয় করেন যা ক্লাউড রান-এর উপর নির্মিত। আপনার ফাংশনটি অবশ্যই Node.js-এ লেখা হতে হবে এবং ওপেন সোর্স সিন্থেটিক্স এসডিকে ফ্রেমওয়ার্কের উপর নির্ভরশীল হতে হবে। ক্লাউড মনিটরিং এই ফ্রেমওয়ার্কটি বিতরণ ও পরিচালনা করে।
ক্লাউড মনিটরিং নিম্নলিখিত ধরনের সিন্থেটিক মনিটর সমর্থন করে:
- কাস্টম বা মোকা-ভিত্তিক সিন্থেটিক মনিটর আপনাকে একটি সম্পূর্ণ কনফিগারযোগ্য একক-উদ্দেশ্যমূলক ক্লাউড ফাংশন স্থাপন করতে দেয়।
- একটি পূর্ব-কনফিগার করা ক্লাউড ফাংশন স্থাপন করার আগে, ব্রোকেন-লিঙ্ক চেকার আপনাকে অরিজিন ইউআরআই, পরীক্ষিত লিঙ্কের সংখ্যা এবং পুনঃচেষ্টার সংখ্যার মতো অপশনগুলো নির্দিষ্ট করার সুযোগ দেয়।
এই সিন্থেটিক মনিটরগুলো সম্পাদন করার সময় ক্লাউড মনিটরিং অনেক গুরুত্বপূর্ণ কাজ করে থাকে। এটি নিম্নলিখিত বিষয়গুলোর জন্য দায়ী:
- আপনার ক্লাউড ফাংশনের পর্যায়ক্রমিক সম্পাদন।
- প্রতিটি সম্পাদনের ফলাফল সংগ্রহ ও সংরক্ষণ করা:
- সাফল্য এবং ব্যর্থতার তথ্য, যেমন ত্রুটির বার্তা, ত্রুটির ধরণ এবং কোডের লাইন।
- কার্যকর করার সময়
- লগ
- মেট্রিক্স
আমরা জেমিনির সাহায্য নেব এবং বিশেষ করে এর Help Me Write ফিচারটি ব্যবহার করব, যা আমাদের টেস্টগুলোর জন্য প্রাথমিক কোড সরবরাহ করবে। এর ফলে আমরা এটি ব্যবহার করে বিভিন্ন ফিচার পরীক্ষা করতে এবং তার উপর ভিত্তি করে আরও নতুন ফিচার তৈরি করতে পারব। চলুন শুরু করা যাক।
৬. ইনভেন্টরি এপিআই টেস্ট কেসগুলির জন্য আমাদের সিন্থেটিক মনিটর লেখা
আমরা এখন আমাদের সিন্থেটিক মনিটর লেখার জন্য ক্লাউড কনসোলে যাচ্ছি।
ক্লাউড কনসোলে সিন্থেটিক মনিটরিং পৃষ্ঠাটি পরিদর্শন করুন। এটি নীচে দেখানো পৃষ্ঠার মতো একটি পৃষ্ঠা নিয়ে আসবে:

উপরের পৃষ্ঠায় থাকা CREATE SYNTHETIC MONITOR লিঙ্কে ক্লিক করুন। এতে নিচে দেখানো ছবির মতো একটি কনফিগারেশন ফর্ম আসবে:

আমরা s1 নামটি দিয়েছি, কিন্তু আপনি অন্য যেকোনো নাম বেছে নিতে পারেন। উপরের স্ক্রিনে HELP ME CODE বাটনটি লক্ষ্য করুন। সেটিতে ক্লিক করুন।
এর ফলে একটি পপ-আপ আসবে, যেখানে আপনাকে সেই টেস্ট কেসগুলোর বিবরণ দিতে হবে যা আপনি ইনভেন্টরি এপিআই (Inventory API) ঠিকমতো কাজ করছে কিনা তা নিশ্চিত করার জন্য চালাতে চান।

প্রম্পট এডিট বক্সে, নিচে দেওয়াটির মতো একটি প্রম্পট ব্যবহার করুন:
Help me write Node.js based synthetic test script with the assert module that performs the following tests:
1. A GET operation on SERVICE_URL/inventory. The http response code returned should be 200.
2. A GET operation on SERVICE_URL/inventory/1. The http response code returned should be 200. The response data is JSON format. It should be a single object with attributes as follows: "id" value should be 1, "name" value should be "Item 1" and "quantity" value should be 10.
3. A GET operation on SERVICE_URL/inventory/200. The https response code returned should be 404. The response data is in JSON format. It should be a single object with attributes as follows: "error" value should be "Item not found".
লক্ষ্য করুন যে আমরা ৩টি টেস্ট কেস দিয়েছি এবং আপনাকে SERVICE_URL ভ্যালুটি আপনার সার্ভিসের আসল ক্লাউড রান সার্ভিসের নাম দিয়ে প্রতিস্থাপন করতে হবে।
আপনি GENERATE- এ ক্লিক করার পর, Gemini নিচে দেখানো অনুযায়ী টেস্ট স্যুট কোড এবং package.json ফাইলটিও তৈরি করবে। আপনার জন্য তৈরি হওয়া কোডটি নিচে দেখানো কোড থেকে ভিন্ন হতে পারে। package.json ফাইলে থাকা কোড এবং ডিপেন্ডেন্সি ফাইলগুলো দেখে নিন।

INSERT INTO CLOUD FUNCTION- এ ক্লিক করুন। এটি একটি ক্লাউড ফাংশন তৈরির ফর্ম নিয়ে আসবে, যেখানে আপনার জন্য প্রয়োজনীয় মানগুলি পূরণ করা থাকবে।

APPLY FUNCTION- এ ক্লিক করুন এবং তারপরে CREATE বোতামে ক্লিক করুন। এই উদাহরণে আমরা কোনো অ্যালার্ট চ্যানেল কনফিগারেশন বেছে নিইনি, কিন্তু আপনি চাইলে তা বেছে নিতে পারেন।
এটি ব্যাকগ্রাউন্ডে গুগল ক্লাউড ফাংশন তৈরির প্রক্রিয়া শুরু করবে। এতে কয়েক মিনিট সময় লাগতে পারে, তাই ধৈর্য ধরুন।

ক্লাউড ফাংশনটি সফলভাবে ডেপ্লয় হয়ে গেলে, ক্লাউড মনিটরিং আপনার জন্য সিন্থেটিক মনিটর চালু করার কাজটি শুরু করবে।
শুরুতে আপনি দেখতে পাবেন যে কোনো আহ্বান নেই, যেমনটি নিচে দেখানো হয়েছে:

নির্দিষ্ট রানগুলো সম্পন্ন হলে, আপনি বিভিন্ন এক্সিকিউশন দেখতে পারবেন। নিচের স্ক্রিনটি দেখাচ্ছে যে টেস্টগুলো পাস করছে:

আপনি সিন্থেটিক মনিটরের নামে (যেমন s1) ক্লিক করলে, নিচে দেখানো অনুযায়ী বিভিন্ন এক্সিকিউশনগুলো দেখা যাবে:

৭. অভিনন্দন!
অভিনন্দন - আপনি সফলভাবে গুগল ক্লাউড রান-এ একটি নমুনা এপিআই ডেপ্লয় করেছেন এবং সার্ভিসটির কার্যকারিতা যাচাই করার জন্য সিন্থেটিক মনিটরিং টেস্ট লিখেছেন। এই প্রক্রিয়া চলাকালীন, আপনি টেস্ট স্যুটের জন্য কোড তৈরি করতে জেমিনি ব্যবহার করেছেন।