Eventarc এর সাথে ওয়ার্কফ্লো ট্রিগার করা

1. ওভারভিউ

এই ল্যাবে, আপনি একটি Eventarc ট্রিগার তৈরি করবেন যা একটি Pub/Sub বিষয়কে Workflows পরিষেবার সাথে সংযুক্ত করে। Eventarc আপনাকে পরিষেবা যোগাযোগের জন্য পরিষেবাকে দ্বিগুণ করার অনুমতি দেয় - আপনার সমাধানকে আরও এক্সটেনসিবল এবং ইভেন্ট-চালিত করে। আপনি একটি ওয়ার্কফ্লো তৈরি করবেন যাতে সিম্বাল ইটসে অর্ডার করার জন্য গ্রাহকের পুরস্কার পয়েন্ট গণনা করার জন্য একটি ব্যবসায়িক প্রক্রিয়া চালানোর জন্য একাধিক পদক্ষেপ অন্তর্ভুক্ত থাকে। ওয়ার্কফ্লো ব্যবসায়িক যুক্তি সম্পাদন করতে একটি ব্যক্তিগত ক্লাউড রান পরিষেবা API কল করবে৷ ক্লাউড রান পরিষেবাটি শুধুমাত্র অভ্যন্তরীণ ট্র্যাফিকের অনুমতি দেওয়ার জন্য কনফিগার করা হয়েছে এবং এটির জন্য প্রমাণীকরণ প্রয়োজন৷ ওয়ার্কফ্লো গণনাকৃত পুরস্কার পয়েন্ট সম্পর্কে অর্ডার পরিষেবাকে অবহিত করার জন্য পাব/সাব বিষয়ে একটি বার্তা প্রকাশ করবে।

c6d4337a47b55333.png

Eventarc কি?

Eventarc আপনাকে অন্তর্নিহিত অবকাঠামো বাস্তবায়ন, কাস্টমাইজ বা বজায় না রেখেই ইভেন্ট-চালিত আর্কিটেকচার তৈরি করতে দেয়। ইভেন্টর্ক ডিকপলড মাইক্রোসার্ভিসের মধ্যে রাষ্ট্রীয় পরিবর্তনের প্রবাহ পরিচালনা করার জন্য একটি প্রমিত সমাধান অফার করে, যাকে ইভেন্ট বলা হয়। ট্রিগার করা হলে, Eventarc এই ইভেন্টগুলিকে পাব/সাবস্ক্রিপশনের মাধ্যমে বিভিন্ন গন্তব্যে (যেমন ওয়ার্কফ্লো বা ক্লাউড রান) রুট করে যখন আপনার জন্য ডেলিভারি, নিরাপত্তা, অনুমোদন, পর্যবেক্ষণযোগ্যতা এবং ত্রুটি-হ্যান্ডলিং পরিচালনা করে।

Google ইভেন্ট প্রদানকারী

  • 90 টিরও বেশি Google ক্লাউড প্রদানকারী। এই প্রদানকারীরা সরাসরি উৎস থেকে (উদাহরণস্বরূপ ক্লাউড স্টোরেজ) অথবা ক্লাউড অডিট লগ এন্ট্রির মাধ্যমে ঘটনা পাঠায়।
  • পাব/সাব প্রদানকারী। এই প্রদানকারীরা Pub/Sub বার্তা ব্যবহার করে Eventarc-এ ইভেন্ট পাঠায়।

তৃতীয় পক্ষ প্রদানকারী

থার্ড-পার্টি প্রদানকারীরা হল নন-Google এন্টিটি যারা একটি Eventarc সোর্স অফার করে।

Eventarc ট্রিগার

  • ক্লাউড পাব/সাব ইভেন্ট। Eventarc পাব/সাব বিষয়গুলিতে প্রকাশিত বার্তাগুলির দ্বারা ট্রিগার করা যেতে পারে।
  • ক্লাউড অডিট লগ (CAL) ইভেন্ট। ক্লাউড অডিট লগ প্রতিটি ক্লাউড প্রকল্প, ফোল্ডার এবং সংস্থার জন্য অ্যাডমিন কার্যকলাপ এবং ডেটা অ্যাক্সেস অডিট লগ প্রদান করে।
  • সরাসরি ঘটনা। Eventarc বিভিন্ন সরাসরি ইভেন্ট দ্বারা ট্রিগার করা যেতে পারে যেমন একটি ক্লাউড স্টোরেজ বালতিতে একটি আপডেট বা একটি Firebase রিমোট কনফিগার টেমপ্লেটের একটি আপডেট৷

ইভেন্ট গন্তব্য

c7ca054200edf1b3.png

ওয়ার্কফ্লো কি?

ওয়ার্কফ্লো একটি সম্পূর্ণরূপে পরিচালিত পরিষেবা যা আপনাকে মাইক্রোসার্ভিস, কাজ এবং APIগুলিকে একীভূত করতে দেয়৷ ওয়ার্কফ্লো হল সার্ভারবিহীন পরিষেবা এবং আপনার চাহিদা মেটাতে স্কেল করবে।

কর্মপ্রবাহ ব্যবহার ক্ষেত্রে:

  • ইভেন্ট-চালিত ওয়ার্কফ্লো সংজ্ঞায়িত ট্রিগারগুলিতে কার্যকর হয়। উদাহরণস্বরূপ, যখন একটি নতুন অর্ডার জমা দেওয়া হয় এবং আপনি গ্রাহকের আনুগত্য পয়েন্ট গণনা করতে চান। অথবা যখন একটি অর্ডার বাতিল করা হয়, ইভেন্টটি প্রকাশ করা যেতে পারে এবং সমস্ত আগ্রহী পরিষেবাগুলি ইভেন্টটি প্রক্রিয়া করবে৷
  • ব্যাচ জবস ওয়ার্কফ্লো ক্লাউড শিডিউলার ব্যবহার করে নিয়মিত কাজ চালায়। উদাহরণস্বরূপ, ব্যর্থ স্থিতিতে মেনু আইটেমগুলি পরীক্ষা করা এবং সেগুলি মুছে ফেলার জন্য একটি রাতের কাজ।

ওয়ার্কফ্লোগুলি এমন কর্মপ্রবাহের জন্য আদর্শ যা পরিষেবাগুলি অর্কেস্ট্রেট করে৷ আপনি প্রক্রিয়াগুলি স্বয়ংক্রিয় করতে পারেন যার মধ্যে এক বছর পর্যন্ত অপেক্ষা করা এবং পুনরায় চেষ্টা করা অন্তর্ভুক্ত।

কর্মপ্রবাহের সুবিধা:

  • কোডের উপর কনফিগারেশন: কোড লেখার পরিবর্তে যুক্তিটিকে কনফিগারেশনে সরিয়ে দিয়ে প্রযুক্তিগত ঋণ হ্রাস করুন।
  • আপনার আর্কিটেকচার সরলীকৃত করুন। স্টেটফুল ওয়ার্কফ্লোগুলি আপনাকে অতিরিক্ত নির্ভরতা ছাড়াই জটিল পরিষেবা সংহতকরণগুলি কল্পনা এবং নিরীক্ষণ করতে দেয়।
  • নির্ভরযোগ্যতা এবং দোষ সহনশীলতা অন্তর্ভুক্ত. ডিফল্ট বা কাস্টম পুনরায় চেষ্টা যুক্তি এবং ত্রুটি পরিচালনার সাথে ব্যর্থতা নিয়ন্ত্রণ করুন এমনকি যখন অন্যান্য সিস্টেম ব্যর্থ হয় — আপনাকে অগ্রগতির ট্র্যাক রাখতে সাহায্য করার জন্য ক্লাউড স্প্যানারে প্রতিটি ধাপে চেকপয়েন্ট করা।
  • জিরো রক্ষণাবেক্ষণ। প্রয়োজন অনুযায়ী স্কেল: প্যাচ বা বজায় রাখার কিছু নেই। অপেক্ষা করার সময় বা নিষ্ক্রিয় থাকার সময় কোনো খরচ ছাড়াই শুধুমাত্র আপনার ওয়ার্কফ্লো চলাকালীন অর্থ প্রদান করুন।

এই ল্যাবে, আপনি একটি ইভেন্ট-চালিত ওয়ার্কফ্লো কনফিগার করবেন।

যা শিখবেন

এই ল্যাবে, আপনি নিম্নলিখিতগুলি কীভাবে করবেন তা শিখবেন:

  • ওয়ার্কফ্লো ট্রিগার করতে পাব/সাব টপিক এবং ইভেন্টর্ক কনফিগার করুন
  • ক্লাউড রান পরিষেবাতে কল করার জন্য ওয়ার্কফ্লো কনফিগার করুন এবং পাব/সাব-এ বার্তা প্রকাশ করুন
  • ক্লাউড লগিং এবং জিক্লাউড সিএলআই ব্যবহার করে ওয়ার্কফ্লো স্ট্রাকচার্ড লগগুলি কীভাবে জিজ্ঞাসা করবেন

পূর্বশর্ত

  • এই ল্যাবটি ক্লাউড কনসোল এবং ক্লাউড শেল পরিবেশের সাথে পরিচিতি অনুমান করে।
  • পূর্বে ক্লাউড রান এবং ক্লাউড পাব/সাব অভিজ্ঞতা সহায়ক কিন্তু প্রয়োজন নেই।

2. সেটআপ এবং প্রয়োজনীয়তা

ক্লাউড প্রজেক্ট সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

এনভায়রনমেন্ট সেটআপ

অনুসন্ধান বারের ডানদিকে আইকনে ক্লিক করে ক্লাউড শেল সক্রিয় করুন।

eb0157a992f16fa3.png

সংগ্রহস্থল ক্লোন করুন এবং ডিরেক্টরিতে নেভিগেট করুন, টার্মিনালে নীচের কমান্ডটি অনুলিপি এবং পেস্ট করুন এবং এন্টার টিপুন:

git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service

lab-setup.sh চালানোর মাধ্যমে প্রয়োজনীয় নির্ভরতা স্থাপন করুন

নিম্নলিখিত সংস্থান তৈরি করা হবে:

  • AlloyDB ক্লাস্টার এবং উদাহরণ
  • আর্টিফ্যাক্ট রেজিস্ট্রি ক্লাউড রান জব এবং গ্রাহক পরিষেবার জন্য কন্টেইনার ইমেজ সংরক্ষণ করতে
  • AlloyDB ডাটাবেসের সাথে যোগাযোগের জন্য ক্লাউড রান পরিষেবা এবং কাজের জন্য ভিপিসি অ্যাক্সেস সংযোগকারী
  • AlloyDB ডাটাবেস তৈরি করতে ক্লাউড রান জব
  • ক্লাউড রান কাস্টমার সার্ভিস - জাভা ভিত্তিক মাইক্রোসার্ভিস যা কোয়ার্কাস ফ্রেমওয়ার্ক ব্যবহার করে।
./lab-setup.sh

অনুমোদনের জন্য অনুরোধ করা হলে, চালিয়ে যেতে "অনুমোদিত করুন" এ ক্লিক করুন।

6356559df3eccdda.png

সেটআপে প্রায় 10 মিনিট সময় লাগবে।

স্ক্রিপ্টটি সম্পন্ন না হওয়া পর্যন্ত অপেক্ষা করুন এবং অন্যান্য পদক্ষেপগুলি চালানোর আগে আপনি নীচের আউটপুটটি দেখতে পাবেন।

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

আপনি পরবর্তী বিভাগটি অন্বেষণ করতে পারেন এবং তারপরে পরবর্তী ধাপ থেকে পুনরায় শুরু করতে ফিরে আসতে পারেন।

3. কর্মপ্রবাহ পর্যালোচনা করুন

কর্মপ্রবাহের মূল ধারণা

একটি ওয়ার্কফ্লো ওয়ার্কফ্লো সিনট্যাক্স ( YAML বা JSON ) ব্যবহার করে বর্ণিত ধাপগুলির একটি সিরিজ নিয়ে গঠিত।

একটি ওয়ার্কফ্লো তৈরি হওয়ার পরে, এটি স্থাপন করা হয়, যা কার্যপ্রবাহকে কার্যকর করার জন্য প্রস্তুত করে।

কার্যপ্রবাহের সংজ্ঞার মধ্যে থাকা যুক্তির একটি একক চালনা হল কার্য সম্পাদন । একটি কার্যপ্রবাহ যা কার্যকর করা হয়নি তার জন্য কোন চার্জ তৈরি হয় না। সমস্ত ওয়ার্কফ্লো এক্সিকিউশন স্বাধীন, এবং প্রোডাক্টের দ্রুত স্কেলিং অনেক বেশি সংখ্যক সমসাময়িক এক্সিকিউশনের অনুমতি দেয়।

এক্সিকিউশন কন্ট্রোল

  • পদক্ষেপ - একটি ওয়ার্কফ্লো তৈরি করতে, আপনি ওয়ার্কফ্লো সিনট্যাক্স ব্যবহার করে কাঙ্ক্ষিত steps এবং সম্পাদনের ক্রম সংজ্ঞায়িত করুন। প্রতিটি ওয়ার্কফ্লোতে কমপক্ষে একটি ধাপ থাকতে হবে।
  • শর্তাবলী - আপনি একটি নির্বাচন পদ্ধতি হিসাবে একটি switch ব্লক ব্যবহার করতে পারেন যা একটি কার্যপ্রবাহের নির্বাহের প্রবাহ নিয়ন্ত্রণ করতে একটি অভিব্যক্তির মানকে অনুমতি দেয়৷
  • পুনরাবৃত্তি - আপনি একটি সংখ্যার ক্রম বা তথ্য সংগ্রহের মাধ্যমে পুনরাবৃত্তি করার for লুপ ব্যবহার করতে পারেন, যেমন একটি তালিকা বা মানচিত্র।
  • সাবওয়ার্কফ্লোস - একটি সাবওয়ার্কফ্লো একটি প্রোগ্রামিং ভাষার রুটিন বা ফাংশনের অনুরূপভাবে কাজ করে, যা আপনাকে একটি ধাপ বা ধাপের সেট এনক্যাপসুলেট করতে দেয় যা আপনার ওয়ার্কফ্লো একাধিকবার পুনরাবৃত্তি করবে।

ট্রিগার মৃত্যুদন্ড

  • ম্যানুয়াল - আপনি Google ক্লাউড কনসোল থেকে বা Google ক্লাউড CLI ব্যবহার করে কমান্ড লাইন থেকে কর্মপ্রবাহ পরিচালনা করতে পারেন।
  • প্রোগ্রাম্যাটিক - ওয়ার্কফ্লোস API বা REST API-এর জন্য ক্লাউড ক্লায়েন্ট লাইব্রেরিগুলি ওয়ার্কফ্লোগুলি পরিচালনা করতে ব্যবহার করা যেতে পারে।
  • নির্ধারিত - আপনি একটি নির্দিষ্ট সময়সূচীতে একটি ওয়ার্কফ্লো চালানোর জন্য ক্লাউড শিডিউলার ব্যবহার করতে পারেন।

রানটাইম আর্গুমেন্ট

রানটাইমে পাস করা ডেটা আপনার প্রধান ওয়ার্কফ্লোতে একটি params ক্ষেত্র যোগ করে অ্যাক্সেস করা যেতে পারে (একটি প্রধান ব্লকে রাখা)। প্রধান ব্লক একটি একক যুক্তি গ্রহণ করে যা যেকোনো বৈধ JSON ডেটা প্রকার। প্যারামস ক্ষেত্রটি ভেরিয়েবলের নাম দেয় যা ওয়ার্কফ্লো আপনার পাস করা ডেটা সংরক্ষণ করতে ব্যবহার করে।

ক্লাউড রান পরিষেবা প্রমাণীকরণে কর্মপ্রবাহ

গ্রাহক পরিষেবা হল এই রেপোতে অন্তর্ভুক্ত একটি নমুনা অ্যাপ্লিকেশন যা ক্লাউড রানে চলে এবং শুধুমাত্র অভ্যন্তরীণ নেটওয়ার্কগুলি থেকে আসা প্রমাণীকৃত অনুরোধগুলিকে অনুমতি দেওয়ার জন্য কনফিগার করা হয়েছে৷ আপনি ক্লাউড রান পরিষেবার সাথে প্রমাণীকরণের অনুরোধে একটি Google-স্বাক্ষরিত OpenID Connect(OIDC) টোকেন যোগ করতে ওয়ার্কফ্লোস কনফিগার করবেন।

সার্ভিস-টু-সার্ভিস প্রমাণীকরণ সম্পর্কে আরও জানতে ডকুমেন্টেশন পর্যালোচনা করুন।

ওয়ার্কফ্লো প্রমাণীকরণ auth বিভাগ ব্যবহার করে args ব্লকের অধীনে কনফিগার করা হয়েছে।

rewardsWorkflow.yaml.tmpl

   - 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}

fcd91b2bc5d60347.png

4. ওয়ার্কফ্লো কনফিগার এবং স্থাপন করুন

পরিবেশের ভেরিয়েবল সেটআপ করুন:

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)')

নিম্নলিখিত অনুমতি সহ কর্মপ্রবাহের জন্য একটি কাস্টম পরিষেবা অ্যাকাউন্ট তৈরি করুন:

  • ক্লাউড রান পরিষেবা চালু করুন
  • কল লগিং API
  • 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

কর্মপ্রবাহের উৎস এবং অন্যান্য বিবরণ পর্যালোচনা করুন (ট্রিগার ট্যাব)। এই ওয়ার্কফ্লো চালানোর জন্য এই মুহূর্তে কোন ট্রিগার কনফিগার করা নেই। আপনি পরবর্তী ধাপে এটি সেট আপ করবেন।

d3527393fb07a9b3.png

5. পাব/সাব বিষয় এবং 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"

Pub/Sub বার্তা শোনার জন্য একটি 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 ট্রিগার তৈরি করা পর্যালোচনা.

bda445561ad5f4.png

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

3fccdda7d5526597.png

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

23d338abc16eaac8.png

6. পরীক্ষা কর্মপ্রবাহ

c6d4337a47b55333.png

অর্ডার পরিষেবা অনুকরণ করতে, আপনি ক্লাউড শেল থেকে পাব/সাব বিষয়ে বার্তা পাঠাবেন এবং ক্লাউড কনসোলে ক্লাউড রান গ্রাহক পরিষেবা লগগুলি যাচাই করবেন৷

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'

কর্মপ্রবাহ সম্পাদনের বিবরণ এবং লগগুলি পর্যালোচনা করুন৷

1e802826c700cc3e.png

aad0eae7a970316.png

7. ওয়ার্কফ্লো স্ট্রাকচার্ড লগিং

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"

নমুনা আউটপুট:

22d2f4686c58724d.png

ক্লাউড শেল খুলুন এবং নিচের কমান্ড সহ লগ পড়তে 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 বিন্যাস ব্যবহার করে নমুনা আউটপুট:

35d5fd851ecde60.png

আপনার বর্তমান প্রজেক্ট আইডি দিয়ে প্রজেক্ট আইডি ( 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 বিন্যাস ব্যবহার করে নমুনা আউটপুট:

ac7421548ea9a9f2.png

8. গ্রাহকের রেকর্ড পর্যালোচনা করুন

(ঐচ্ছিক পদক্ষেপ) এই মুহূর্তে শুধুমাত্র অভ্যন্তরীণ নেটওয়ার্ক থেকে ট্রাফিক গ্রহণ করার জন্য 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 কল করতে পারেন।

9156e0eb0a19bc68.png

পরিষেবা 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. অভিনন্দন!

অভিনন্দন, আপনি কোডল্যাব শেষ করেছেন!

আমরা যা কভার করেছি:

  • কিভাবে ওয়ার্কফ্লো কনফিগার করবেন
  • ওয়ার্কফ্লোসের জন্য ইভেন্টর্ক ট্রিগার কীভাবে কনফিগার করবেন
  • ওয়ার্কফ্লোস থেকে ক্লাউড রান পরিষেবাকে কীভাবে কল করবেন
  • ক্লাউড লগিং এবং জিক্লাউড সিএলআই ব্যবহার করে কীভাবে কাঠামোগত লগগুলি জিজ্ঞাসা করবেন

এরপর কি:

অন্যান্য Cymbal Eats কোডল্যাবগুলি অন্বেষণ করুন:

পরিষ্কার করুন

এই টিউটোরিয়ালে ব্যবহৃত সংস্থানগুলির জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, হয় সংস্থানগুলি রয়েছে এমন প্রকল্পটি মুছুন, অথবা প্রকল্পটি রাখুন এবং পৃথক সংস্থানগুলি মুছুন৷

প্রকল্প মুছে ফেলা হচ্ছে

বিলিং দূর করার সবচেয়ে সহজ উপায় হল আপনি টিউটোরিয়ালের জন্য তৈরি করা প্রকল্পটি মুছে ফেলা।