১. সংক্ষিপ্ত বিবরণ

ক্লাউড ফাংশনের মাধ্যমে আপনি সহজ, একক-উদ্দেশ্যমূলক ফাংশন লিখতে পারেন, যা আপনার ক্লাউড পরিকাঠামো এবং পরিষেবাগুলো থেকে নির্গত ইভেন্টগুলোর সাথে সংযুক্ত থাকে। যখন পর্যবেক্ষণাধীন কোনো ইভেন্ট ফায়ার হয়, তখন আপনার ক্লাউড ফাংশনটি ট্রিগার হয়। আপনার কোড একটি সম্পূর্ণ পরিচালিত পরিবেশে কার্যকর হয়। কোনো পরিকাঠামো প্রস্তুত করার বা কোনো সার্ভার পরিচালনার বিষয়ে চিন্তা করার প্রয়োজন নেই।
বর্তমানে ক্লাউড ফাংশন জাভাস্ক্রিপ্ট, পাইথন বা গো-তে লেখা যায়। জাভাস্ক্রিপ্টের ক্ষেত্রে, এগুলি গুগল ক্লাউড প্ল্যাটফর্মে একটি Node.js পরিবেশে চলে। আপনি আপনার ক্লাউড ফাংশনটি যেকোনো স্ট্যান্ডার্ড Node.js রানটাইমে চালাতে পারেন, যা পোর্টেবিলিটি এবং লোকাল টেস্টিং উভয়কেই অত্যন্ত সহজ করে তোলে।
ক্লাউড পরিষেবাগুলি সংযুক্ত করুন এবং প্রসারিত করুন
ক্লাউড ফাংশনস একটি সংযোগকারী লজিক লেয়ার প্রদান করে, যা আপনাকে ক্লাউড পরিষেবাগুলোর সাথে সংযোগ স্থাপন এবং সেগুলোকে সম্প্রসারিত করার জন্য কোড লিখতে দেয়। ক্লাউড স্টোরেজে ফাইল আপলোড, লগ পরিবর্তন, বা ক্লাউড পাব/সাব টপিকে আগত কোনো বার্তা শুনুন এবং সে অনুযায়ী সাড়া দিন। ক্লাউড ফাংশনস বিদ্যমান ক্লাউড পরিষেবাগুলোকে উন্নত করে এবং আপনাকে যেকোনো প্রোগ্রামিং লজিক ব্যবহার করে ক্রমবর্ধমান সংখ্যক ইউজ কেস সমাধান করার সুযোগ দেয়। ক্লাউড ফাংশনস-এর গুগল সার্ভিস অ্যাকাউন্ট ক্রেডেনশিয়াল-এ অ্যাক্সেস রয়েছে এবং এর ফলে এটি ডেটাস্টোর, ক্লাউড স্প্যানার, ক্লাউড ট্রান্সলেশন এপিআই, ক্লাউড ভিশন এপিআই-সহ গুগল ক্লাউড প্ল্যাটফর্মের অধিকাংশ পরিষেবার সাথে নির্বিঘ্নে প্রমাণীকৃত হয়।

ঘটনা এবং ট্রিগার
ক্লাউড ইভেন্ট হলো আপনার ক্লাউড পরিবেশে ঘটে যাওয়া বিভিন্ন ঘটনা। এগুলি হতে পারে ডাটাবেসের ডেটার পরিবর্তন, স্টোরেজ সিস্টেমে ফাইল যুক্ত হওয়া, বা একটি নতুন ভার্চুয়াল মেশিন ইনস্ট্যান্স তৈরি হওয়া।
আপনি সাড়া দিতে চান বা না চান, ঘটনা ঘটেই থাকে। আপনি একটি ট্রিগারের মাধ্যমে কোনো ঘটনার প্রতিক্রিয়া তৈরি করেন। ট্রিগার হলো একটি ঘোষণা যে আপনি একটি নির্দিষ্ট ঘটনা বা একাধিক ঘটনার প্রতি আগ্রহী। একটি ফাংশনকে ট্রিগারের সাথে যুক্ত করলে আপনি ঘটনাগুলো ধরতে এবং সে অনুযায়ী কাজ করতে পারেন। ট্রিগার তৈরি করা এবং সেগুলোকে আপনার ফাংশনের সাথে যুক্ত করার বিষয়ে আরও তথ্যের জন্য, ‘ইভেন্টস অ্যান্ড ট্রিগারস’ দেখুন।
সার্ভারবিহীন
ক্লাউড ফাংশন সার্ভার পরিচালনা, সফটওয়্যার কনফিগার করা, ফ্রেমওয়ার্ক আপডেট করা এবং অপারেটিং সিস্টেম প্যাচ করার কাজ দূর করে। সফটওয়্যার এবং পরিকাঠামো সম্পূর্ণরূপে গুগল দ্বারা পরিচালিত হয়, তাই আপনাকে শুধু কোড যোগ করতে হয়। এছাড়াও, ইভেন্টের প্রতিক্রিয়ায় রিসোর্সের জোগান স্বয়ংক্রিয়ভাবে সম্পন্ন হয়। এর মানে হলো, আপনার কোনো রকম কাজ ছাড়াই একটি ফাংশন দিনে কয়েকটি ইনভোকেশন থেকে শুরু করে লক্ষ লক্ষ ইনভোকেশন পর্যন্ত স্কেল করতে পারে।
ব্যবহারের ক্ষেত্র
লাইটওয়েট ইটিএল-এর মতো অ্যাসিঙ্ক্রোনাস ওয়ার্কলোড, বা অ্যাপ্লিকেশন বিল্ড ট্রিগার করার মতো ক্লাউড অটোমেশনের জন্য এখন আর নিজস্ব সার্ভার এবং তা সংযোগ করার জন্য কোনো ডেভেলপারের প্রয়োজন নেই। আপনি কেবল আপনার কাঙ্ক্ষিত ইভেন্টের সাথে সংযুক্ত একটি ক্লাউড ফাংশন ডিপ্লয় করলেই কাজ শেষ।
ক্লাউড ফাংশনের সূক্ষ্ম ও চাহিদা-ভিত্তিক বৈশিষ্ট্য এটিকে লাইটওয়েট এপিআই এবং ওয়েবহুকের জন্য একটি আদর্শ মাধ্যম করে তোলে। এছাড়াও, যখন আপনি একটি এইচটিটিপি ফাংশন ডেপ্লয় করেন, তখন এইচটিটিপি এন্ডপয়েন্টগুলোর স্বয়ংক্রিয় প্রোভিশনিংয়ের কারণে অন্য কিছু সার্ভিসের মতো কোনো জটিল কনফিগারেশনের প্রয়োজন হয় না।
এই হ্যান্ডস-অন ল্যাবটি আপনাকে দেখাবে কিভাবে গুগল ক্লাউড কনসোল ব্যবহার করে একটি ক্লাউড ফাংশন তৈরি, ডেপ্লয় এবং টেস্ট করতে হয়। আপনি যা শিখবেন:
- একটি ক্লাউড ফাংশন তৈরি করুন
- ফাংশনটি স্থাপন এবং পরীক্ষা করুন
- লগ দেখুন
২. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিতে পরিবেশ সেটআপ
- ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। (যদি আপনার আগে থেকে Gmail বা G Suite অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)
প্রজেক্ট আইডিটি মনে রাখবেন, যা সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে ব্যবহৃত হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এই কোডল্যাবে এটিকে পরবর্তীতে PROJECT_ID হিসাবে উল্লেখ করা হবে।
- এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে।
এই কোডল্যাবটি চালাতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। "পরিষ্কার-পরিচ্ছন্নতা" (Cleaning up) বিভাগে দেওয়া নির্দেশাবলী অবশ্যই অনুসরণ করবেন, যেখানে রিসোর্স বন্ধ করার পরামর্শ দেওয়া হয়েছে, যাতে এই টিউটোরিয়ালের বাইরে আপনার কোনো বিল না আসে। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
গুগল ক্লাউড শেল
যদিও গুগল ক্লাউড এবং ক্লাউড ফাংশন আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আমরা গুগল ক্লাউড শেল ব্যবহার করব, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।
এই ডেবিয়ান-ভিত্তিক ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এর মানে হলো, এই কোডল্যাবের জন্য আপনার শুধু একটি ব্রাউজার প্রয়োজন হবে (হ্যাঁ, এটি ক্রোমবুকেও কাজ করে)।
- ক্লাউড কনসোল থেকে ক্লাউড শেল সক্রিয় করতে, কেবল 'Activate Cloud Shell'-এ ক্লিক করুন।
(পরিবেশের জন্য ব্যবস্থা করতে এবং সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত)।
ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনাকে ইতিমধ্যেই প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার PROJECT_ID তে সেট করা আছে।
gcloud auth list
কমান্ড আউটপুট
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
কমান্ড আউটপুট
[core] project = <PROJECT_ID>
যদি কোনো কারণে প্রজেক্টটি সেট করা না থাকে, তাহলে নিম্নলিখিত কমান্ডটি দিন:
gcloud config set project <PROJECT_ID>
আপনার PROJECT_ID খুঁজছেন? সেটআপের ধাপগুলিতে আপনি কোন আইডি ব্যবহার করেছিলেন তা দেখে নিন অথবা ক্লাউড কনসোল ড্যাশবোর্ডে এটি খুঁজে দেখুন:
ক্লাউড শেল ডিফল্টরূপে কিছু এনভায়রনমেন্ট ভেরিয়েবলও সেট করে, যা ভবিষ্যতে কমান্ড চালানোর সময় কাজে লাগতে পারে।
echo $GOOGLE_CLOUD_PROJECT
কমান্ড আউটপুট
<PROJECT_ID>
- অবশেষে, ডিফল্ট জোন এবং প্রজেক্ট কনফিগারেশন সেট করুন।
gcloud config set compute/zone us-central1-f
আপনি বিভিন্ন ধরনের জোন বেছে নিতে পারেন। আরও তথ্যের জন্য, অঞ্চল ও জোন দেখুন।
৩. একটি ফাংশন তৈরি করুন
এই ধাপে, আপনি কনসোল ব্যবহার করে একটি ক্লাউড ফাংশন তৈরি করবেন।
- কনসোলে, নেভিগেশন মেনু > ক্লাউড ফাংশন-এ ক্লিক করুন।

- 'ফাংশন তৈরি করুন'-এ ক্লিক করুন:

- আপনার ফাংশনের নাম
GCFunctionদিন এবং অন্যান্য ডিফল্টগুলো অপরিবর্তিত রাখুন: মেমরি অ্যালোকেশন, ট্রিগার হিসেবে HTTP, ইনলাইন এডিটর, ডিফল্ট রানটাইম এবং ডিফল্ট স্যাম্পল কোড।

- 'ক্রিয়েট ফাংশন' ডায়ালগ বক্সে থাকা অবস্থায়, একদম নিচে, ফাংশনটি ডিপ্লয় করতে 'ক্রিয়েট' বাটনে ক্লিক করুন:

Create-এ ক্লিক করার পর, কনসোলটি Cloud Functions Overview পৃষ্ঠায় পুনঃনির্দেশিত হয়।
ফাংশনটি ডেপ্লয় করার সময়, এর পাশের আইকনটি একটি ছোট স্পিনার থাকে। ডেপ্লয় হয়ে গেলে, স্পিনারটি একটি সবুজ টিক চিহ্ন হয়ে যাবে। কোনো সমস্যা হলে, আপনাকে একটি লাল আইকন এবং লগ-এর একটি লিঙ্কের মাধ্যমে জানানো হবে, যা থেকে আপনি বুঝতে পারবেন কী ভুল হয়েছে (সম্ভবত আপনার কোডেই কোনো সমস্যা)।

ব্যাস! আপনার ফাংশনটি এখন লাইভ এবং HTTP-এর মাধ্যমে ট্রিগার করার জন্য প্রস্তুত।
৪. ফাংশনটি পরীক্ষা করুন
ক্লাউড ফাংশন ওভারভিউ পৃষ্ঠায়, আপনার ফাংশনের জন্য মেনুটি প্রদর্শন করুন এবং টেস্ট ফাংশন-এ ক্লিক করুন:

ট্রিগারিং ইভেন্ট ফিল্ডে, বন্ধনী {} এর মধ্যে নিম্নলিখিত টেক্সটটি লিখুন এবং টেস্ট দ্য ফাংশন-এ ক্লিক করুন।
আউটপুট ফিল্ডে আপনি "Success: Hello World! বার্তাটি দেখতে পাবেন।
'লগস ' ফিল্ডে, ২০০ স্ট্যাটাস কোডটি সফলতা নির্দেশ করে। উল্লেখ্য যে, লগগুলো প্রদর্শিত হতে এক মিনিট সময় লাগতে পারে।

৫. ফাংশন লগগুলো দেখুন
ক্লাউড ফাংশন ওভারভিউ পৃষ্ঠায় ফিরে যেতে নীল তীরচিহ্নে ক্লিক করুন:

আপনার ফাংশনের জন্য মেনুটি প্রদর্শন করুন এবং 'লগ দেখুন'-এ ক্লিক করুন:

এখানে লগ হিস্ট্রির একটি উদাহরণ দেওয়া হলো:

মনে রাখবেন যে আপনি ফাংশন ও তীব্রতা অনুযায়ী লগ ফিল্টার করতে পারেন এবং কোনো লেবেল বা সাধারণ টেক্সট ব্যবহার করে অনুসন্ধান করতে পারেন।
আপনার অ্যাপ্লিকেশনটি ডেপ্লয় ও টেস্ট করা হয়েছে এবং আপনি লগগুলো দেখতে পেরেছেন।
৬. সম্পদ পরিষ্কার করা
আপনার আসলে রিসোর্স পরিষ্কার করার কোনো প্রয়োজন নেই, কারণ এটি সার্ভারলেস কম্পিউটিং: স্কেলিং টু জিরো মানে স্কেলিং খরচও শূন্য। সুতরাং, যদি আপনার ফাংশনে কোনো ট্র্যাফিক না আসে, তাহলে কোনো খরচও হবে না। এছাড়াও, প্রতি মাসে প্রথম ২০ লক্ষ ক্লাউড ফাংশন ইনভোকেশন বিনামূল্যে। আরও বিস্তারিত জানতে প্রাইসিং পেজটি দেখুন।
আপনি যদি ফাংশনটি মুছে ফেলতে চান, তাহলে ওভারভিউ পৃষ্ঠায় যান, ফাংশনটি নির্বাচন করুন এবং ডিলিট (DELETE) বোতামে ক্লিক করুন।

৭. এরপর কী?
ক্লাউড ফাংশনস-এ আপনার জন্য আরও অনেক কিছু রয়েছে! অন্যান্য কোডল্যাব, প্রোডাক্ট পেজ এবং এর ডকুমেন্টেশন দেখুন।
আপনার নিম্নলিখিত বিষয়গুলোও দেখে নেওয়া উচিত:
- ক্লাউড ফাংশন কল করা (ফাংশন আহ্বানের জন্য ট্রিগার উপলব্ধ)
- ক্লাউড ফাংশন পর্যবেক্ষণ (লগ, ত্রুটি প্রতিবেদন, এবং আরও অনেক কিছু)
- ... অথবা সার্ভারলেস ক্যাটাগরি থেকে আরও কোডল্যাব