1. সংক্ষিপ্ত বিবরণ
এই ল্যাবে, আপনি একটি Eventarc ট্রিগার তৈরি করবেন যা একটি Pub/Sub টপিককে Workflows পরিষেবার সাথে সংযুক্ত করবে। Eventarc আপনাকে পরিষেবা থেকে পরিষেবা যোগাযোগকে আলাদা করতে দেয় - যা আপনার সমাধানকে আরও এক্সটেনসিবল এবং ইভেন্ট-চালিত করে তোলে। আপনি একটি ওয়ার্কফ্লো তৈরি করবেন যাতে Cymbal Eats-এ অর্ডার করার জন্য গ্রাহক পুরষ্কার পয়েন্ট গণনা করার জন্য একটি ব্যবসায়িক প্রক্রিয়া কার্যকর করার জন্য একাধিক ধাপ অন্তর্ভুক্ত থাকে। Workflow ব্যবসায়িক যুক্তি কার্যকর করার জন্য একটি ব্যক্তিগত Cloud Run পরিষেবা API কল করবে। Cloud Run পরিষেবাটি শুধুমাত্র অভ্যন্তরীণ ট্র্যাফিকের অনুমতি দেওয়ার জন্য কনফিগার করা হয়েছে এবং এর জন্য প্রমাণীকরণ প্রয়োজন। গণনা করা পুরষ্কার পয়েন্ট সম্পর্কে অর্ডার পরিষেবাকে অবহিত করার জন্য Workflow Pub/Sub টপিকে একটি বার্তা প্রকাশ করবে।
ইভেন্টার্ক কী?
Eventarc আপনাকে ইভেন্ট-চালিত আর্কিটেকচার তৈরি করতে দেয়, যার জন্য আপনাকে অন্তর্নিহিত অবকাঠামো বাস্তবায়ন, কাস্টমাইজ বা রক্ষণাবেক্ষণ করতে হবে না। Eventarc ডিকপলড মাইক্রোসার্ভিসেসের মধ্যে স্টেট পরিবর্তনের প্রবাহ, যাকে ইভেন্ট বলা হয়, পরিচালনা করার জন্য একটি মানসম্মত সমাধান প্রদান করে। ট্রিগার করা হলে, Eventarc এই ইভেন্টগুলিকে Pub/Sub সাবস্ক্রিপশনের মাধ্যমে বিভিন্ন গন্তব্যে (যেমন ওয়ার্কফ্লো বা ক্লাউড রান) রুট করে, একই সাথে আপনার জন্য ডেলিভারি, নিরাপত্তা, অনুমোদন, পর্যবেক্ষণযোগ্যতা এবং ত্রুটি-পরিচালনা পরিচালনা করে।
গুগল ইভেন্ট প্রোভাইডার
- ৯০ টিরও বেশি গুগল ক্লাউড প্রোভাইডার। এই প্রোভাইডাররা সরাসরি উৎস থেকে (যেমন ক্লাউড স্টোরেজ) অথবা ক্লাউড অডিট লগ এন্ট্রির মাধ্যমে ইভেন্ট পাঠায়।
- পাব/সাব প্রোভাইডার। এই প্রোভাইডাররা পাব/সাব মেসেজ ব্যবহার করে Eventarc-এ ইভেন্ট পাঠায়।
তৃতীয় পক্ষের প্রদানকারীরা
থার্ড-পার্টি প্রোভাইডাররা হল নন-গুগল সত্তা যারা Eventarc সোর্স অফার করে।
ইভেন্টার্ক ট্রিগার
- ক্লাউড পাব/সাব ইভেন্ট। পাব/সাব টপিকে প্রকাশিত বার্তাগুলির মাধ্যমে ইভেন্টটার্ক ট্রিগার করা যেতে পারে।
- ক্লাউড অডিট লগ (CAL) ইভেন্ট। ক্লাউড অডিট লগ প্রতিটি ক্লাউড প্রকল্প, ফোল্ডার এবং সংস্থার জন্য অ্যাডমিন অ্যাক্টিভিটি এবং ডেটা অ্যাক্সেস অডিট লগ প্রদান করে।
- সরাসরি ইভেন্ট। Eventarc বিভিন্ন সরাসরি ইভেন্টের মাধ্যমে ট্রিগার হতে পারে, যেমন ক্লাউড স্টোরেজ বাকেটের আপডেট অথবা ফায়ারবেস রিমোট কনফিগ টেমপ্লেটের আপডেট।
ইভেন্টের গন্তব্যস্থল
- কর্মপ্রবাহ
- ক্লাউড রান
- জিকেই
- ক্লাউড ফাংশন ( দ্বিতীয় প্রজন্ম )

ওয়ার্কফ্লো কী?
ওয়ার্কফ্লোস একটি সম্পূর্ণরূপে পরিচালিত পরিষেবা যা আপনাকে মাইক্রোসার্ভিসেস, টাস্ক এবং API গুলিকে একীভূত করতে দেয়। ওয়ার্কফ্লোস একটি সার্ভারহীন পরিষেবা এবং আপনার চাহিদা পূরণের জন্য স্কেল করবে।
কর্মপ্রবাহ ব্যবহারের ক্ষেত্রে:
- ইভেন্ট-চালিত কর্মপ্রবাহগুলি নির্দিষ্ট ট্রিগারের উপর কার্যকর হয়। উদাহরণস্বরূপ, যখন একটি নতুন অর্ডার জমা দেওয়া হয় এবং আপনি গ্রাহকের আনুগত্য পয়েন্ট গণনা করতে চান। অথবা যখন একটি অর্ডার বাতিল করা হয়, তখন ইভেন্টটি প্রকাশ করা যেতে পারে এবং সমস্ত আগ্রহী পরিষেবা ইভেন্টটি প্রক্রিয়া করবে।
- ব্যাচ জব ওয়ার্কফ্লো ক্লাউড শিডিউলার ব্যবহার করে নিয়মিতভাবে কাজ পরিচালনা করে। উদাহরণস্বরূপ, একটি রাতের কাজ যেখানে মেনু আইটেমগুলি ব্যর্থ অবস্থায় আছে কিনা তা পরীক্ষা করা এবং সেগুলি মুছে ফেলা হয়।
ওয়ার্কফ্লো এমন কর্মপ্রবাহের জন্য আদর্শ যা পরিষেবাগুলিকে সুসংগঠিত করে। আপনি এক বছর পর্যন্ত অপেক্ষা এবং পুনরায় চেষ্টা সহ প্রক্রিয়াগুলি স্বয়ংক্রিয় করতে পারেন।
কর্মপ্রবাহের সুবিধা:
- কোডের উপর কনফিগারেশন: কোড লেখার পরিবর্তে লজিককে কনফিগারেশনে স্থানান্তর করে প্রযুক্তিগত ঋণ হ্রাস করুন।
- আপনার স্থাপত্যকে সরল করুন। স্টেটফুল ওয়ার্কফ্লো আপনাকে অতিরিক্ত নির্ভরতা ছাড়াই জটিল পরিষেবা ইন্টিগ্রেশনগুলি কল্পনা এবং নিরীক্ষণ করতে দেয়।
- নির্ভরযোগ্যতা এবং ত্রুটি সহনশীলতা অন্তর্ভুক্ত করুন। অন্যান্য সিস্টেম ব্যর্থ হলেও ডিফল্ট বা কাস্টম রিট্রাই লজিক এবং ত্রুটি পরিচালনার মাধ্যমে ব্যর্থতা নিয়ন্ত্রণ করুন - অগ্রগতির ট্র্যাক রাখতে আপনাকে সাহায্য করার জন্য প্রতিটি পদক্ষেপ ক্লাউড স্প্যানারের দিকে চেকপয়েন্ট করা।
- রক্ষণাবেক্ষণ শূন্য। প্রয়োজন অনুসারে স্কেল করুন: মেরামত বা রক্ষণাবেক্ষণের জন্য কিছুই নেই। আপনার কর্মপ্রবাহ চলমান থাকলেই কেবল অর্থ প্রদান করুন, অপেক্ষা করার সময় বা নিষ্ক্রিয় থাকাকালীন কোনও খরচ ছাড়াই।
এই ল্যাবে, আপনি একটি ইভেন্ট-চালিত কর্মপ্রবাহ কনফিগার করবেন।
তুমি কি শিখবে
এই ল্যাবে, আপনি নিম্নলিখিত কাজগুলি শিখবেন:
- ওয়ার্কফ্লো ট্রিগার করার জন্য Pub/Sub টপিক এবং Eventarc কনফিগার করুন
- ক্লাউড রান পরিষেবা কল করতে এবং পাব/সাব-এ বার্তা প্রকাশ করতে ওয়ার্কফ্লো কনফিগার করুন
- ক্লাউড লগিং এবং gcloud CLI ব্যবহার করে ওয়ার্কফ্লো স্ট্রাকচার্ড লগগুলি কীভাবে জিজ্ঞাসা করবেন
পূর্বশর্ত
- এই ল্যাবটি ক্লাউড কনসোল এবং ক্লাউড শেল পরিবেশের সাথে পরিচিতি ধরে নেয়।
- পূর্ববর্তী ক্লাউড রান এবং ক্লাউড পাব/সাব অভিজ্ঞতা সহায়ক কিন্তু প্রয়োজনীয় নয়।
2. সেটআপ এবং প্রয়োজনীয়তা
ক্লাউড প্রজেক্ট সেটআপ
- গুগল ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন অথবা বিদ্যমান একটি পুনরায় ব্যবহার করুন। যদি আপনার ইতিমধ্যেই একটি জিমেইল বা গুগল ওয়ার্কস্পেস অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



- এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রজেক্টের নামটি প্রদর্শন করা হবে। এটি একটি অক্ষর স্ট্রিং যা Google API গুলি ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
- সমস্ত Google ক্লাউড প্রোজেক্টে প্রোজেক্ট আইডি অনন্য এবং অপরিবর্তনীয় (সেট করার পরে এটি পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটি কী তা নিয়ে চিন্তা করেন না। বেশিরভাগ কোডল্যাবে, আপনাকে প্রোজেক্ট আইডি উল্লেখ করতে হবে (এটি সাধারণত
PROJECT_IDহিসাবে চিহ্নিত করা হয়)। যদি আপনি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি র্যান্ডম তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করে দেখতে পারেন যে এটি উপলব্ধ কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকবে। - আপনার তথ্যের জন্য, তৃতীয় একটি মান আছে, একটি প্রকল্প নম্বর যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
- এরপর, ক্লাউড রিসোর্স/API ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবটি চালানোর জন্য খুব বেশি খরচ হবে না, এমনকি কিছু খরচও হবে না। এই টিউটোরিয়ালের পরে যাতে আপনাকে বিলিং করতে না হয় সেজন্য রিসোর্সগুলি বন্ধ করতে, আপনি আপনার তৈরি রিসোর্সগুলি মুছে ফেলতে পারেন অথবা পুরো প্রকল্পটি মুছে ফেলতে পারেন। গুগল ক্লাউডের নতুন ব্যবহারকারীরা $300 USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
পরিবেশ সেটআপ
সার্চ বারের ডানদিকের আইকনে ক্লিক করে ক্লাউড শেল সক্রিয় করুন।

রিপোজিটরিটি ক্লোন করুন এবং ডিরেক্টরিতে নেভিগেট করুন, নীচের কমান্ডটি টার্মিনালে কপি করে পেস্ট করুন এবং এন্টার টিপুন:
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
lab-setup.sh চালিয়ে প্রয়োজনীয় নির্ভরতা স্থাপন করুন।
নিম্নলিখিত সম্পদ তৈরি করা হবে:
- AlloyDB ক্লাস্টার এবং উদাহরণ
- ক্লাউড রান জব এবং গ্রাহক পরিষেবার জন্য কন্টেইনার ছবি সংরক্ষণের জন্য আর্টিফ্যাক্ট রেজিস্ট্রি
- AlloyDB ডাটাবেসের সাথে যোগাযোগের জন্য ক্লাউড রান সার্ভিস এবং জবের জন্য VPC অ্যাক্সেস সংযোগকারী
- AlloyDB ডাটাবেস তৈরির জন্য ক্লাউড রান জব
- ক্লাউড রান গ্রাহক পরিষেবা - জাভা ভিত্তিক মাইক্রোসার্ভিস যা কোয়ার্কাস ফ্রেমওয়ার্ক ব্যবহার করে।
./lab-setup.sh
যদি অনুমোদনের জন্য অনুরোধ করা হয়, তাহলে চালিয়ে যেতে "অনুমোদন" এ ক্লিক করুন।

সেটআপটি প্রায় ১০ মিনিট সময় নেবে।
স্ক্রিপ্টটি সম্পন্ন না হওয়া পর্যন্ত অপেক্ষা করুন এবং অন্যান্য পদক্ষেপগুলি চালানোর আগে আপনি নীচের আউটপুটটি দেখতে পাবেন।
Deploying container to Cloud Run service [customer-service] in project [cymbal-eats-19227-5681] region [us-east1] OK Deploying new service... Done. OK Creating Revision... OK Routing traffic... Done. Service [customer-service] revision [customer-service-00001-mid] has been deployed and is serving 100 percent of traffic. Service URL: https://customer-service-e4p5zon5rq-ue.a.run.app
আপনি পরবর্তী বিভাগটি ঘুরে দেখতে পারেন এবং তারপর পরবর্তী ধাপ থেকে পুনরায় শুরু করতে ফিরে আসতে পারেন।
৩. কর্মপ্রবাহ পর্যালোচনা করুন
কর্মপ্রবাহ মূল ধারণা
একটি ওয়ার্কফ্লোতে ওয়ার্কফ্লো সিনট্যাক্স ( YAML বা JSON ) ব্যবহার করে বর্ণিত ধাপগুলির একটি সিরিজ থাকে।
একটি ওয়ার্কফ্লো তৈরি হওয়ার পর, এটি স্থাপন করা হয়, যা ওয়ার্কফ্লো কার্যকর করার জন্য প্রস্তুত করে।
একটি এক্সিকিউশন হল একটি ওয়ার্কফ্লোর সংজ্ঞায় থাকা লজিকের একক রান। যে ওয়ার্কফ্লো কার্যকর করা হয়নি তা কোনও চার্জ তৈরি করে না। সমস্ত ওয়ার্কফ্লো কার্যকর করা স্বাধীন, এবং পণ্যের দ্রুত স্কেলিং একই সাথে উচ্চ সংখ্যক এক্সিকিউশনের অনুমতি দেয়।
এক্সিকিউশন নিয়ন্ত্রণ
- ধাপ - একটি ওয়ার্কফ্লো তৈরি করতে, আপনাকে ওয়ার্কফ্লো সিনট্যাক্স ব্যবহার করে কাঙ্ক্ষিত
stepsএবং সম্পাদনের ক্রম নির্ধারণ করতে হবে। প্রতিটি ওয়ার্কফ্লোতে কমপক্ষে একটি ধাপ থাকতে হবে। - শর্তাবলী - আপনি একটি নির্বাচন প্রক্রিয়া হিসেবে একটি
switchব্লক ব্যবহার করতে পারেন যা একটি এক্সপ্রেশনের মানকে একটি ওয়ার্কফ্লো এক্সিকিউশনের প্রবাহ নিয়ন্ত্রণ করতে দেয়। - পুনরাবৃত্তি - আপনি সংখ্যার ক্রম বা তালিকা বা মানচিত্রের মতো ডেটা সংগ্রহের মাধ্যমে পুনরাবৃত্তি করতে একটি
forলুপ ব্যবহার করতে পারেন। - সাবওয়ার্কফ্লো - একটি সাবওয়ার্কফ্লো প্রোগ্রামিং ভাষার রুটিন বা ফাংশনের মতোই কাজ করে, যা আপনাকে এমন একটি ধাপ বা ধাপের সেটকে ধারণ করতে দেয় যা আপনার কর্মপ্রবাহ একাধিকবার পুনরাবৃত্তি করবে।
মৃত্যুদণ্ড কার্যকর করা হচ্ছে
- ম্যানুয়াল - আপনি গুগল ক্লাউড কনসোল থেকে অথবা গুগল ক্লাউড সিএলআই ব্যবহার করে কমান্ড লাইন থেকে ওয়ার্কফ্লো পরিচালনা করতে পারেন।
- প্রোগ্রাম্যাটিক - ওয়ার্কফ্লো API, অথবা REST API-এর জন্য ক্লাউড ক্লায়েন্ট লাইব্রেরিগুলি ওয়ার্কফ্লো পরিচালনা করতে ব্যবহার করা যেতে পারে।
- নির্ধারিত - আপনি একটি নির্দিষ্ট সময়সূচীতে একটি কর্মপ্রবাহ চালানোর জন্য ক্লাউড শিডিউলার ব্যবহার করতে পারেন।
রানটাইম আর্গুমেন্ট
রানটাইমে পাস করা ডেটা আপনার প্রধান ওয়ার্কফ্লোতে (একটি প্রধান ব্লকে স্থাপন করা) একটি params ফিল্ড যোগ করে অ্যাক্সেস করা যেতে পারে। প্রধান ব্লকটি একটি একক আর্গুমেন্ট গ্রহণ করে যা যেকোনো বৈধ JSON ডেটা টাইপ। প্যারাম ফিল্ডটি সেই ভেরিয়েবলের নাম দেয় যা ওয়ার্কফ্লো আপনার পাস করা ডেটা সংরক্ষণ করতে ব্যবহার করে।
ক্লাউড রান সার্ভিস প্রমাণীকরণে কর্মপ্রবাহ
গ্রাহক পরিষেবা হল এই রেপোতে অন্তর্ভুক্ত একটি নমুনা অ্যাপ্লিকেশন যা ক্লাউড রানে চলে এবং শুধুমাত্র অভ্যন্তরীণ নেটওয়ার্ক থেকে আসা প্রমাণীকরণকৃত অনুরোধগুলিকে অনুমতি দেওয়ার জন্য কনফিগার করা হয়েছে। আপনি ক্লাউড রান পরিষেবার সাথে প্রমাণীকরণের অনুরোধে একটি Google-স্বাক্ষরিত OpenID Connect(OIDC) টোকেন যোগ করার জন্য Workflows কনফিগার করবেন।
সার্ভিস-টু-সার্ভিস প্রমাণীকরণ সম্পর্কে আরও জানতে ডকুমেন্টেশন পর্যালোচনা করুন।
ওয়ার্কফ্লো প্রমাণীকরণটি auth বিভাগ ব্যবহার করে args ব্লকের অধীনে কনফিগার করা হয়েছে।
পুরষ্কারওয়ার্কফ্লো.ইয়ামল.টিএমপিএল
- create_customer:
call: http.post
args:
url: CUSTOMER_SERVICE_URL/customer
auth:
type: OIDC
ওয়ার্কফ্লো লজিক
যদি কোনও গ্রাহক না থাকে, তাহলে এই ওয়ার্কফ্লো প্রথমে একটি গ্রাহক তৈরি করার জন্য একটি API কল করবে এবং তারপর পুরষ্কার পয়েন্ট আপডেট করবে। অর্ডারের মোট পরিমাণের উপর ভিত্তি করে, ওয়ার্কফ্লো গ্রাহকের জন্য পুরষ্কার পয়েন্ট গণনা করার জন্য একটি গুণক নির্বাচন করবে। বিস্তারিত জানার জন্য নীচের নমুনাটি দেখুন।
- calculate_multiplier:
switch:
- condition: ${totalAmount < 10}
steps:
- set_multiplier1:
assign:
- multiplier: 2
- condition: ${totalAmount >= 10 and totalAmount < 25}
steps:
- set_multiplier2:
assign:
- multiplier: 3
- condition: ${totalAmount >= 25}
steps:
- set_multiplier3:
assign:
- multiplier: 5
- calculate_rewards:
assign:
- rewardPoints: ${customerRecord.rewardPoints * multiplier}

৪. ওয়ার্কফ্লো কনফিগার এবং স্থাপন করুন
পরিবেশ ভেরিয়েবল সেটআপ করুন:
export REGION=us-east1
export CUSTOMER_SERVICE_URL=$(gcloud run services describe customer-service \
--platform managed \
--region $REGION \
--format=json | jq \
--raw-output ".status.url")
echo $CUSTOMER_SERVICE_URL
ওয়ার্কফ্লো টেমপ্লেটে পরিষেবা URL প্রতিস্থাপন করুন:
sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" rewardsWorkflow.yaml.tmpl > rewardsWorkflow.yaml
ওয়ার্কফ্লো পরিষেবা এবং প্রকল্প পরিবেশ ভেরিয়েবলের জন্য অবস্থান নির্ধারণ করুন:
gcloud config set workflows/location ${REGION}
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
নিম্নলিখিত অনুমতিগুলি সহ কর্মপ্রবাহের জন্য একটি কাস্টম পরিষেবা অ্যাকাউন্ট তৈরি করুন:
- ক্লাউড রান পরিষেবা চালু করুন
- কল লগিং এপিআই
- PubSub বিষয়ে বার্তা প্রকাশ করুন
export WORKFLOW_SERVICE_ACCOUNT=workflows-cloudrun-sa
gcloud iam service-accounts create ${WORKFLOW_SERVICE_ACCOUNT}
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
--role "roles/run.invoker"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
--role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
--role "roles/pubsub.publisher"
ওয়ার্কফ্লো স্থাপন করুন। পূর্ববর্তী ধাপে তৈরি পরিষেবা অ্যাকাউন্ট ব্যবহার করার জন্য ওয়ার্কফ্লো কনফিগার করা হয়েছে:
export WORKFLOW_NAME=rewardsWorkflow
gcloud workflows deploy ${WORKFLOW_NAME} \
--source=rewardsWorkflow.yaml \
--service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com
ওয়ার্কফ্লো সোর্স এবং অন্যান্য বিবরণ পর্যালোচনা করুন (ট্রিগার ট্যাব)। এই মুহূর্তে এই ওয়ার্কফ্লোটি চালানোর জন্য কোনও ট্রিগার কনফিগার করা নেই। আপনি পরবর্তী ধাপে এটি সেট আপ করবেন।

৫. পাব/সাব টপিক এবং ইভেন্টটার্ক ট্রিগার কনফিগার করুন
এরপর আপনি দুটি পাব/সাব টপিক তৈরি করবেন এবং একটি Eventarc ট্রিগার কনফিগার করবেন।
অর্ডার সার্ভিস নতুন অর্ডার সম্পর্কে তথ্য সহ order-topic বার্তা প্রকাশ করবে।
ওয়ার্কফ্লো order-points-topic অর্ডার রিওয়ার্ড পয়েন্ট এবং মোট পরিমাণ সম্পর্কে তথ্য সহ বার্তা প্রকাশ করবে। অর্ডার সার্ভিস (এই ল্যাবের অংশ নয়) একটি এন্ডপয়েন্ট প্রকাশ করে যা পুশ সাবস্ক্রিপশন দ্বারা order-points-topic, যাতে রিওয়ার্ড পয়েন্ট এবং প্রতিটি অর্ডারের মোট পরিমাণ আপডেট করা যায়।
নতুন পাব/সাব বিষয় তৈরি করুন:
export TOPIC_ID=order-topic
export ORDER_POINTS_TOPIC_ID=order-points-topic
gcloud pubsub topics create $TOPIC_ID --project=$PROJECT_ID
gcloud pubsub topics create $ORDER_POINTS_TOPIC_ID --project=$PROJECT_ID
Eventarc পরিষেবার জন্য অবস্থান নির্ধারণ করুন:
gcloud config set eventarc/location ${REGION}
একটি কাস্টম সার্ভিস অ্যাকাউন্ট তৈরি করুন যা Eventarc ট্রিগার দ্বারা কর্মপ্রবাহ চালানোর জন্য ব্যবহার করা হবে।
export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa
gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}
কর্মপ্রবাহ চালানোর জন্য পরিষেবা অ্যাকাউন্টে অ্যাক্সেস মঞ্জুর করুন।
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/workflows.invoker"
পাব/সাব বার্তা শোনার জন্য একটি Eventarc ট্রিগার তৈরি করুন এবং সেগুলি Workflows-এ পৌঁছে দিন।
gcloud eventarc triggers create new-orders-trigger \
--destination-workflow=${WORKFLOW_NAME} \
--destination-workflow-location=${REGION} \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--service-account="${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--transport-topic=$TOPIC_ID
নমুনা আউটপুট:
Creating trigger [new-orders-trigger] in project [qwiklabs-gcp-01-1a990bfcadb3], location [us-east1]...done. Publish to Pub/Sub topic [projects/qwiklabs-gcp-01-1a990bfcadb3/topics/order-topic] to receive events in Workflow [rewardsWorkflow]. WARNING: It may take up to 2 minutes for the new trigger to become active.
পর্যালোচনা তৈরি Eventarc ট্রিগার ।

ট্রিগারের জন্য তৈরি করা সাবস্ক্রিপশন পর্যালোচনা করুন।

কর্মপ্রবাহের দিকের পরিবর্তনগুলি পর্যালোচনা করুন। একটি নতুন ট্রিগার যোগ করা হয়েছে।

৬. পরীক্ষার কর্মপ্রবাহ
অর্ডার সার্ভিস সিমুলেট করার জন্য, আপনাকে ক্লাউড শেল থেকে পাব/সাব টপিকে বার্তা পাঠাতে হবে এবং ক্লাউড কনসোলে ক্লাউড রান গ্রাহক পরিষেবা লগ যাচাই করতে হবে।
export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'
নমুনা আউটপুট:
messageIds: - '5063709859203105'
কর্মপ্রবাহ সম্পাদনের বিবরণ এবং লগ পর্যালোচনা করুন।


৭. ওয়ার্কফ্লো স্ট্রাকচার্ড লগিং
ওয়ার্কফ্লোটি JSON ফর্ম্যাটে স্ট্রাকচার্ড লগ লেখার জন্য কনফিগার করা হয়েছে। লগগুলি ক্লাউড লগিং API, workflows.googleapis.com/Workflow রিসোর্স এবং projects/${PROJECT_ID}/logs/Workflows লগ নামের অধীনে লেখা হয়।
নিচে লগিং কনফিগারেশন পর্যালোচনা করুন।
- log_totalAmount:
call: sys.log
args:
json:
orderNumber: ${order.orderNumber}
totalAmount: ${totalAmount}
multiplier: ${multiplier}
totalRewardPoints: ${rewardPoints}
orderRewardPoints: ${orderRewardPoints}
severity: INFO
কনসোলে লগস এক্সপ্লোরার খুলুন এবং $2 ডলারের বেশি মোট পরিমাণের প্রক্রিয়াজাত অর্ডারগুলির জন্য একটি কোয়েরি চালান ।
নীচের কোয়েরিটি ব্যবহার করুন, আপনার বর্তমান প্রজেক্ট আইডি দিয়ে প্রজেক্ট আইডি ( qwiklabs-gcp-01-1a990bfcadb3 ) প্রতিস্থাপন করুন:
resource.type="workflows.googleapis.com/Workflow" AND
logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND
jsonPayload.totalAmount > 2 AND
timestamp >= "2022-11-01T23:59:59Z" AND
timestamp <= "2023-11-05T00:00:00Z"
নমুনা আউটপুট:

ক্লাউড শেল খুলুন এবং নীচের কমান্ডগুলি ব্যবহার করে লগগুলি পড়তে gcloud CLI ব্যবহার করুন।
আপনার বর্তমান প্রজেক্ট আইডি দিয়ে প্রজেক্ট আইডি ( qwiklabs-gcp-01-1a990bfcadb3 ) প্রতিস্থাপন করুন।
gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND jsonPayload.totalAmount > 2 AND timestamp >= "2022-11-01T23:59:59Z" AND timestamp <= "2023-11-05T00:00:00Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"
table ফর্ম্যাট ব্যবহার করে নমুনা আউটপুট:

আপনার বর্তমান প্রজেক্ট আইডি দিয়ে প্রজেক্ট আইডি ( qwiklabs-gcp-01-1a990bfcadb3 ) প্রতিস্থাপন করুন।
gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND jsonPayload.totalAmount > 2 AND timestamp >= "2022-11-01T23:59:59Z" AND timestamp <= "2023-11-05T00:00:00Z"' --limit 10 --format=json | jq
json ফর্ম্যাট ব্যবহার করে নমুনা আউটপুট:

৮. গ্রাহক রেকর্ড পর্যালোচনা করুন
(ঐচ্ছিক পদক্ষেপ) এই মুহূর্তে customer-service শুধুমাত্র অভ্যন্তরীণ নেটওয়ার্ক থেকে ট্র্যাফিক গ্রহণ করার জন্য কনফিগার করা হয়েছে।
পরিষেবা URL সংরক্ষণ করতে এবং গ্রাহক-সেবাতে কল করতে নীচের কমান্ডগুলি চালান।
export REGION=us-east1
CUSTOMER_SERVICE_URL=$(gcloud run services describe customer-service \
--region=$REGION \
--format=json | jq \
--raw-output ".status.url")
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $CUSTOMER_SERVICE_URL/customer
আপনি একটি ত্রুটি বার্তা পাবেন যে অ্যাক্সেস নিষিদ্ধ।
<html><head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>403 Forbidden</title> </head> <body text=#000000 bgcolor=#ffffff> <h1>Error: Forbidden</h1> <h2>Access is forbidden.</h2> <h2></h2> </body></html>
বিদ্যমান গ্রাহক রেকর্ড দেখতে, ক্লাউড রান customer-service প্রবেশ সেটিংস " Allow all traffic " বিকল্পে পরিবর্তন করুন এবং "সংরক্ষণ করুন" এ ক্লিক করুন।
এটি এন্ডপয়েন্টটি সর্বজনীন করে দেবে এবং আপনি কার্ল ব্যবহার করে ক্লাউড শেল থেকে গ্রাহক পরিষেবা API কল করতে পারবেন।

পরিষেবা URL সংরক্ষণ করতে এবং বিদ্যমান গ্রাহকদের তালিকা তৈরি করতে নীচের কমান্ডগুলি চালান।
CUSTOMER_SERVICE_URL=$(gcloud run services describe customer-service \
--region=$REGION \
--format=json | jq \
--raw-output ".status.url")
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $CUSTOMER_SERVICE_URL/customer | jq
নমুনা আউটপুট:
[
{
"id": "id1",
"rewardPoints": 3,
"address": "1845 Denise St",
"city": "Mountain View",
"createDateTime": "2022-11-11T15:56:45.487566",
"email": "ajensen9090+eats@gmail.com",
"name": "Angela Jensen",
"state": "CA",
"updateDateTime": "2022-11-11T15:56:45.866125",
"zip": "94043"
}
]
কার্ল কমান্ড ব্যবহার করে একাধিকবার নতুন অর্ডার প্রকাশ করতে এবং গ্রাহকের পুরষ্কার পয়েন্ট যাচাই করতে কমান্ডটি চালান।
নতুন অর্ডার বার্তা প্রকাশ করুন:
export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'
গ্রাহকের পুরষ্কার পয়েন্ট যাচাই করুন:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $CUSTOMER_SERVICE_URL/customer | jq
লগ যাচাই করুন। আপনার বর্তমান প্রজেক্ট আইডি দিয়ে প্রজেক্ট আইডি ( qwiklabs-gcp-01-1a990bfcadb3 ) প্রতিস্থাপন করুন।
gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND jsonPayload.totalAmount > 2 AND timestamp >= "2022-11-01T23:59:59Z" AND timestamp <= "2023-11-05T00:00:00Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"
9. অভিনন্দন!
অভিনন্দন, তুমি কোডল্যাব শেষ করেছ!
আমরা যা কভার করেছি:
- ওয়ার্কফ্লো কীভাবে কনফিগার করবেন
- ওয়ার্কফ্লো-এর জন্য Eventarc ট্রিগার কীভাবে কনফিগার করবেন
- ওয়ার্কফ্লো থেকে ক্লাউড রান পরিষেবা কীভাবে কল করবেন
- ক্লাউড লগিং এবং gcloud CLI ব্যবহার করে স্ট্রাকচার্ড লগগুলি কীভাবে জিজ্ঞাসা করবেন
এরপর কি:
অন্যান্য সিম্বাল ইটস কোডল্যাবগুলি অন্বেষণ করুন:
- ক্লাউড স্টোরেজ থেকে ইভেন্ট প্রসেসিং ট্রিগার করা হচ্ছে
- ক্লাউড রান থেকে প্রাইভেট ক্লাউডএসকিউএল-এর সাথে সংযোগ স্থাপন করা হচ্ছে
- ক্লাউড রান থেকে সম্পূর্ণরূপে পরিচালিত ডাটাবেসের সাথে সংযোগ স্থাপন করা
- আইডেন্টিটি অ্যাওয়্যার প্রক্সি (IAP) সহ সুরক্ষিত সার্ভারলেস অ্যাপ্লিকেশন
- ক্লাউড শিডিউলার দিয়ে ক্লাউড রান জবস ট্রিগার করা
- ক্লাউড রানে নিরাপদে স্থাপন করা হচ্ছে
- ক্লাউড রান ইনগ্রেস ট্র্যাফিক সুরক্ষিত করা
- GKE অটোপাইলট থেকে প্রাইভেট AlloyDB-তে সংযোগ করা হচ্ছে
পরিষ্কার করা
এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সের জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, হয় রিসোর্স ধারণকারী প্রজেক্টটি মুছে ফেলুন, অথবা প্রজেক্টটি রেখে পৃথক রিসোর্সগুলি মুছে ফেলুন।
প্রকল্পটি মুছে ফেলা হচ্ছে
বিলিং দূর করার সবচেয়ে সহজ উপায় হল টিউটোরিয়ালের জন্য তৈরি করা প্রকল্পটি মুছে ফেলা।
