1. ভূমিকা
Google ক্লাউড মার্কেটপ্লেসে SaaS সলিউশন হল সফ্টওয়্যার সলিউশন যা আপনার অবকাঠামোতে চলে, অবস্থান নির্বিশেষে, কিন্তু Google দ্বারা বিল করা হয়।
এই কোডল্যাবে, আপনি একটি মৌলিক SaaS সমাধান সেট আপ করবেন যা Google ক্লাউড মার্কেটপ্লেসের সাথে একীভূত হয়:
- একজন ব্যবহারকারী নমুনা সমাধানের জন্য সাইন আপ করলে বিজ্ঞপ্তি পান।
- সাইন আপ করতে চান এমন গ্রাহকদের অনুমোদন করুন এবং তাদের আপনার ডাটাবেসে যুক্ত করুন।
- গ্রাহকরা তাদের বিলিং পরিকল্পনা পরিবর্তন বা বাতিল করতে চান এমন পরিস্থিতিতে পরিচালনা করুন।
- Google-এ ব্যবহারের প্রতিবেদন পাঠান।
এই কোডল্যাব আপনাকে Google ক্লাউড মার্কেটপ্লেস প্রকিউরমেন্ট এবং পরিষেবা নিয়ন্ত্রণ API-এর সাথে পরিচিত হতে সাহায্য করে। মনে রাখবেন এই নির্দেশিকা পরীক্ষার জন্য একটি সম্পূর্ণ পণ্য পরিবেশ দেয় না।
2. আপনি শুরু করার আগে
- আপনার প্রকল্পের জন্য কোডল্যাব সক্ষম করতে প্রযোজক পোর্টাল ব্যবহার করুন, যদি আপনি ইতিমধ্যে এটি সক্ষম না করে থাকেন।
প্রযোজক পোর্টালের সরাসরি লিঙ্ক হল:
https://console.cloud.google.com/producer-portal?project= YOUR_PROJECT_ID
কোডল্যাব সক্রিয় করতে, স্ক্রিনের ডানদিকে কোডল্যাব প্যানেলে সক্ষম ক্লিক করুন।
- নিম্নলিখিত মডিউলগুলির সাথে আপনার মেশিনে পাইথন 3 ইনস্টল করুন:
- পাইথন গুগল ক্লায়েন্ট এপিআই
-
google-cloud-pubsub
ক্লায়েন্ট লাইব্রেরি।
পাইথন মডিউল ইনস্টল করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
pip install --upgrade google-api-python-client google-cloud-pubsub
- নিম্নলিখিত কমান্ড ব্যবহার করে এই কোডল্যাবের জন্য GitHub সংগ্রহস্থল ক্লোন করুন বা ডাউনলোড করুন:
git clone https://github.com/googlecodelabs/gcp-marketplace-integrated-saas.git cd gcp-marketplace-integrated-saas
- এই প্রকল্পের আইডিতে
GOOGLE_CLOUD_PROJECT
পরিবেশ পরিবর্তনশীল সেট করুন: - লিনাক্স:
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
- উইন্ডোজ:
set GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID
- সার্ভিস অ্যাকাউন্ট
saas-codelab
এ পাব/সাব এডিটরের ভূমিকা মঞ্জুর করুন। ভূমিকা মঞ্জুর এবং পরিচালনার পদক্ষেপের জন্য, সম্পদগুলিতে অ্যাক্সেস মঞ্জুর করা, পরিবর্তন করা এবং প্রত্যাহার করা দেখুন। - পরিষেবা অ্যাকাউন্টের জন্য একটি JSON কী তৈরি করুন এবং ডাউনলোড করুন। কী তৈরি করার ধাপগুলির জন্য, পরিষেবা অ্যাকাউন্ট কী তৈরি করা এবং পরিচালনা করা দেখুন।
- ডাউনলোড করা ফাইলের সম্পূর্ণ পাথে
GOOGLE_APPLICATION_CREDENTIALS
পরিবেশ পরিবর্তনশীল সেট করুন: - লিনাক্স:
export GOOGLE_APPLICATION_CREDENTIALS="[YOUR_MACHINE]/path/service-account-key.json"
- উইন্ডোজ:
set GOOGLE_APPLICATION_CREDENTIALS=[YOUR_MACHINE]/path/service-account-key.json
- Google ক্লাউড মার্কেটপ্লেসে একটি নমুনা সমাধান দেখতে, প্রযোজক পোর্টালে যান এবং কোডল্যাব প্যানেলে কোডল্যাব পণ্যটিতে ক্লিক করুন। এছাড়াও আপনি https://console.cloud.google.com/marketplace/product/DEMO- YOUR_PROJECT_ID /isaas-codelab-এ সরাসরি সমাধানটি অ্যাক্সেস করতে পারেন
- Google ক্লাউড কনসোলে, আপনার নতুন প্রকল্পে, অংশীদার প্রকিউরমেন্ট API সক্ষম করুন।
এর পরে, নমুনা সমাধানের জন্য ব্যাকএন্ড সেট আপ করুন।
3. Google ক্লাউড মার্কেটপ্লেসের সাথে একীভূত করা
উচ্চ স্তরে, আপনি নিম্নলিখিত উপায়ে Google ক্লাউড মার্কেটপ্লেসের সাথে নমুনা সমাধানকে একীভূত করেন:
- Google ক্লাউড মার্কেটপ্লেস থেকে বিজ্ঞপ্তি পেতে ক্লাউড পাব/সাবের সাথে একীভূত করুন, যেমন কোনো ব্যবহারকারী আপনার সমাধানের জন্য সাইন আপ করে। আপনার অংশীদার প্রকৌশলী একটি ক্লাউড পাব/সাব বিষয় তৈরি করেন যা আপনাকে অবশ্যই বিজ্ঞপ্তির জন্য সদস্যতা নিতে হবে।
- নতুন গ্রাহকদের জন্য অ্যাকাউন্ট তৈরি করতে পার্টনার প্রকিউরমেন্ট API-এর সাথে একীভূত করুন। ব্যবহারকারীরা যখন তাদের সাবস্ক্রিপশন প্ল্যান নির্বাচন, পরিবর্তন বা বাতিল করে তখন আপনি অ্যাকাউন্ট আপডেট করতে অংশীদার প্রকিউরমেন্ট API ব্যবহার করেন। API এর সাথে একীভূত করতে, আপনাকে আপনার নিজস্ব ক্লায়েন্ট লাইব্রেরি তৈরি করতে হবে।
- ব্যবহারের তথ্য প্রতিবেদন করতে Google পরিষেবা নিয়ন্ত্রণের সাথে একীভূত করুন৷
4. ক্লাউড পাব/সাব বিষয়ের সদস্যতা নিন
যখন একজন ব্যবহারকারী একটি সাবস্ক্রিপশন প্ল্যান বেছে নেন, তখন আপনি Google ক্লাউড মার্কেটপ্লেস থেকে একটি ক্লাউড পাব/সাব বিষয়ের মাধ্যমে একটি বিজ্ঞপ্তি পান৷
একটি ক্লাউড পাব/সাব বিষয়ের বার্তাগুলি শুনতে, আপনাকে প্রথমে একটি সদস্যতা তৈরি করতে হবে৷
একটি সদস্যতা তৈরি করতে, create_subscription.py
স্ক্রিপ্ট ব্যবহার করুন:
cd gcp-marketplace-integrated-saas/tools python create_subscription.py
সদস্যতা দেখতে, ক্লাউড কনসোলে ক্লাউড পাব/সাব ড্যাশবোর্ড খুলুন:
https://console.cloud.google.com/cloudpubsub/subscriptions
একটি পরীক্ষা সাবস্ক্রিপশন অনুরোধ চেষ্টা করুন
এই নমুনা অ্যাপটিকে একজন ব্যবহারকারী হিসেবে পরীক্ষা করতে, https://console.cloud.google.com/marketplace/product/DEMO- YOUR_PROJECT_ID /isaas-codelab-এ গিয়ে মার্কেটপ্লেসে কোডল্যাব পণ্যটি খুলুন। নিশ্চিত করুন যে আপনি আপনার কোডল্যাব প্রকল্প নির্বাচন করেছেন এবং একটি সদস্যতা পরিকল্পনা চয়ন করুন৷
ক্লাউড পাব/সাব বার্তাগুলি দেখতে যা আপনি যখন একটি পরিকল্পনা চয়ন করেন তখন পাঠানো হয়, সংগ্রহস্থলের python3
ডিরেক্টরির রুটে নেভিগেট করুন এবং নিম্নলিখিত কমান্ডটি চালান:
~/gcp-marketplace-integrated-saas/python3$ python -m impl.step_1_pubsub.app
ক্লাউড পাব/সাব বার্তাগুলির জন্য যে নমুনা কোডটি শোনে তা দেখতে, https://github.com/googlecodelabs/gcp-marketplace-integrated-saas/blob/master/python3/impl/step_1_pubsub/app.py দেখুন।
ক্লাউড পাব/সাব মেসেজে, eventType
ফিল্ড দেখায় কেন মেসেজ পাঠানো হয়েছে। আপনি যখন একটি প্ল্যান চয়ন করেন, তখন আপনি eventType: ENTITLEMENT_CREATION_REQUESTED
, যা আপনার সদস্যতা পরিকল্পনার পূর্ববর্তী পছন্দের প্রতিনিধিত্ব করে৷
এই স্ক্রিপ্টটি চলাকালীন আপনি যদি আপনার পরিকল্পনা বাতিল করেন, তাহলে আপনি একটি নতুন বার্তা দেখতে পাবেন, eventType: ENTITLEMENT_CANCELLED
।
মনে রাখবেন যে উপরের নমুনা বার্তাগুলি স্বীকার করে না। এটি আপনাকে প্রতিবার আপনার অ্যাপ চালানোর সময় একই বার্তাগুলি পাওয়ার মাধ্যমে আরও সহজে পরীক্ষা করতে দেয়৷
স্ক্রিপ্ট বন্ধ করতে, CTRL + \
টিপুন।
5. অ্যাকাউন্ট অনুরোধ অনুমোদন করুন
এখন যেহেতু আপনি Google ক্লাউড মার্কেটপ্লেস থেকে বার্তাগুলি পেতে পারেন, আপনাকে অবশ্যই সেই সংস্থানগুলি পরিচালনা করা শুরু করতে হবে যা Google ক্লাউড মার্কেটপ্লেস প্রকিউরমেন্ট পরিষেবা গ্রাহকের পক্ষে তৈরি করে৷
প্রথমটি হল অ্যাকাউন্ট রিসোর্স। একটি অ্যাকাউন্ট আপনার পণ্যের সাথে একটি গ্রাহকের সংযোগ প্রতিনিধিত্ব করে। আপনার পরিষেবার জন্য তাদের Google অ্যাকাউন্ট এবং তাদের অ্যাকাউন্টের মধ্যে সম্পর্ক ম্যাপ করতে আপনাকে অবশ্যই আপনার ডাটাবেসে গ্রাহকের প্রকিউরমেন্ট অ্যাকাউন্ট আইডি সংরক্ষণ করতে হবে।
যখন একজন গ্রাহক একটি প্ল্যান বেছে নেন, তখন Google ক্লাউড মার্কেটপ্লেস একটি ক্লাউড পাব/সাব বিজ্ঞপ্তি পাঠায় যে গ্রাহক একটি অ্যাকাউন্টের জন্য অনুরোধ করছেন। আপনার অ্যাপকে অবশ্যই অনুরোধটি অনুমোদন করতে হবে। এই কোডল্যাবে, ক্লাউড পাব/সাব মেসেজ প্রাপ্ত হলে আপনি অ্যাকাউন্টের অনুরোধ অনুমোদন করেন।
অ্যাকাউন্টের তথ্যের জন্য ডাটাবেস তৈরি করুন
এই কোডল্যাবের জন্য, আমরা একটি সাধারণ JSON ডাটাবেস ব্যবহার করি যা গ্রাহকের অ্যাকাউন্ট এবং কেনাকাটার ট্র্যাক রাখতে পারে।
এই নমুনাটি পরীক্ষা করতে, আপনার ওয়ার্কস্টেশনের যে কোনও জায়গায় একটি খালি JSON অবজেক্ট সহ একটি ফাইল তৈরি করুন:
{}
এই ফাইলের সম্পূর্ণ পাথে PROCUREMENT_CODELAB_DATABASE
এনভায়রনমেন্ট ভেরিয়েবল সেট করুন:
- লিনাক্স:
export PROCUREMENT_CODELAB_DATABASE="YOUR_MACHINE/path/EMPTY_JSON_OBJECT.json"
- উইন্ডোজ:
set PROCUREMENT_CODELAB_DATABASE=YOUR_MACHINE/path/EMPTY_JSON_OBJECT.json
ডাটাবেস পড়া এবং লেখার মডিউলটি python3/impl/database
এ রয়েছে।
নমুনা বাস্তবায়ন একটি স্কিমা ব্যবহার করে যা আপনি Google ক্লাউড মার্কেটপ্লেসের সাথে একাধিক পণ্য অফারকে একীভূত করলে বাড়ানো যেতে পারে। নমুনা অ্যাপে ভেরি গুড প্ল্যানে সাবস্ক্রাইব করা একজন ব্যবহারকারীর জন্য নিম্নলিখিতটি একটি উদাহরণ ডাটাবেস এন্ট্রি:
{
"a2b3c4d5-b3f1-4dea-b134-generated_id":{
"procurement_account_id":"generated-b3f1-4dea-b134-4a1d100c0335",
"internal_account_id":"generated-45b7-4f4d-1bcd-2abb114f77de",
"products":{
"isaas-codelab":{
"start_time":"2019-01-04T01:21:16.188Z",
"plan_id":"very-good",
"product_id":"isaas-codelab",
"consumer_id":"project_number:123123345345"
}
}
}
}
আপনার চূড়ান্ত বাস্তবায়নে, গ্রাহকদের Google ক্লাউড মার্কেটপ্লেস অ্যাকাউন্টগুলিকে আপনার নিজস্ব গ্রাহক সংস্থানগুলির সাথে লিঙ্ক করতে আপনাকে অবশ্যই আপনার অ্যাপটিকে আপনার নিজস্ব ডেটাবেসের সাথে সংযুক্ত করতে হবে৷
অ্যাকাউন্ট অনুমোদন করা হচ্ছে
অ্যাকাউন্টের অনুরোধ অনুমোদন করতে, নিম্নলিখিত কমান্ডটি চালান:
~/gcp-marketplace-integrated-saas/python3$ python3 -m impl.step_2_account.app
একটি অ্যাকাউন্ট অনুমোদনের নমুনা কোডটি রয়েছে impl/step_2_account এ।
নমুনা বাস্তবায়ন Procurement
ক্লাস ব্যবহার করে, যা প্রকিউরমেন্ট API এর সাথে মিথস্ক্রিয়া পরিচালনা করে। এখানে এর get_account()
এবং approve_account()
পদ্ধতি রয়েছে:
def _get_account_name(self, account_id):
return 'providers/DEMO-{}/accounts/{}'.format(PROJECT_ID,
account_id)
def get_account(self, account_id):
"""Gets an account from the Procurement Service."""
name = self._get_account_name(account_id)
request = self.service.providers().accounts().get(name=name)
try:
response = request.execute()
return response
except HttpError as err:
if err.resp.status == 404:
return None
def approve_account(self, account_id):
"""Approves the account in the Procurement Service."""
name = self._get_account_name(account_id)
request = self.service.providers().accounts().approve(
name=name, body={'approvalName': 'signup'})
request.execute()
এই কোডল্যাবের জন্য, প্রকিউরমেন্ট পরিষেবাতে, প্রদানকারীর আইডি হল DEMO-
YOUR_PROJECT_ID
, যেখানে YOUR_PROJECT_ID
হল আপনার তৈরি করা প্রকল্প। প্রকিউরমেন্ট API এর সাথে ইন্টারঅ্যাক্ট করার সময়, অ্যাকাউন্টের নাম অবশ্যই নিম্নলিখিত ফর্ম্যাটটি ব্যবহার করতে হবে:
providers/DEMO-YOUR_PROJECT_ID/accounts/account-id
এরপর, আপনি একটি এনটাইটেলমেন্ট অনুমোদন করেন, যা গ্রাহকের ক্রয়ের একটি রেকর্ড।
6. এনটাইটেলমেন্ট অনুমোদন করুন
যখন একজন গ্রাহক Google ক্লাউড মার্কেটপ্লেসে একটি সাবস্ক্রিপশন প্ল্যান বেছে নেন, তখন একটি অ্যাকাউন্ট তৈরি করা হয় এবং তারপরে একটি নতুন এনটাইটেলমেন্ট অনুরোধ অবিলম্বে তৈরি করা হয়। এনটাইটেলমেন্ট একটি পরিষেবা কেনার প্রতিনিধিত্ব করে। গ্রাহক পরিষেবাটি ব্যবহার শুরু করার আগে, আপনাকে অবশ্যই এনটাইটেলমেন্টের অনুরোধ অনুমোদন করতে হবে, এবং তারপর গ্রাহকের জন্য এটি ব্যবহার শুরু করার জন্য পরিষেবাটি সেট আপ করতে হবে।
যখন নমুনা অ্যাপ eventType
ENTITLEMENT_CREATION_REQUESTED
সহ একটি ক্লাউড পাব/সাব বার্তা পায়, তখন এনটাইটেলমেন্ট অনুমোদিত হয়, এবং অ্যাপটিকে ডাটাবেসে এনটাইটেলমেন্ট রেকর্ড করার জন্য একটি ENTITLEMENT_ACTIVE
বার্তার জন্য অপেক্ষা করতে হবে, তারপর গ্রাহকের জন্য সংস্থানগুলি সেট আপ করতে হবে৷
এনটাইটেলমেন্ট তৈরি করতে, নিম্নলিখিত কমান্ডটি চালান:
~/gcp-marketplace-integrated-saas/python3$ python3 -m impl.step_3_entitlement_create.app
এনটাইটেলমেন্ট অনুমোদন করার কোডটি নমুনা বাস্তবায়নে রয়েছে।
এরপরে, আপনি এমন পরিস্থিতিতে পরিচালনা করেন যেখানে একজন গ্রাহক তাদের সাবস্ক্রিপশন প্ল্যানে পরিবর্তনের অনুরোধ করেন।
7. একটি এনটাইটেলমেন্ট পরিবর্তন অনুমোদন করুন
যদি আপনার পরিষেবার একাধিক প্ল্যান থাকে, তাহলে আপনাকে অবশ্যই সেই গ্রাহকদের অনুরোধগুলি পরিচালনা করতে হবে যারা তাদের বিদ্যমান প্ল্যান আপগ্রেড বা ডাউনগ্রেড করতে চান।
যদি আপনার পরিষেবার শুধুমাত্র একটি পরিকল্পনা থাকে, তাহলে বাতিল করা কেনাকাটা পরিচালনা করুন।
এনটাইটেলমেন্ট প্রথমবার সক্রিয় হওয়া এবং পরিকল্পনা পরিবর্তনের পরে সক্রিয় হওয়ার মধ্যে কোনও প্রযুক্তিগত পার্থক্য নেই। এই কারণে, নমুনা বাস্তবায়নে উভয় ক্ষেত্রেই একটি ভাগ করা handleActiveEntitlement()
পদ্ধতি রয়েছে। এই পদ্ধতিটি এনটাইটেলমেন্ট-সম্পর্কিত ইভেন্টগুলির জন্য আগত বার্তাগুলি পরীক্ষা করে:
step_4_entitlement_change/app.py
def handleActiveEntitlement(self, entitlement, customer, accountId):
"""Updates the database to match the active entitlement."""
product = {
'product_id': entitlement['product'],
'plan_id': entitlement['plan'],
}
if 'consumerId' in entitlement:
product['consumer_id'] = entitlement['consumerId']
customer['products'][entitlement['product']] = product
self.db.write(accountId, customer)
নিম্নলিখিত স্নিপেটটি eventType
প্রকারটি ENTITLEMENT_PLAN_CHANGE_REQUESTED
বা ENTITLEMENT_PLAN_CHANGED
কিনা তা পরীক্ষা করে:
step_4_entitlement_change/app.py
elif eventType == 'ENTITLEMENT_PLAN_CHANGE_REQUESTED':
if state == 'ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL':
# Don't write anything to our database until the entitlement becomes
# active within the Procurement Service.
self.approveEntitlementPlanChange(id, entitlement['newPendingPlan'])
return True
elif eventType == 'ENTITLEMENT_PLAN_CHANGED':
if state == 'ENTITLEMENT_ACTIVE':
# Handle an active entitlement after a plan change.
self.handleActiveEntitlement(entitlement, customer, accountId)
return True
আপনার চূড়ান্ত বাস্তবায়নে, যখন এনটাইটেলমেন্টটি ENTITLEMENT_ACTIVE
অবস্থায় ফিরে আসে, তখন আপনার শ্রোতা পদ্ধতি পরিবর্তনটি প্রতিফলিত করার জন্য আপনার ডাটাবেস আপডেট করতে হবে এবং প্রয়োজনীয় কোনো ব্যবস্থা করতে হবে।
আপনি আপনার পার্টনার ইঞ্জিনিয়ারের সাথে কীভাবে আপনার পণ্য সেট আপ করেন তার উপর নির্ভর করে, আপনার পরিষেবা বিলিং চক্রের শেষ না হওয়া পর্যন্ত ডাউনগ্রেড বা বাতিলকরণের অনুমতি নাও দিতে পারে। এই ধরনের ক্ষেত্রে, অনুমোদনের পরেও প্ল্যান পরিবর্তনটি মুলতুবি থাকবে, কিন্তু এনটাইটেলমেন্ট ENTITLEMENT_ACTIVE
অবস্থায় ফিরে যাবে না যতক্ষণ না প্ল্যান পরিবর্তন সম্পূর্ণ হয়।
যে কোডটি এনটাইটেলমেন্ট পরিবর্তনগুলি পরীক্ষা করে এবং অনুমোদন করে তার জন্য, নমুনা বাস্তবায়ন দেখুন।
এরপরে, আপনি এমন পরিস্থিতি পরিচালনা করেন যেখানে গ্রাহকরা তাদের কেনাকাটা বাতিল করে দেন।
8. বাতিল করা কেনাকাটা পরিচালনা করুন
গ্রাহকরা তাদের কেনাকাটা বাতিল করতে বেছে নিতে পারেন। আপনি আপনার অংশীদার ইঞ্জিনিয়ারের সাথে কীভাবে পণ্য সেট আপ করেছেন তার উপর নির্ভর করে, বাতিলকরণ অবিলম্বে বা বিলিং চক্রের শেষে কার্যকর হতে পারে।
যখন একজন গ্রাহক তাদের কেনাকাটা বাতিল করেন, eventType
ENTITLEMENT_PENDING_CANCELLATION
সহ একটি বার্তা পাঠানো হয়। আপনি যদি অবিলম্বে বাতিলকরণ প্রক্রিয়া করার জন্য আপনার পণ্য সেট আপ করে থাকেন, তাহলে শীঘ্রই eventType
ENTITLEMENT_CANCELLED
সহ একটি বার্তা পাঠানো হবে৷
step_5_entitlement_cancel/app.py
elif eventType == 'ENTITLEMENT_CANCELLED':
# Clear out our records of the customer's plan.
if entitlement['product'] in customer['products']:
del customer['products'][entitlement['product']]
### TODO: Turn off customer's service. ###
self.db.write(accountId, customer)
return True
elif eventType == 'ENTITLEMENT_PENDING_CANCELLATION':
# Do nothing. We want to cancel once it's truly canceled. For now it's
# just set to not renew at the end of the billing cycle.
return True
elif eventType == 'ENTITLEMENT_CANCELLATION_REVERTED':
# Do nothing. The service was already active, but now it's set to renew
# automatically at the end of the billing cycle.
return True
আপনার পরিষেবাকে অবশ্যই ENTITLEMENT_CANCELLED
বার্তার জন্য অপেক্ষা করতে হবে তারপরে আপনার ডাটাবেস থেকে এনটাইটেলমেন্টটি সরিয়ে দিতে হবে এবং গ্রাহকের জন্য পরিষেবাটি বন্ধ করতে হবে৷
এনটাইটেলমেন্ট বাতিল হওয়ার পরে, এটি Google এর সিস্টেম থেকে মুছে ফেলা হয়, এবং eventType
ENTITLEMENT_DELETED
সহ একটি বার্তা পাঠানো হয়:
step_5_entitlement_cancel/app.py
elif eventType == 'ENTITLEMENT_DELETED':
# Do nothing. Entitlements can only be deleted when they are already
# cancelled, so our state is already up-to-date.
return True
যে কোডটি এনটাইটেলমেন্ট বাতিল করে তার জন্য, নমুনা বাস্তবায়ন দেখুন।
9. ব্যবহারের রিপোর্ট পাঠানো
কিছু পরিষেবার ব্যবহার-ভিত্তিক উপাদান রয়েছে, যেখানে গ্রাহকের কাছ থেকে সঠিক পরিমাণ চার্জ করার জন্য Google-এর গ্রাহকদের পরিষেবার ব্যবহার সম্পর্কে জানতে হবে। আপনার পরিষেবাকে অবশ্যই Google পরিষেবা নিয়ন্ত্রণ API-এর মাধ্যমে ব্যবহারের প্রতিবেদন করতে হবে৷
আপনার পরিষেবাতে ব্যবহার-ভিত্তিক উপাদান না থাকলে, এই বিভাগটি এড়িয়ে যান।
ব্যবহারের রিপোর্ট পাঠানোর বিষয়ে বিস্তারিত তথ্যের জন্য, অনবোর্ডিং ডকুমেন্টেশন দেখুন।
ব্যবহারের রিপোর্ট প্রতি ঘণ্টায় Google পরিষেবা নিয়ন্ত্রণ API-এ পাঠানো উচিত। এই কোডল্যাবে, রিপোর্টগুলি একটি স্ক্রিপ্ট ব্যবহার করে পাঠানো হয় যা আপনি একটি ক্রোন কাজ হিসাবে নির্ধারণ করতে পারেন। স্ক্রিপ্ট ডাটাবেসে শেষ ব্যবহারের রিপোর্টের সময় সঞ্চয় করে এবং ব্যবহার পরিমাপ করার জন্য শুরুর সময় হিসাবে ব্যবহার করে।
স্ক্রিপ্টটি পরিষেবার প্রতিটি সক্রিয় গ্রাহককে পরীক্ষা করে এবং গ্রাহক এনটাইটেলমেন্টের consumer_id
ক্ষেত্র ব্যবহার করে Google পরিষেবা নিয়ন্ত্রণে একটি ব্যবহার প্রতিবেদন পাঠায়। স্ক্রিপ্ট তারপর গ্রাহকের জন্য ডাটাবেস এন্ট্রি আপডেট করে একটি last_report_time
এইমাত্র পাঠানো ব্যবহারের রিপোর্টের শেষ সময়ে সেট করা আছে।
Google পরিষেবা নিয়ন্ত্রণ দুটি পদ্ধতি প্রকাশ করে: check
এবং report
। পূর্ববর্তীটিকে সর্বদা পরেরটিতে কল করার আগে অবিলম্বে কল করা উচিত। যদি আগেরটির কোনো ত্রুটি থাকে, তবে তা ঠিক না হওয়া পর্যন্ত গ্রাহকের পরিষেবা অক্ষম করা উচিত।
একটি প্রদত্ত এনটাইটেলমেন্টের জন্য সমস্ত ব্যবহার একটি একক usageReportingId
জন্য দায়ী করা হয়। যাইহোক, SaaS পণ্যগুলির জন্য, এই ব্যবহারটি Google ক্লাউড বিলিং-এ [Charges not specific to a project]
লাইন আইটেমের সাথে যুক্ত। যদি আপনার SaaS পণ্যটি একটি গ্রাহকের প্রতিষ্ঠানের মধ্যে বিস্তৃতভাবে ভাগ করা হতে পারে এবং আপনি খরচের বৈশিষ্ট্য সমর্থন করতে চান, তাহলে আমরা সুপারিশ করি যে আপনার সমস্ত পরিষেবাতে তাদের ব্যবহার প্রতিবেদন অপারেশনে ঐচ্ছিক userLabels
ক্ষেত্র অন্তর্ভুক্ত করুন।
Google ক্লাউড মার্কেটপ্লেস Cloudmarketplace.googleapis.com/resource_name এবং cloudmarketplace.googleapis.com/container_name লেবেল কী সংরক্ষণ করে। এই লেবেলগুলি আপনার নেটিভ পরিষেবা এবং সংস্থান শ্রেণিবিন্যাসের মধ্যে ব্যবহারের প্রসঙ্গ ক্যাপচার করার উদ্দেশ্যে। এই সংস্থানগুলির গ্রাহকের দ্বারা নির্ধারিত নামগুলি ব্যবহার প্রতিবেদনে লেবেল মান হিসাবে অন্তর্ভুক্ত করা হবে। আমরা সুপারিশ করি যে আপনি এই লেবেলগুলিকে আপনার ব্যবহারের প্রতিবেদনে ডিফল্টরূপে অন্তর্ভুক্ত করুন৷
লেবেল কী | লেবেল মান | বর্ণনা |
cloudmarketplace.googleapis.com/resource_name | RESOURCE_NAME | একটি ব্যবহার মেট্রিকের সাথে সংশ্লিষ্ট সম্পদের নাম। |
cloudmarketplace.googleapis.com/container_name | CONTAINER_NAME | একটি সম্পদ ধারক নাম. |
নিম্নলিখিত স্নিপেটটি ডেমো অ্যাপের ব্যবহার সম্পর্কে রিপোর্ট করে এবং SaaS পণ্যের ব্যবহারকে products_db
নামের গ্রাহক-অর্পিত সংস্থানকে দায়ী করে। এই কোডল্যাবের জন্য, service_name
হল isaas-codelab.mp-marketplace-partner-demos.appspot.com
।
operation = {
'operationId': '<UUID>',
'operationName': 'Codelab Usage Report',
'consumerId': 'project_number:<Project Number>',
'startTime': '<Timestamp>',
'endTime': '<Timestamp>',
'metricValues': [{
'int64Value': 100,
}],
'userLabels': {
'cloudmarketplace.googleapis.com/container_name': 'saas-storage-solutions',
'cloudmarketplace.googleapis.com/resource_name': 'products_db'
}
}
service.services().report(
serviceName=service_name, body={
'operations': [operation]
}).execute()
product['last_report_time'] = end_time
database.write(customer_id, customer)
সম্পূর্ণ কোডের জন্য এই স্ক্রিপ্টের নমুনা বাস্তবায়ন দেখুন। একটি নমুনা ব্যবহারের প্রতিবেদন তৈরি করতে, নিম্নলিখিত কমান্ডটি চালান:
~/gcp-marketplace-integrated-saas/python3$ python3 -m impl.step_6_usage_reporting.report isaas-codelab.mp-marketplace-partner-demos.appspot.com
10. অভিনন্দন!
আপনি শিখেছেন কীভাবে আপনার SaaS সমাধানটি গ্রাহকের অ্যাকাউন্ট এবং এনটাইটেলমেন্টগুলি পরিচালনা করতে এবং পরিষেবার বিরুদ্ধে ব্যবহারের প্রতিবেদন করতে Google ক্লাউড মার্কেটপ্লেসের সাথে একীভূত হতে পারে৷ সম্পূর্ণ ইন্টিগ্রেশন ধাপের জন্য, ব্যাকএন্ড ইন্টিগ্রেশন ডকুমেন্টেশন পড়ুন।
পরিষ্কার করুন
আপনি যদি সেগুলি আর ব্যবহার করার পরিকল্পনা না করেন তবে নিম্নলিখিত সংস্থানগুলি মুছুন:
- ক্লাউড পাব/সাবস্ক্রিপশন
- পরিষেবা অ্যাকাউন্ট এবং এর কীগুলি৷
- ঐচ্ছিকভাবে, আপনি যে প্রকল্পটি তৈরি করেছেন
- ঐচ্ছিকভাবে, আপনার তৈরি করা বিলিং অ্যাকাউন্ট
এরপর কি
আপনার ফ্রন্টএন্ড সংহত করুন
এই কোডল্যাবের নমুনা স্বয়ংক্রিয়ভাবে অ্যাকাউন্ট এবং এনটাইটেলমেন্ট অনুমোদন করে। অনুশীলনে, আপনার গ্রাহকদের আপনার তৈরি করা একটি সাইন-আপ পৃষ্ঠায় নির্দেশিত করতে হবে, যেখানে তারা আপনার সিস্টেমে অ্যাকাউন্ট তৈরি করতে পারে। তারা সফলভাবে সাইন আপ করার পরে, আপনাকে অবশ্যই তাদের অ্যাকাউন্ট এবং এনটাইটেলমেন্ট অনুমোদন করার জন্য API অনুরোধ করতে হবে।
আপনার অ্যাপের ফ্রন্টএন্ড সংহত করার বিষয়ে তথ্যের জন্য, Google ক্লাউড মার্কেটপ্লেস ডকুমেন্টেশন দেখুন।
SaaS সমাধান অফার করার বিষয়ে আরও জানুন
Google ক্লাউড মার্কেটপ্লেসে SaaS সমাধান অফার করার একটি সংক্ষিপ্ত বিবরণের জন্য, SaaS সমাধান অফার করা দেখুন।