ওয়ার্কফ্লো সহ সার্ভারহীন অর্কেস্ট্রেশনের ভূমিকা

১. ভূমিকা

c9b0cc839df0bb8f.png

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

ওয়ার্কফ্লো-এর জন্য কোনো পরিকাঠামো ব্যবস্থাপনার প্রয়োজন হয় না এবং এটি চাহিদা অনুযায়ী নির্বিঘ্নে সম্প্রসারিত হয়, এমনকি শূন্য পর্যন্ত কমিয়ে আনাও যায়। এর পে-পার-ইউজ প্রাইসিং মডেলের মাধ্যমে, আপনি শুধুমাত্র কার্য সম্পাদনের সময়ের জন্যই অর্থ প্রদান করেন।

এই কোডল্যাবে, আপনি শিখবেন কীভাবে বিভিন্ন গুগল ক্লাউড পরিষেবা এবং বাহ্যিক HTTP API-কে ওয়ার্কফ্লো-এর সাথে সংযুক্ত করতে হয়। আরও নির্দিষ্টভাবে বললে, আপনি দুটি পাবলিক ক্লাউড ফাংশন পরিষেবা, একটি প্রাইভেট ক্লাউড রান পরিষেবা এবং একটি বাহ্যিক পাবলিক HTTP API-কে একটি ওয়ার্কফ্লো-তে সংযুক্ত করবেন।

আপনি যা শিখবেন

  • ওয়ার্কফ্লো-এর প্রাথমিক ধারণা।
  • পাবলিক ক্লাউড ফাংশনগুলোকে ওয়ার্কফ্লোর সাথে কীভাবে সংযুক্ত করবেন
  • প্রাইভেট ক্লাউড রান সার্ভিসগুলোকে ওয়ার্কফ্লো-এর সাথে কীভাবে সংযুক্ত করবেন।
  • ওয়ার্কফ্লোর সাথে বাহ্যিক HTTP API কীভাবে সংযুক্ত করবেন।

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

স্ব-গতিতে পরিবেশ সেটআপ

  1. ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। (যদি আপনার আগে থেকে Gmail বা G Suite অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)

H_hgylo4zxOllHaAbPKJ7VyqCKPDUnDhkr-BsBIFBsrB6TYSisg6LX-uqmMhh4sXUy_hoa2Qv87C2nFmkg-QAcCiZZp0qtpf6VPaNEEfP_iqt29KVLD-gklBWugQVeOWsFnJmNjHDw

dcCPqfBIwNO4R-0fNQLUC4aYXOOZhKhjUnakFLZJGeziw2ikOxGjGkCHDwN5x5kCbPFB8 fiOzZnX-GfuzQ8Ox-UU15BwHirkVPR_0RJwl0oXrhqZmMIvZMa_uwHugBJIdx5-bZ6Z8Q

jgLzVCxk93d6E2bbonzATKA4jFZReoQ-fORxZZLEi5C3D-ubnv6nL-eP-iyh7qAsWyq_nyzzuEoPFD1wFOFZOe4FWhPBJjUDncnTxTImT3Ts9TM54f4nPpsAp52O0y3Cb19IceAEgQ

প্রজেক্ট আইডিটি মনে রাখবেন, যা সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে ব্যবহৃত হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এই কোডল্যাবে এটিকে পরবর্তীতে PROJECT_ID হিসাবে উল্লেখ করা হবে।

  1. এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে।

এই কোডল্যাবটি চালাতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। "পরিষ্কার-পরিচ্ছন্নতা" (Cleaning up) বিভাগে দেওয়া নির্দেশাবলী অবশ্যই অনুসরণ করবেন, যেখানে রিসোর্স বন্ধ করার পরামর্শ দেওয়া হয়েছে, যাতে এই টিউটোরিয়ালের বাইরে আপনার কোনো বিল না আসে। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।

GCP কনসোল থেকে উপরের ডানদিকের টুলবারে থাকা ক্লাউড শেল আইকনে ক্লিক করুন:

STgwiN06Y0s_gL7i9bTed8duc9tWOIaFw0z_4QOjc-jeOmuH2TBK8l4udei56CKPLoM_i1yEF6pn5Ga88eniJQoEh8cAiTH79gWUHJdKOw0oiBZfBpOdcEOl6p29i4mvPe_A6UMJBQ

পরিবেশটি প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে। এটি শেষ হলে, আপনি এইরকম কিছু দেখতে পাবেন:

r6WRHJDzL-GdB5VDxMWa67_cQxRR_x_xCG5xdt9Nilfuwe9fTGAwM9XSZbNPWvDSFtrZ7 DDecKqR5_pIq2IJJ9puAMkC3Kt4JbN9jfMX3gAwTNHNqFmqOJ-3iIX5HSePO4dNVZUkNA

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

৩. ওয়ার্কফ্লোর সংক্ষিপ্ত বিবরণ

মৌলিক বিষয়

একটি ওয়ার্কফ্লো একাধিক ধাপের সমন্বয়ে গঠিত, যা ওয়ার্কফ্লো YAML-ভিত্তিক সিনট্যাক্স ব্যবহার করে বর্ণনা করা হয়। এটিই ওয়ার্কফ্লো-এর সংজ্ঞা। ওয়ার্কফ্লো YAML সিনট্যাক্স সম্পর্কে বিস্তারিত ব্যাখ্যার জন্য, সিনট্যাক্স রেফারেন্স পৃষ্ঠাটি দেখুন।

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

পরিষেবাগুলি সক্ষম করুন

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

সকল প্রয়োজনীয় পরিষেবা সক্রিয় করুন:

gcloud services enable \
  cloudfunctions.googleapis.com \
  run.googleapis.com \
  workflows.googleapis.com \
  cloudbuild.googleapis.com \
  storage.googleapis.com

পরবর্তী ধাপে, আপনি একটি ওয়ার্কফ্লোতে দুটি ক্লাউড ফাংশনকে একসাথে সংযুক্ত করবেন।

৪. প্রথম ক্লাউড ফাংশনটি স্থাপন করুন

প্রথম ফাংশনটি হলো পাইথনের একটি র‍্যান্ডম নম্বর জেনারেটর।

ফাংশন কোডের জন্য একটি ডিরেক্টরি তৈরি করুন এবং সেখানে যান:

mkdir ~/randomgen
cd ~/randomgen

ডিরেক্টরিতে নিম্নলিখিত বিষয়বস্তু সহ একটি main.py ফাইল তৈরি করুন:

import random, json
from flask import jsonify

def randomgen(request):
    randomNum = random.randint(1,100)
    output = {"random":randomNum}
    return jsonify(output)

যখন এটি একটি HTTP অনুরোধ গ্রহণ করে, তখন এই ফাংশনটি ১ থেকে ১০০-এর মধ্যে একটি এলোমেলো সংখ্যা তৈরি করে এবং সেটিকে JSON ফরম্যাটে অনুরোধকারীকে ফেরত পাঠায়।

ফাংশনটি HTTP প্রসেসিংয়ের জন্য Flask-এর উপর নির্ভর করে এবং আমাদের এটিকে একটি ডিপেন্ডেন্সি হিসেবে যুক্ত করতে হবে। পাইথনে ডিপেন্ডেন্সিগুলো pip দিয়ে পরিচালনা করা হয় এবং requirements.txt নামক একটি মেটাডেটা ফাইলে তা প্রকাশ করা হয়।

একই ডিরেক্টরিতে নিম্নলিখিত বিষয়বস্তু সহ একটি requirements.txt ফাইল তৈরি করুন:

flask>=1.0.2

এই কমান্ডটি ব্যবহার করে একটি HTTP ট্রিগার সহ এবং প্রমাণীকরণবিহীন অনুরোধের অনুমতি দিয়ে ফাংশনটি স্থাপন করুন:

gcloud functions deploy randomgen \
    --runtime python312 \
    --trigger-http \
    --allow-unauthenticated

ফাংশনটি ডিপ্লয় করা হয়ে গেলে, আপনি কনসোলে url প্রপার্টির অধীনে অথবা gcloud functions describe কমান্ডের মাধ্যমে ফাংশনটির URL দেখতে পাবেন।

আপনি নিম্নলিখিত curl কমান্ডটি ব্যবহার করে ফাংশনটির সেই ইউআরএল-এও যেতে পারেন:

curl $(gcloud functions describe randomgen --format='value(url)')

ফাংশনটি ওয়ার্কফ্লোর জন্য প্রস্তুত।

৫. দ্বিতীয় ক্লাউড ফাংশন স্থাপন করুন

দ্বিতীয় ফাংশনটি হলো একটি গুণক। এটি প্রাপ্ত ইনপুটকে ২ দিয়ে গুণ করে।

ফাংশন কোডের জন্য একটি ডিরেক্টরি তৈরি করুন এবং সেখানে যান:

mkdir ~/multiply
cd ~/multiply

ডিরেক্টরিতে নিম্নলিখিত বিষয়বস্তু সহ একটি main.py ফাইল তৈরি করুন:

import random, json
from flask import jsonify

def multiply(request):
    request_json = request.get_json()
    output = {"multiplied":2*request_json['input']}
    return jsonify(output)

যখন এটি একটি HTTP অনুরোধ গ্রহণ করে, তখন এই ফাংশনটি JSON বডি থেকে input বের করে, সেটিকে ২ দিয়ে গুণ করে এবং JSON ফরম্যাটে অনুরোধকারীকে ফেরত পাঠায়।

একই ডিরেক্টরিতে নিম্নলিখিত বিষয়বস্তু সহ একই requirements.txt ফাইলটি তৈরি করুন:

flask>=1.0.2

এই কমান্ডটি ব্যবহার করে একটি HTTP ট্রিগার সহ এবং প্রমাণীকরণবিহীন অনুরোধের অনুমতি দিয়ে ফাংশনটি স্থাপন করুন:

gcloud functions deploy multiply \
    --runtime python312 \
    --trigger-http \
    --allow-unauthenticated

ফাংশনটি ডিপ্লয় করা হয়ে গেলে, আপনি নিম্নলিখিত curl কমান্ডটি ব্যবহার করে ফাংশনটির সেই ইউআরএল-এও যেতে পারবেন:

curl $(gcloud functions describe multiply --format='value(url)') \
-X POST \
-H "content-type: application/json" \
-d '{"input": 5}'

ফাংশনটি ওয়ার্কফ্লোর জন্য প্রস্তুত।

৬. দুটি ক্লাউড ফাংশন সংযুক্ত করুন

প্রথম ওয়ার্কফ্লোতে, ফাংশন দুটিকে একসাথে সংযুক্ত করুন।

নিম্নলিখিত বিষয়বস্তু সহ একটি workflow.yaml ফাইল তৈরি করুন।

- randomgenFunction:
    call: http.get
    args:
        url: https://<region>-<project-id>.cloudfunctions.net/randomgen
    result: randomgenResult
- multiplyFunction:
    call: http.post
    args:
        url: https://<region>-<project-id>.cloudfunctions.net/multiply
        body:
            input: ${randomgenResult.body.random}
    result: multiplyResult
- returnResult:
    return: ${multiplyResult}

এই কার্যপ্রণালীতে, আপনি প্রথম ফাংশন থেকে একটি র‍্যান্ডম সংখ্যা নিয়ে সেটিকে দ্বিতীয় ফাংশনে পাঠান। এর ফলাফল হলো র‍্যান্ডম সংখ্যা দুটির গুণফল।

প্রথম ওয়ার্কফ্লোটি স্থাপন করুন:

gcloud workflows deploy workflow --source=workflow.yaml

প্রথম ওয়ার্কফ্লোটি সম্পাদন করুন:

gcloud workflows execute workflow

ওয়ার্কফ্লোটি এক্সিকিউট হয়ে গেলে, আগের ধাপে দেওয়া এক্সিকিউশন আইডিটি পাস করে আপনি ফলাফল দেখতে পারবেন:

gcloud workflows executions describe <your-execution-id> --workflow workflow

আউটপুটে result এবং state অন্তর্ভুক্ত থাকবে:

result: '{"body":{"multiplied":108},"code":200 ... } 

...
state: SUCCEEDED

৭. একটি বাহ্যিক HTTP API সংযুক্ত করুন

এরপরে, আপনি ওয়ার্কফ্লোতে math.js-কে একটি এক্সটার্নাল সার্ভিস হিসেবে সংযুক্ত করবেন।

math.js- এ, আপনি গাণিতিক রাশিমালা এইভাবে মূল্যায়ন করতে পারেন:

curl https://api.mathjs.org/v4/?'expr=log(56)'

এবার, আপনি আমাদের ওয়ার্কফ্লো আপডেট করার জন্য ক্লাউড কনসোল ব্যবহার করবেন। গুগল ক্লাউড কনসোলে Workflows খুঁজুন:

7608a7991b33bbb0.png

আপনার ওয়ার্কফ্লো খুঁজুন এবং Definition ট্যাবে ক্লিক করুন:

f3c8c4d3ffa49b1b.png

ওয়ার্কফ্লো ডেফিনিশনটি সম্পাদনা করুন এবং math.js কে কল করার অপশনটি অন্তর্ভুক্ত করুন।

- randomgenFunction:
    call: http.get
    args:
        url: https://<region>-<project-id>.cloudfunctions.net/randomgen
    result: randomgenResult
- multiplyFunction:
    call: http.post
    args:
        url: https://<region>-<project-id>.cloudfunctions.net/multiply
        body:
            input: ${randomgenResult.body.random}
    result: multiplyResult
- logFunction:
    call: http.get
    args:
        url: https://api.mathjs.org/v4/
        query:
            expr: ${"log(" + string(multiplyResult.body.multiplied) + ")"}
    result: logResult
- returnResult:
    return: ${logResult}

ওয়ার্কফ্লোটি এখন মাল্টিপ্লাই ফাংশনের আউটপুটকে math.js এর একটি লগ ফাংশন কলে পাঠিয়ে দেয়।

UI আপনাকে ওয়ার্কফ্লোটি সম্পাদনা এবং স্থাপন করতে নির্দেশনা দেবে। স্থাপন করা হয়ে গেলে, ওয়ার্কফ্লোটি কার্যকর করতে Execute এ ক্লিক করুন। আপনি কার্যকরকরণের বিস্তারিত বিবরণ দেখতে পাবেন:

b40c76ee43a1ce65.png

স্ট্যাটাস কোড 200 এবং লগ ফাংশনের আউটপুটসহ body লক্ষ্য করুন।

আপনি আমাদের কর্মপ্রবাহে একটি বাহ্যিক পরিষেবা যুক্ত করেছেন, দারুণ ব্যাপার!

৮. একটি ক্লাউড রান পরিষেবা স্থাপন করুন

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

Cloud Run পরিষেবাটি প্রদত্ত সংখ্যাটির math.floor মান ফেরত দেয়।

সার্ভিস কোডের জন্য একটি ডিরেক্টরি তৈরি করুন এবং সেখানে যান:

mkdir ~/floor
cd ~/floor

ডিরেক্টরিতে নিম্নলিখিত বিষয়বস্তু সহ একটি app.py ফাইল তৈরি করুন:

import json
import logging
import os
import math

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['POST'])
def handle_post():
    content = json.loads(request.data)
    input = float(content['input'])
    return f"{math.floor(input)}", 200

if __name__ != '__main__':
    # Redirect Flask logs to Gunicorn logs
    gunicorn_logger = logging.getLogger('gunicorn.error')
    app.logger.handlers = gunicorn_logger.handlers
    app.logger.setLevel(gunicorn_logger.level)
    app.logger.info('Service started...')
else:
    app.run(debug=True, host='0.0.0.0', port=int(os.environ.get('PORT', 8080)))

ক্লাউড রান কন্টেইনার ডেপ্লয় করে, তাই আপনার একটি Dockerfile প্রয়োজন এবং আপনার কন্টেইনারটিকে 0.0.0.0PORT এনভায়রনমেন্ট ভেরিয়েবলের সাথে বাইন্ড করতে হবে, এজন্যই উপরের কোডটি দেওয়া হয়েছে।

যখন এটি একটি HTTP অনুরোধ গ্রহণ করে, তখন এই ফাংশনটি JSON বডি থেকে input গ্রহণ করে, math.floor ফাংশনটিকে কল করে এবং ফলাফলটি অনুরোধকারীকে ফেরত পাঠায়।

একই ডিরেক্টরিতে, নিম্নলিখিত Dockerfile তৈরি করুন:

# Use an official lightweight Python image.
# https://hub.docker.com/_/python
FROM python:3.7-slim

# Install production dependencies.
RUN pip install Flask gunicorn

# Copy local code to the container image.
WORKDIR /app
COPY . .

# Run the web service on container startup. Here we use the gunicorn
# webserver, with one worker process and 8 threads.
# For environments with multiple CPU cores, increase the number of workers
# to be equal to the cores available.
CMD exec gunicorn --bind 0.0.0.0:8080 --workers 1 --threads 8 app:app

কন্টেইনারটি তৈরি করুন:

export SERVICE_NAME=floor
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/${SERVICE_NAME}

কন্টেইনারটি তৈরি হয়ে গেলে ক্লাউড রান-এ ডিপ্লয় করুন। no-allow-unauthenticated ফ্ল্যাগটি লক্ষ্য করুন। এটি নিশ্চিত করে যে সার্ভিসটি শুধুমাত্র অথেনটিকেটেড কল গ্রহণ করবে:

gcloud run deploy ${SERVICE_NAME} \
  --image gcr.io/${GOOGLE_CLOUD_PROJECT}/${SERVICE_NAME} \
  --platform managed \
  --no-allow-unauthenticated

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

৯. ক্লাউড রান পরিষেবাটি সংযুক্ত করুন

প্রাইভেট ক্লাউড রান সার্ভিসকে কল করার জন্য ওয়ার্কফ্লো কনফিগার করার আগে, ওয়ার্কফ্লো ব্যবহারের জন্য আপনাকে একটি সার্ভিস অ্যাকাউন্ট তৈরি করতে হবে:

export SERVICE_ACCOUNT=workflows-sa
gcloud iam service-accounts create ${SERVICE_ACCOUNT}

সার্ভিস অ্যাকাউন্টকে run.invoker রোলটি প্রদান করুন। এর ফলে সার্ভিস অ্যাকাউন্টটি অথেনটিকেটেড ক্লাউড রান সার্ভিসগুলোকে কল করতে পারবে:

gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
    --member "serviceAccount:${SERVICE_ACCOUNT}@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
    --role "roles/run.invoker"

Cloud Run সার্ভিসটি অন্তর্ভুক্ত করার জন্য workflow.yaml এ থাকা ওয়ার্কফ্লো ডেফিনিশনটি আপডেট করুন। লক্ষ্য করুন, আপনি কীভাবে auth ফিল্ডটিও অন্তর্ভুক্ত করছেন, যাতে ওয়ার্কফ্লোগুলো Cloud Run সার্ভিসে কল করার সময় অথেনটিকেশন টোকেনটি পাঠায়:

- randomgenFunction:
    call: http.get
    args:
        url: https://<region>-<project-id>.cloudfunctions.net/randomgen
    result: randomgenResult
- multiplyFunction:
    call: http.post
    args:
        url: https://<region>-<project-id>.cloudfunctions.net/multiply
        body:
            input: ${randomgenResult.body.random}
    result: multiplyResult
- logFunction:
    call: http.get
    args:
        url: https://api.mathjs.org/v4/
        query:
            expr: ${"log(" + string(multiplyResult.body.multiplied) + ")"}
    result: logResult
- floorFunction:
    call: http.post
    args:
        url: https://floor-<random-hash>.run.app
        auth:
            type: OIDC
        body:
            input: ${logResult.body}
    result: floorResult
- returnResult:
    return: ${floorResult}

ওয়ার্কফ্লো আপডেট করুন। এবার সার্ভিস-অ্যাকাউন্টটি পাস করুন:

gcloud workflows deploy workflow \
    --source=workflow.yaml \
    --service-account=${SERVICE_ACCOUNT}@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com

কার্যপ্রবাহটি সম্পাদন করুন:

gcloud workflows execute workflow

কয়েক সেকেন্ডের মধ্যেই আপনি ওয়ার্কফ্লো এক্সিকিউশন দেখে ফলাফলটি জেনে নিতে পারেন:

gcloud workflows executions describe <your-execution-id> --workflow workflow

আউটপুটে একটি পূর্ণসংখ্যা result এবং state অন্তর্ভুক্ত থাকবে:

result: '{"body":"5","code":200 ... } 

...
state: SUCCEEDED

১০. অভিনন্দন!

কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন।

আমরা যা আলোচনা করেছি

  • ওয়ার্কফ্লো-এর প্রাথমিক ধারণা।
  • পাবলিক ক্লাউড ফাংশনগুলোকে ওয়ার্কফ্লোর সাথে কীভাবে সংযুক্ত করবেন
  • প্রাইভেট ক্লাউড রান সার্ভিসগুলোকে ওয়ার্কফ্লো-এর সাথে কীভাবে সংযুক্ত করবেন।
  • ওয়ার্কফ্লোর সাথে বাহ্যিক HTTP API কীভাবে সংযুক্ত করবেন।