ক্লাউড রানের মাধ্যমে তিনটি সহজ ধাপে প্রডাক

1. ভূমিকা

কেন অ্যাপ্লিকেশন পরিচালনা করা এত কঠিন?

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

4d018476b4a73b47.png

আমি আপনার সম্পর্কে জানি না, কিন্তু এই সব জিনিস সম্পর্কে আমি চিন্তা করতে চাই না! আমি সত্যিই আমার অ্যাপ্লিকেশন যুক্তি সম্পর্কে চিন্তা করতে চাই:

6dfd143d20e5548b.png

সংক্ষেপে, এটিই হল ক্লাউড রান - যা আপনাকে আপনার অ্যাপে ফোকাস করার ক্ষমতা দেয় এবং সমস্ত প্রশাসন ও রক্ষণাবেক্ষণ অন্য কারোর হাতে ছেড়ে দেয়, যেমন Google, যারা তাদের দক্ষতা পরিমার্জন এবং নিখুঁত করার জন্য লক্ষ লক্ষ ঘন্টা বিনিয়োগ করেছে। এই ডোমেইনে

উপরে উল্লিখিত প্রশাসনিক চ্যালেঞ্জগুলি ছাড়াও, আপনাকে মোকাবেলা করতে হবে:

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

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

তুমি কি করবে...

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

যা শিখবেন...

  • পাইথনে কীভাবে একটি সাধারণ ওয়েব সার্ভার অ্যাপ তৈরি করবেন
  • যে কোনও জায়গায় চলে এমন একটি ডকার কন্টেইনারে কীভাবে আপনার অ্যাপটি প্যাকেজ করবেন
  • ক্লাউডে কীভাবে আপনার অ্যাপ স্থাপন করবেন যাতে কেউ আপনার নতুন সৃষ্টি চেষ্টা করতে পারে
  • বিল্ডপ্যাকগুলি ব্যবহার করে কীভাবে উপরের পদক্ষেপগুলি আরও সহজ করা যায়
  • গুগল ক্লাউড কমান্ড লাইন টুল এবং ক্লাউড কনসোল ওয়েব UI কীভাবে ব্যবহার করবেন

আপনার যা লাগবে...

  • একটি ওয়েব ব্রাউজার
  • একটি Google অ্যাকাউন্ট

এই ল্যাবটি নতুনদের সহ সকল স্তরের বিকাশকারীদের লক্ষ্য করে। যদিও আপনি পাইথন ব্যবহার করবেন, তবে কী ঘটছে তা বোঝার জন্য আপনাকে পাইথন প্রোগ্রামিংয়ের সাথে পরিচিত হওয়ার দরকার নেই কারণ আমরা আপনার ব্যবহার করা সমস্ত কোড ব্যাখ্যা করব।

2. সেট আপ করুন

5110b5081a1e1c49.png

এই বিভাগটি এই ল্যাবের সাথে শুরু করার জন্য আপনাকে যা করতে হবে তা কভার করে।

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

  1. এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷

এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

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

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

704a7b7491bd157.png

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন 4292cbf4971c9786.png .

bce75f34b2c53987.png

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

70f315d7b402b476.png

ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷

fbe3a0674c982259.png

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

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

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud কমান্ড আপনার প্রকল্প সম্পর্কে জানে তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

আপনার টার্মিনালে কিছু পরিবেশের ভেরিয়েবল সেট করুন যা পরবর্তী ধাপে জীবনকে সহজ করে তুলবে:

export PROJ=$GOOGLE_CLOUD_PROJECT 
export APP=hello 
export PORT=8080
export REGION="us-central1"
export TAG="gcr.io/$PROJ/$APP"

APIs সক্রিয় করুন

পরবর্তী ধাপে, আপনি দেখতে পাবেন কোথায় এই পরিষেবাগুলির প্রয়োজন (এবং কেন), কিন্তু আপাতত, আপনার প্রকল্পকে ক্লাউড বিল্ড, কন্টেইনার রেজিস্ট্রি এবং ক্লাউড রান পরিষেবাগুলিতে অ্যাক্সেস দিতে এই কমান্ডটি চালান:

gcloud services enable cloudbuild.googleapis.com         \
                       containerregistry.googleapis.com  \
                       run.googleapis.com          

এটির অনুরূপ একটি সফল বার্তা তৈরি করা উচিত:

Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.

3. একটি সাধারণ ওয়েব অ্যাপ তৈরি করুন৷

eef530b56b8e93a3.png

আপনার ক্লাউড শেল প্যানেলের শীর্ষে Open Editor বোতামে ক্লিক করে শুরু করুন। এটি এই মত দেখায়:

9b81c8a37a6bcdd8.png

তারপরে আপনি ভিজ্যুয়াল স্টুডিও কোডের মতো একটি IDE পরিবেশে নিজেকে খুঁজে পাবেন, যেখানে আপনি প্রকল্প তৈরি করতে পারেন, সোর্স কোড সম্পাদনা করতে পারেন, আপনার প্রোগ্রামগুলি চালাতে পারেন ইত্যাদি৷ যদি আপনার স্ক্রীনটি খুব সঙ্কুচিত হয় তবে আপনি বিভাজন রেখাটি প্রসারিত বা সঙ্কুচিত করতে পারেন কনসোল এবং আপনার সম্পাদনা/টার্মিনাল উইন্ডোটি এই দুটি অঞ্চলের মধ্যে অনুভূমিক বারটি টেনে এনে, এখানে হাইলাইট করা হয়েছে:

8dea35450851af53.png

আপনি যথাক্রমে Open Editor এবং Open Terminal বোতামে ক্লিক করে এডিটর এবং টার্মিনালের মধ্যে পিছনে পিছনে যেতে পারেন। এখন এই দুটি পরিবেশের মধ্যে সামনে পিছনে সুইচ করার চেষ্টা করুন।

এরপরে, এই ল্যাবের জন্য আপনার কাজ সংরক্ষণ করার জন্য একটি ফোল্ডার তৈরি করুন, ফাইল->নতুন ফোল্ডার নির্বাচন করে, hello লিখুন এবং OK ক্লিক করুন। আপনি এই ল্যাবে যে সমস্ত ফাইল তৈরি করেন এবং ক্লাউড শেল-এ আপনি যে সমস্ত কাজ করেন তার সমস্তই এই ফোল্ডারে স্থান পাবে৷

এখন একটি requirements.txt ফাইল তৈরি করুন। এটি পাইথনকে বলে যে আপনার অ্যাপ কোন লাইব্রেরির উপর নির্ভর করে। এই সাধারণ ওয়েব অ্যাপের জন্য, আপনি Flask নামে একটি ওয়েব সার্ভার এবং gunicorn নামে একটি ওয়েব সার্ভার ফ্রেমওয়ার্ক তৈরির জন্য একটি জনপ্রিয় পাইথন মডিউল ব্যবহার করতে যাচ্ছেন। ক্লাউড এডিটর উইন্ডোতে, একটি নতুন ফাইল তৈরি করতে ফাইল->নতুন ফাইল মেনুতে ক্লিক করুন। নতুন ফাইলের নামের জন্য অনুরোধ করা হলে, requirements.txt লিখুন এবং OK বোতাম টিপুন। নিশ্চিত করুন যে নতুন ফাইলটি hello প্রকল্প ফোল্ডারে শেষ হয়েছে।

আপনার অ্যাপটি Python Flask প্যাকেজ এবং gunicorn ওয়েব সার্ভারের উপর নির্ভর করে তা নির্দিষ্ট করতে নতুন ফাইলে নিম্নলিখিত লাইনগুলি লিখুন৷

Flask
gunicorn

আপনার এই ফাইলটি স্পষ্টভাবে সংরক্ষণ করার দরকার নেই কারণ ক্লাউড এডিটর আপনার জন্য পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে সংরক্ষণ করবে৷

সংস্করণ 1: হ্যালো বিশ্ব!

একই কৌশল ব্যবহার করে, main.py নামে আরেকটি নতুন ফাইল তৈরি করুন। এটি আপনার অ্যাপের প্রধান (এবং শুধুমাত্র) পাইথন সোর্স ফাইল হবে। আবার, নিশ্চিত করুন যে নতুন ফাইলটি hello প্রকল্প ফোল্ডারে শেষ হয়েছে।

এই ফাইলে নিম্নলিখিত কোড সন্নিবেশ করান:

from flask import Flask
import os
import random

app = Flask(__name__)  # Create a Flask object.
PORT = os.environ.get("PORT")  # Get PORT setting from the environment.

# The app.route decorator routes any GET requests sent to the root path
# to this function, which responds with a "Hello world!" HTML document.
@app.route("/", methods=["GET"])
def say_hello():
    html = "<h1>Hello world!</h1>"
    return html


# This code ensures that your Flask app is started and listens for
# incoming connections on the local interface and port 8080.
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=PORT)

টার্মিনালে ফিরে যান এবং এই কমান্ডটি দিয়ে প্রকল্প ফোল্ডারে পরিবর্তন করুন:

cd hello

আপনার প্রকল্প নির্ভরতা ইনস্টল করতে নিম্নলিখিত কমান্ড চালান:

pip3 install -r requirements.txt

এখন টার্মিনালে এই কমান্ডটি চালিয়ে আপনার অ্যাপ চালু করুন:

python3 main.py

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

web preview বোতামে ক্লিক করুন এবং তারপরে Preview on Port 8080 এইভাবে ক্লিক করুন:

fe45e0192080efd6.png

এটি আপনার চলমান অ্যাপে একটি ওয়েব ব্রাউজার ট্যাব খুলবে, যা এইরকম দেখতে হবে:

b1f06501509aefb9.png

সংস্করণ 2: URL পাথের প্রতিধ্বনি

ক্লাউড এডিটরে ফিরে যান ( Open Editor বোতামের মাধ্যমে) এবং আপনার main.py ফাইলটি নিম্নরূপ আপডেট করে একটি ঐচ্ছিক URL প্রত্যয় প্রতিধ্বনিত করার জন্য সমর্থন যোগ করুন:

from flask import Flask
import os
import random

app = Flask(__name__)  # Create a Flask object.
PORT = os.environ.get("PORT")  # Get PORT setting from environment.

# The app.route decorator routes any GET requests sent to the root path
# to this function, which responds with a "Hello world!" HTML document.
# If something is specified as the URL path (after the '/'), say_hello()
# responds with "Hello X", where X is the string at the end of the URL.
@app.route("/", methods=["GET"])
@app.route("/<name>", methods=["GET"])     # ← NEW
def say_hello(name="world"):               # ← MODIFIED
    html = f"<h1>Hello {name}!</h1>"       # ← MODIFIED
    return html


# This code ensures that your Flask app is started and listens for
# incoming connections on the local interface and port 8080.
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=PORT)

টার্মিনালে ফিরে যান ( Open Terminal বোতামের মাধ্যমে) এবং আপনার চলমান অ্যাপটি বন্ধ করতে control-C লিখুন ('C' টিপে কন্ট্রোল কী ধরে রাখুন) এবং তারপরে প্রবেশ করে এটি পুনরায় চালু করুন:

python3 main.py

আবার, web preview বোতামে ক্লিক করুন এবং তারপর আপনার চলমান অ্যাপে একটি ওয়েব ব্রাউজার ট্যাব খুলতে Preview on Port 8080 ক্লিক করুন। আপনার আবার দেখা উচিত "হ্যালো ওয়ার্ল্ড!" বার্তা কিন্তু এখন আপনার পছন্দের যেকোন স্ট্রিং (যেমন /your-name ) দিয়ে স্ল্যাশ অক্ষর অনুসরণ করে URL টেক্সট প্রতিস্থাপন করুন এবং যাচাই করুন যে আপনি এরকম কিছু দেখতে পাচ্ছেন:

93b87996f88fa370.png

সংস্করণ 3: এলোমেলো রং

এখন, ক্লাউড এডিটরে ফিরে এসে ( Open Editor বোতামের মাধ্যমে) এবং আপনার main.py ফাইলটি নিম্নরূপ আপডেট করে এলোমেলো পটভূমির রঙের জন্য সমর্থন যোগ করুন:

from flask import Flask
import os
import random

app = Flask(__name__)  # Create a Flask object.
PORT = os.environ.get("PORT")  # Get PORT setting from the environment.

# This function decides whether foreground text should be
# displayed in black or white, to maximize fg/bg contrast.
def set_text_color(rgb):                      # ← NEW
    sum = round(                              # ← NEW
        (int(rgb[0]) * 0.299)                 # ← NEW
        + (int(rgb[1]) * 0.587)               # ← NEW
        + (int(rgb[2]) * 0.114)               # ← NEW
    )                                         # ← NEW
    return "black" if sum > 186 else "white"  # ← NEW


# The app.route decorator routes any GET requests sent to the root path
# to this function, which responds with a "Hello world!" HTML document.
# If something is specified as the URL path (after the '/'), say_hello()
# responds with "Hello X", where X is the string at the end of the URL.
# To verify each new invocation of these requests, the HTML document
# includes CSS styling to produce a randomly colored background.
@app.route("/", methods=["GET"])
@app.route("/<name>", methods=["GET"])
def say_hello(name="world"):
    bg = random.sample(range(1, 255), 3)                       # ← NEW
    hex = (int(bg[0]) * 256) + (int(bg[1]) * 16) + int(bg[2])  # ← NEW
    fg_color = set_text_color(bg)                              # ← NEW
    bg_color = f"#{hex:06x}"                                   # ← NEW
    style = f"color:{fg_color}; background-color:{bg_color}"   # ← NEW
    html = f'<h1 style="{style}">Hello {name}!</h1>'           # ← MODIFIED
    return html


# This code ensures that your Flask app is started and listens for
# incoming connections on the local interface and port 8080.
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=PORT)

টার্মিনালে ফিরে যান ( Open Terminal বোতামের মাধ্যমে) এবং আপনার চলমান অ্যাপটি বন্ধ করতে control-C লিখুন ('C' টিপে কন্ট্রোল কী ধরে রাখুন) এবং তারপরে প্রবেশ করে এটি পুনরায় চালু করুন:

python3 main.py

আবার, web preview বোতামে ক্লিক করুন এবং তারপর আপনার চলমান অ্যাপে একটি ওয়েব ব্রাউজার ট্যাব খুলতে Preview on Port 8080 ক্লিক করুন। আপনি যে কোনো নির্দিষ্ট প্রত্যয় বা ডিফল্ট "হ্যালো ওয়ার্ল্ড!" সহ জেনারেট করা পাঠ্য দেখতে পাবেন। স্ট্রিং, একটি এলোমেলোভাবে রঙিন ব্যাকগ্রাউন্ডের সামনে প্রদর্শিত হয়, যেমন:

baf8d028f15ea7f4.png

আপনি প্রতিবার অ্যাপটি দেখার সময় র্যান্ডম ব্যাকগ্রাউন্ডের রঙ পরিবর্তিত হয় তা দেখতে কয়েকবার পৃষ্ঠাটি পুনরায় লোড করুন৷

এবং এর সাথে, আপনার অ্যাপটি সম্পন্ন হয়েছে - অভিনন্দন! পরবর্তী ধাপে, আপনি শিখবেন কীভাবে আপনার অ্যাপটিকে একটি পাত্রে প্যাকেজ করতে হয় এবং কেন এটি একটি দরকারী জিনিস।

4. আপনার অ্যাপ কন্টেইনারাইজ করুন

17cc234ec3325a8a.png

একটি ধারক কি?

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

নির্ভরতার কথা বলতে গেলে, পূর্ববর্তী ধাপে, আপনি যখন একটি বিকাশকারী পরিবেশে আপনার অ্যাপটি চালাচ্ছিলেন, তখন আপনাকে pip3 install -r requirements.txt চালাতে হবে, এবং নিশ্চিত করতে হবে যে requirements.txt ফাইলটিতে আপনার সমস্ত নির্ভরশীল লাইব্রেরি এবং সংশ্লিষ্ট সংস্করণ রয়েছে। কন্টেইনারগুলির সাথে, আপনি যখন কন্টেইনার ইমেজ তৈরি করেন তখন আপনি সেই প্রয়োজনীয়তাগুলি ইনস্টল করেন, তাই কনটেইনারের ভোক্তাদের কিছু ইনস্টল করার বিষয়ে চিন্তা করার দরকার নেই

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

পাত্রে আপনার অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে:

  • প্রজননযোগ্য - পাত্রগুলি স্বয়ংসম্পূর্ণ এবং সম্পূর্ণ
  • পোর্টেবল - কন্টেইনারগুলি ক্রস-ইন্ডাস্ট্রি বিল্ডিং ব্লক, যা ক্লাউড প্রদানকারী এবং পরিবেশ জুড়ে অ্যাপ্লিকেশন বহনযোগ্যতা সক্ষম করে

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

যথেষ্ট কথা - আসুন একটি ধারক তৈরি করা যাক! আপনি ডকার নামক একটি ধারক তৈরির জন্য একটি নির্দিষ্ট প্রযুক্তি ব্যবহার করতে যাচ্ছেন।

ক্লাউড এডিটরে, Dockerfile নামে একটি নতুন ফাইল তৈরি করুন। এই ফাইলটি আপনার ছবি নির্মাণের জন্য একটি নীলনকশা। এটি ডকারকে আপনার অপারেটিং এনভায়রনমেন্ট এবং আপনার সোর্স কোড, কীভাবে আপনার নির্ভরতা ইনস্টল করবেন, আপনার অ্যাপ তৈরি করবেন এবং আপনার কোড চালাবেন সে সম্পর্কে বলে।

# Use an official lightweight Python image.
FROM python:3.9-slim

# Copy local code to the container image.
WORKDIR /app
COPY main.py .
COPY requirements.txt .

# Install dependencies into this container so there's no need to 
# install anything at container run time.
RUN pip install -r requirements.txt

# Service must listen to $PORT environment variable.
# This default value facilitates local development.
ENV PORT 8080

# Run the web service on container startup. Here you use the gunicorn
# server, with one worker process and 8 threads. For environments 
# with multiple CPU cores, increase the number of workers to match 
# the number of cores available.
CMD exec gunicorn --bind 0.0.0.0:$PORT --workers 1 --threads 8 --timeout 0 main:app

ক্লাউড টার্মিনালে, নিম্নলিখিত কমান্ডটি চালিয়ে ক্লাউড বিল্ড ব্যবহার করে আপনার কন্টেইনার ইমেজ তৈরি করুন:

gcloud builds submit --tag $TAG

একবার রেজিস্ট্রিতে পুশ করা হলে, আপনি ছবির নাম সহ একটি SUCCESS বার্তা দেখতে পাবেন, যা দেখতে এইরকম হওয়া উচিত: gcr.io/<project-id>/hello /hello। ছবিটি এখন Google কন্টেইনার রেজিস্ট্রিতে সংরক্ষণ করা হয়েছে এবং আপনি যখনই এবং যেখানে খুশি পুনরায় ব্যবহার করা যেতে পারে৷

আপনি এই কমান্ডটি ব্যবহার করে আপনার বর্তমান প্রকল্পের সাথে যুক্ত সমস্ত ধারক চিত্রগুলি তালিকাভুক্ত করতে পারেন:

gcloud container images list

এখন এই docker কমান্ডগুলি ব্যবহার করে ক্লাউড শেল থেকে স্থানীয়ভাবে অ্যাপ্লিকেশনটি চালান এবং পরীক্ষা করুন:

docker run -p $PORT:$PORT -e PORT=$PORT $TAG

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

-e PORT=$PORT বিকল্পটি ডকারকে $PORT এনভায়রনমেন্ট ভেরিয়েবল (উপরে 8080 এ সেট করা) কন্টেইনারের ভিতরে চলমান আপনার অ্যাপের জন্য উপলব্ধ করতে বলে।

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

ফলাফলটি পরিচিত দেখা উচিত - আপনি একটি এলোমেলোভাবে রঙিন ব্যাকগ্রাউন্ডের সামনে জেনারেট করা পাঠ্য দেখতে পাবেন, ঠিক যেমনটি আপনি যখন সরাসরি আপনার ক্লাউড শেল টার্মিনালে অ্যাপটি চালান। আপনি প্রতিবার অ্যাপটি দেখার সময় র্যান্ডম ব্যাকগ্রাউন্ডের রঙ পরিবর্তিত হয় তা দেখতে কয়েকবার পৃষ্ঠাটি পুনরায় লোড করুন৷

অভিনন্দন! আপনি এখন আপনার অ্যাপের একটি কন্টেইনারাইজড সংস্করণ চালাচ্ছেন। পরবর্তী বিভাগে, কোডের একটি লাইন স্পর্শ না করে, আপনি আপনার কন্টেইনার ইমেজটিকে একটি প্রোডাকশন মানের ওয়েব অ্যাপে পরিণত করবেন।

5. মেঘের কাছে...

1b0665d94750ded6.gif

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

  • নির্ভরযোগ্যভাবে চলে - আপনার অ্যাপ ক্র্যাশ করে চলমান কম্পিউটারের ক্ষেত্রে আপনি স্বয়ংক্রিয় ত্রুটি সহনশীলতা পাবেন
  • স্বয়ংক্রিয়ভাবে স্কেল করে - আপনার অ্যাপ ট্র্যাফিকের বিশাল স্তরের সাথে বজায় রাখবে এবং অব্যবহৃত হলে স্বয়ংক্রিয়ভাবে এর পদচিহ্ন কমিয়ে দেবে
  • আপনি যে সংস্থানগুলি ব্যবহার করছেন না তার জন্য আপনাকে চার্জ না করে আপনার খরচ কমিয়ে দেয় - ট্র্যাফিকের প্রতিক্রিয়া করার সময় আপনি যে সংস্থানগুলি ব্যবহার করেন তার জন্য আপনাকে চার্জ করা হয়
  • একটি কাস্টম ডোমেন নামের মাধ্যমে অ্যাক্সেসযোগ্য - আপনার পরিষেবাতে একটি কাস্টম ডোমেন নাম বরাদ্দ করার জন্য আপনার কাছে এক-ক্লিক সমাধানে অ্যাক্সেস রয়েছে
  • চমৎকার প্রতিক্রিয়া সময় অফার করে - ঠান্ডা শুরু যুক্তিসঙ্গতভাবে প্রতিক্রিয়াশীল কিন্তু আপনি একটি ন্যূনতম দৃষ্টান্ত কনফিগারেশন নির্দিষ্ট করে এটি ঠিক করতে পারেন
  • স্ট্যান্ডার্ড SSL/TLS ওয়েব নিরাপত্তা ব্যবহার করে এন্ড-টু-এন্ড এনক্রিপশন সমর্থন করে - যখন আপনি একটি পরিষেবা স্থাপন করেন, আপনি স্ট্যান্ডার্ড ওয়েব এনক্রিপশন এবং সংশ্লিষ্ট প্রয়োজনীয় শংসাপত্রগুলি বিনামূল্যে এবং স্বয়ংক্রিয়ভাবে পান

Google ক্লাউড রানে আপনার অ্যাপ স্থাপন করে, আপনি উপরের সমস্ত এবং আরও অনেক কিছু পাবেন।

ক্লাউড রানে আপনার অ্যাপ স্থাপন করুন

প্রথমে, আসুন আপনার অ্যাপটি সংশোধন করি যাতে আপনি পুরানোটির থেকে নতুন সংশোধন বলতে সক্ষম হবেন৷ main.py ফাইলটি পরিবর্তন করে এটি করুন যাতে ডিফল্ট বার্তা "হ্যালো ওয়ার্ল্ড!" থেকে পরিবর্তিত হয়। "ক্লাউড রান থেকে হ্যালো!"। অন্য কথায়, এই লাইনটি main.py থেকে পরিবর্তন করুন:

def say_hello(name="world"):

এর প্রতি:

def say_hello(name="from Cloud Run"):

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

আপনার কন্টেইনার ইমেজ পুনর্নির্মাণ করুন এবং নিম্নলিখিত কমান্ডের সাহায্যে আপনার কন্টেইনারাইজড অ্যাপ্লিকেশনটি ক্লাউড রানে স্থাপন করুন:

gcloud builds submit --tag $TAG
gcloud run deploy "$APP"   \
  --image "$TAG"           \
  --platform "managed"     \
  --region "$REGION"       \
  --allow-unauthenticated
  • আপনি gcloud config set run/region $REGION সহ একটি ডিফল্ট অঞ্চল সংজ্ঞায়িত করতে পারেন।
  • --allow-unauthenticated বিকল্পটি পরিষেবাটিকে সর্বজনীনভাবে উপলব্ধ করে। অননুমোদিত অনুরোধ এড়াতে, পরিবর্তে --no-allow-unauthenticated ব্যবহার করুন।

এখানে নির্দিষ্ট করা ছবি হল ডকার ইমেজ যা আপনি শেষ ধাপে তৈরি করেছেন। ক্লাউড বিল্ড পরিষেবাকে ধন্যবাদ, যা Google কন্টেইনার রেজিস্ট্রিতে ফলাফলের চিত্র সংরক্ষণ করে, ক্লাউড রান পরিষেবা এটি খুঁজে পেতে এবং আপনার জন্য এটি স্থাপন করতে পারে৷

স্থাপনা সম্পূর্ণ না হওয়া পর্যন্ত কয়েক মুহূর্ত অপেক্ষা করুন। সফল হলে, কমান্ড লাইন পরিষেবা URL প্রদর্শন করে:

Deploying container to Cloud Run service [hello] in project [PROJECT_ID...
✓ Deploying new service... Done.                                   
  ✓ Creating Revision... Revision deployment finished. Waiting for health check...
  ✓ Routing traffic...
  ✓ Setting IAM Policy...
Done.
Service [hello] revision [hello-...] has been deployed and is serving 100 percent of traffic.
Service URL: https://hello-....a.run.app

আপনি এই কমান্ড দিয়ে আপনার পরিষেবা URL পুনরুদ্ধার করতে পারেন:

gcloud run services describe hello  \
  --platform managed                \
  --region $REGION                  \
  --format "value(status.url)"

এটি এমন কিছু প্রদর্শন করা উচিত:

https://hello-....a.run.app

এই লিঙ্কটি আপনার ক্লাউড রান পরিষেবার জন্য TLS নিরাপত্তা সহ একটি ডেডিকেটেড URL৷ এই লিঙ্কটি স্থায়ী (যতক্ষণ না আপনি আপনার পরিষেবা অক্ষম করেন) এবং ইন্টারনেটে যে কোনও জায়গায় ব্যবহারযোগ্য৷ এটি পূর্বে উল্লিখিত ক্লাউড শেলের প্রক্সি মেকানিজম ব্যবহার করে না, যা একটি ক্ষণস্থায়ী ভার্চুয়াল মেশিনের উপর নির্ভর করে।

আপনার চলমান অ্যাপে একটি ওয়েব ব্রাউজার ট্যাব খুলতে হাইলাইট করা Service URL এ ক্লিক করুন। ফলাফলটি আপনার "হ্যালো ফ্রম ক্লাউড রান!" এলোমেলোভাবে রঙিন পটভূমির সামনে বার্তা।

অভিনন্দন! আপনার অ্যাপ এখন Google এর ক্লাউডে চলছে। এটি সম্পর্কে চিন্তা না করেই, আপনার অ্যাপটি সর্বজনীনভাবে উপলব্ধ, TLS (HTTPS) এনক্রিপশন সহ, এবং স্বয়ংক্রিয়ভাবে ট্র্যাফিকের মানসিক বিভ্রান্তিকর মাত্রায় স্কেলিং।

কিন্তু আমি মনে করি এই প্রক্রিয়াটি আরও সহজ হতে পারে ...

6. স্বয়ংক্রিয়ভাবে ধারক তৈরি করুন

এই সব চমত্কার চমৎকার, কিন্তু আমি যদি Dockerfiles এবং পাত্রে সম্পর্কে চিন্তা করতে চাই না কি হবে. কি হবে যদি, অধিকাংশ ডেভেলপারদের মত, আমি শুধু আমার অ্যাপ্লিকেশন কোড লেখার উপর ফোকাস করতে চাই এবং অন্য কাউকে এটি কন্টেইনারাইজ করার বিষয়ে উদ্বিগ্ন হতে চাই। ঠিক আছে, আপনি ভাগ্যবান কারণ ক্লাউড রান Buildpacks নামক একটি ওপেন সোর্স স্ট্যান্ডার্ড সমর্থন করে, যা এই কারণেই বিদ্যমান: উৎস ফাইলের সংগ্রহ থেকে একটি ধারক তৈরির প্রক্রিয়া স্বয়ংক্রিয় করতে।

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

প্রথমে, আসুন আপনার অ্যাপটি সংশোধন করি যাতে আপনি পুরানোটির থেকে নতুন সংশোধন বলতে সক্ষম হবেন৷ main.py ফাইলটি পরিবর্তন করে এটি করুন যাতে ডিফল্ট বার্তা "হ্যালো ফ্রম ক্লাউড রান!" থেকে পরিবর্তিত হয়। "হ্যালো ফ্রম ক্লাউড রান উইথ বিল্ডপ্যাকস!"। অন্য কথায়, এই লাইনটি main.py থেকে পরিবর্তন করুন:

def say_hello(name="from Cloud Run"):

এর প্রতি:

def say_hello(name="from Cloud Run with Buildpacks"):

এখন Procfile নামে একটি নতুন ফাইল তৈরি করে বিল্ডপ্যাকগুলির সুবিধা নেওয়া যাক। এগিয়ে যান এবং ক্লাউড এডিটরে সেই ফাইলটি তৈরি করুন এবং পাঠ্যের এই একটি লাইন সন্নিবেশ করুন:

web: python3 main.py

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

gcloud beta run deploy "$APP"  \
    --source .                 \
    --platform "managed"       \
    --region "$REGION"         \
    --allow-unauthenticated

এটি শেষ ধাপে আপনার অ্যাপ স্থাপন করার জন্য যে কমান্ড দিয়েছিলেন তার অনুরূপ কিন্তু এবার আপনি --image বিকল্পটি --source . বিকল্প এটি gcloud কমান্ডকে বলে যে আপনি এটিকে আপনার কন্টেইনার ইমেজ তৈরি করতে বিল্ডপ্যাক ব্যবহার করতে চান, এটি বর্তমান ডিরেক্টরিতে পাওয়া সোর্স ফাইলগুলির উপর ভিত্তি করে ( --source .dot বর্তমান ডিরেক্টরির জন্য সংক্ষিপ্ত বিবরণ)। যেহেতু পরিষেবাটি কনটেইনার ইমেজটি স্পষ্টভাবে যত্ন নেয়, আপনাকে এই gcloud কমান্ডে একটি চিত্র নির্দিষ্ট করতে হবে না।

আবারও, আপনার চলমান অ্যাপে একটি ওয়েব ব্রাউজার ট্যাব খুলতে হাইলাইট করা Service URL এ ক্লিক করে এই স্থাপনার কাজটি যাচাই করুন এবং নিশ্চিত করুন যে আপনার পরিষেবা "Hello from Cloud Run with Buildpacks!" এলোমেলোভাবে রঙিন পটভূমির সামনে।

লক্ষ্য করুন যে আপনার Dockerfile তৈরি করতে বিল্ডপ্যাকগুলি ব্যবহার করে, আপনি মূলত তিনটি সহজ পদক্ষেপ দুটিতে হ্রাস করেছেন:

  1. আপনার উন্নয়ন পরিবেশে একটি অ্যাপ তৈরি করুন।
  2. একটি কমান্ড দিয়ে ক্লাউডে ঠিক একই কোড স্থাপন করুন।

7. আমাকে কি কমান্ড লাইন ব্যবহার করতে হবে?

না! প্রায় প্রতিটি Google ক্লাউড পরিষেবার মতো, ক্লাউড রানের সাথে ইন্টারঅ্যাক্ট করার তিনটি উপায় রয়েছে:

  • gcloud কমান্ড লাইন টুল, যা আপনি সবেমাত্র দেখেছেন।
  • একটি সমৃদ্ধ ওয়েব ব্যবহারকারী ইন্টারফেস, ক্লাউড কনসোলের মাধ্যমে, যা একটি স্বজ্ঞাত পয়েন্ট এবং ক্লিক ইন্টারঅ্যাকশন শৈলী সমর্থন করে।
  • প্রোগ্রামগতভাবে, Java, C#, Python, Go, Javascript, Ruby, C/C++ এবং অন্যান্য সহ অনেক জনপ্রিয় ভাষার জন্য উপলব্ধ Google ক্লায়েন্ট লাইব্রেরি ব্যবহার করে।

কনসোল UI ব্যবহার করে আপনার ক্লাউড রান অ্যাপের একটি অতিরিক্ত উদাহরণ স্থাপন করা যাক। উপরের বাম মেনুর মাধ্যমে ক্লাউড রান সার্ভিস ল্যান্ডিং পৃষ্ঠাতে নেভিগেট করুন:

e2b4983b38c81796.png

তারপরে আপনার ক্লাউড রান পরিষেবাগুলির একটি সারাংশ দেখতে হবে, যেমন:

b335e7bf0a3af845.png

স্থাপনা প্রক্রিয়া শুরু করতে "পরিষেবা তৈরি করুন" লিঙ্কে ক্লিক করুন:

51f61a8ddc7a4c0b.png

পরিষেবার নাম হিসাবে "হ্যালো-আগেন" লিখুন, ডিফল্ট স্থাপনার প্ল্যাটফর্ম এবং অঞ্চল নিন এবং "পরবর্তী" ক্লিক করুন।

8a17baa45336c4c9.png

ধারক চিত্রের জন্য এই URLটি লিখুন: gcr.io/cloudrun/hello , যা পরীক্ষার উদ্দেশ্যে Google দ্বারা তৈরি একটি ধারক, এবং আপনার জন্য উপলব্ধ অনেকগুলি কনফিগারেশন সেটিংস দেখতে "উন্নত সেটিংস" ড্রপ-ডাউনে ক্লিক করুন৷ শুধুমাত্র কয়েকটি নির্দেশ করতে আপনি কাস্টমাইজ করতে পারেন:

  • পোর্ট নম্বর এবং কন্টেইনার এন্ট্রি পয়েন্ট (যা কনটেইনার তৈরি করার সময় নির্দিষ্ট করা এন্ট্রি পয়েন্টকে ওভাররাইড করবে)
  • হার্ডওয়্যার: মেমরি এবং CPU এর সংখ্যা
  • স্কেলিং: সর্বনিম্ন এবং সর্বোচ্চ দৃষ্টান্ত
  • পরিবেশ ভেরিয়েবল
  • অন্যান্য: অনুরোধ টাইমআউট সেটিং, কন্টেইনার প্রতি অনুরোধের সর্বোচ্চ সংখ্যা, HTTP/2

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

e78281d1cff3418.png

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

এখন আপনার ক্লাউড রান পরিষেবা তৈরি করতে Create বোতামে ক্লিক করুন। কয়েক সেকেন্ড পরে, আপনি দেখতে পাবেন আপনার নতুন পরিষেবা আপনার ক্লাউড রান পরিষেবাগুলির সারাংশ তালিকায় উপস্থিত হবে৷ সারাংশ লাইন কিছু মূল কনফিগারেশন সেটিংস বরাবর সাম্প্রতিক স্থাপনা (তারিখ/সময় এবং কার দ্বারা) প্রদান করে। আপনার নতুন পরিষেবা সম্পর্কে বিস্তারিত জানার জন্য পরিষেবার নামের লিঙ্কে ক্লিক করুন৷

আপনার পরিষেবা যাচাই করতে, নীচের উদাহরণে হাইলাইট করা সারাংশ পৃষ্ঠার শীর্ষের কাছে দেখানো URL-এ ক্লিক করুন:

6c35cf0636dddc51.png

আপনি এই মত কিছু দেখতে হবে:

3ba6ab4fe0da1f84.png

এখন আপনি একটি নতুন ক্লাউড রান পরিষেবা স্থাপন করেছেন, একাধিক স্থাপনা পরিচালনা করার কিছু উপায় দেখতে REVISIONS ট্যাবটি নির্বাচন করুন৷

2351ee7ec4a356f0.png

কনসোল থেকে সরাসরি নতুন সংশোধন স্থাপন করতে, আপনি EDIT & DEPLOY NEW REVISION বোতামে ক্লিক করতে পারেন, যেমন নীচের স্ক্রিনশটের উদাহরণে হাইলাইট করা হয়েছে:

a599fa88d00d6776.png

একটি নতুন সংশোধন তৈরি করতে এখন সেই বোতামটি ক্লিক করুন৷ কন্টেইনার URL-এর কাছে, নীচে দেখানো হিসাবে, SELECT বোতামে ক্লিক করুন:

5fd1b1f8e1f11d40.png

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

gcr.io/<project>/cloud-run-source-deploy

ফোল্ডার , এই মত:

8a756c6157face3a.png

একবার নির্বাচিত হলে, নীচে স্ক্রোল করুন এবং DEPLOY বোতামে ক্লিক করুন। আপনি এখন আপনার অ্যাপের একটি নতুন সংশোধন স্থাপন করেছেন৷ যাচাই করতে, আবার আপনার পরিষেবার URL-এ যান এবং যাচাই করুন যে আপনি এখন আপনার রঙিন "Hello from Cloud Run with Buildpacks!" ওয়েব অ্যাপ।

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

MANAGE TRAFFIC বোতামটি আপনাকে একটি প্রদত্ত রিভিশনে পাঠানো আগত অনুরোধের বন্টন পরিবর্তন করতে সক্ষম করে। প্রদত্ত রিভিশনে কতটা ট্রাফিক পাঠানো হয়েছে তা ঠিক করার এই ক্ষমতাটি বেশ কিছু মূল্যবান ব্যবহারের ক্ষেত্রে সক্ষম করে:

  • ক্যানারি ইনকামিং ট্রাফিকের একটি ছোট অংশের সাথে আপনার অ্যাপের একটি নতুন সংস্করণ পরীক্ষা করছে
  • সমস্যাযুক্ত রিলিজ থেকে আগের রিভিশনে ট্রাফিক ফিরিয়ে আনুন
  • A/B পরীক্ষা

এখানে MANAGE TRAFFIC বোতামটি খুঁজুন:

519d3c22ae028287.png

এইভাবে একটি 50/50 ট্রাফিক বিভাজন নির্দিষ্ট করে আপনার দুটি সংশোধনের মধ্যে একটি 50/50 ট্রাফিক বিভাজন কনফিগার করুন:

8c37d4f115d9ded4.png

এখন সেভ বোতামে ক্লিক করুন এবং বারবার আপনার পরিষেবার URL পরিদর্শন করে 50/50 বিভক্ত যাচাই করুন এবং পরীক্ষা করুন যে, গড়ে আপনার অর্ধেক অনুরোধ বর্তমান সংশোধন ("Hello from Cloud Run with Buildpacks!") দ্বারা পরিবেশিত হয়েছে এবং অর্ধেক পরিবেশিত হয়েছে৷ পূর্ববর্তী সংশোধন দ্বারা ("এটি চলছে!")।

পরিষেবার বিবরণ পৃষ্ঠার অন্যান্য ট্যাবগুলি কর্মক্ষমতা, ট্র্যাফিক এবং লগগুলি নিরীক্ষণ করার ক্ষমতা প্রদান করে, যা আপনার পরিষেবা কতটা কঠোর এবং কতটা ভাল কাজ করছে সে সম্পর্কে মূল্যবান অন্তর্দৃষ্টি প্রদান করে৷ আপনার "অনুমতি" ট্যাবের মাধ্যমে আপনার পরিষেবাতে অ্যাক্সেস টিউন করার ক্ষমতাও রয়েছে৷ এখানে উপলব্ধ ক্ষমতার ধারণা পেতে এই পৃষ্ঠার ট্যাবগুলি অন্বেষণ করতে কয়েক মুহূর্ত সময় নিন।

প্রোগ্রাম্যাটিক ইন্টারফেস

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

8. আপনার অ্যাপ পরীক্ষা করুন

198ada162d1f0bf1.png

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

পরীক্ষা চালান

ক্লাউড শেল টার্মিনালে, একটি লোড পরীক্ষা চালানোর জন্য এই কমান্ডটি চালান:

hey -q 1000 -c 200 -z 30s https://hello-...run.app

কমান্ড আর্গুমেন্ট নিম্নরূপ ব্যাখ্যা করা হয়:

  • -q 1000 - প্রতি সেকেন্ডে প্রায় 1,000 অনুরোধে লোড চালানোর চেষ্টা করুন
  • -c 200 - 200 সমান্তরাল কর্মী বরাদ্দ করুন
  • -z 30s - 30 সেকেন্ডের জন্য লোড পরীক্ষা চালান
  • এই কমান্ড লাইনে শেষ আর্গুমেন্ট হিসাবে আপনার পরিষেবা URL ব্যবহার নিশ্চিত করুন

আপনার পরীক্ষার ফলাফল এই মত কিছু দেখতে হবে:

 Summary:
 Total:        30.2767 secs
 Slowest:      3.3633 secs
 Fastest:      0.1071 secs
 Average:      0.1828 secs
 Requests/sec: 1087.2387
 Total data:   3028456 bytes
 Size/request: 92 bytes

Response time histogram:
 0.107 [1]     |
 0.433 [31346] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
 0.758 [1472]  |■■
 1.084 [82]    |
 1.410 [4]     |
...

Latency distribution:
...
 50% in 0.1528 secs
 75% in 0.1949 secs
 90% in 0.2442 secs
 95% in 0.4052 secs
 99% in 0.7062 secs

Details (average, fastest, slowest):
...
 req write:    0.0000 secs, 0.0000 secs, 0.0232 secs
 resp wait:    0.1824 secs, 0.1070 secs, 3.2953 secs
 resp read:    0.0000 secs, 0.0000 secs, 0.0010 secs
Status code distribution:
 [200] 32918 responses

এই সারাংশটি আমাদের আগ্রহের বেশ কয়েকটি আইটেম বলে:

  • 30 এর জন্য 32,918টি অনুরোধ প্রায় 1K/প্রতি সেকেন্ডে পাঠানো হয়েছিল।
  • কোন ত্রুটি ছিল না (শুধুমাত্র 200 HTTP প্রতিক্রিয়া)।
  • গড় বিলম্বিতা ছিল 180ms।
  • ন্যূনতম বিলম্ব ছিল 107ms, সবচেয়ে খারাপ ক্ষেত্রে ছিল 3.3s৷
  • 90ম পার্সেন্টাইল লেটেন্সি ছিল 244ms।

আপনি যদি ক্লাউড রান কনসোলে METRICS ট্যাবটি চেক করেন, আপনি সার্ভারের পারফরম্যান্স গল্পের দিকটি দেখতে পাবেন:

e635c6831c468dd3.png

9. পরিষ্কার করা

পরিষেবাটি ব্যবহার না করার সময় ক্লাউড রান চার্জ না করলেও, বিল্ট কন্টেইনার ইমেজ সংরক্ষণ করার জন্য আপনাকে চার্জ করা হতে পারে।

চার্জ এড়াতে আপনি হয় আপনার GCP প্রকল্প মুছে ফেলতে পারেন, যা সেই প্রকল্পের মধ্যে ব্যবহৃত সমস্ত সংস্থানের জন্য বিলিং বন্ধ করে দেবে, অথবা এই কমান্ডটি ব্যবহার করে আপনার কন্টেইনার ছবি মুছে ফেলতে পারেন:

gcloud container images delete $TAG

আপনার ক্লাউড রান পরিষেবাগুলি মুছতে, এই কমান্ডগুলি ব্যবহার করুন:

gcloud run services delete hello --platform managed --region $REGION --quiet
gcloud run services delete hello-again --platform managed --region $REGION --quiet

10. আপনি এটা করেছেন!

9a31f4fdbbf1ddcb.png

অভিনন্দন - আপনি সফলভাবে একটি প্রোডাকশন ক্লাউড রান অ্যাপ তৈরি ও স্থাপন করেছেন। পথ ধরে, আপনি কন্টেইনার সম্পর্কে এবং কীভাবে আপনার নিজের ধারক তৈরি করবেন তা শিখেছেন। এবং আপনি দেখেছেন যে gcloud কমান্ড লাইন টুল এবং ক্লাউড কনসোল উভয় ব্যবহার করে ক্লাউড রানের সাথে আপনার অ্যাপ স্থাপন করা কতটা সহজ। এখন আপনি জানেন কিভাবে সারা বিশ্বের সাথে আপনার উজ্জ্বল সৃষ্টি শেয়ার করতে হয়!

আমি আপনাকে একটি গুরুত্বপূর্ণ প্রশ্ন রেখে যেতে চাই:

একবার আপনি আপনার ডেভেলপার পরিবেশে আপনার অ্যাপটি কাজ করার পরে, ক্লাউড রান দ্বারা প্রদত্ত সমস্ত উত্পাদন-গ্রেড বৈশিষ্ট্য সহ ক্লাউডে স্থাপন করার জন্য আপনাকে কত লাইন কোড পরিবর্তন করতে হবে?

উত্তর, অবশ্যই, শূন্য। :)

চেক আউট করার জন্য কোডল্যাব...

অন্বেষণ করার জন্য অন্যান্য দুর্দান্ত বৈশিষ্ট্য...

রেফারেন্স ডক্স...

11. কল টু অ্যাকশন

গুগল ক্লাউড লোগো

আপনি যদি এই কোডল্যাবটি উপভোগ করেন এবং Google ক্লাউডের সাথে আরও বেশি সময় ব্যয় করার সম্ভাবনা থাকে তবে আপনার সত্যিই আজই Google ক্লাউড উদ্ভাবকদের সাথে যোগ দেওয়া উচিত!

উদ্ভাবক সাধারণ সদস্য ব্যাজ লোগো

Google ক্লাউড উদ্ভাবক বিনামূল্যে এবং এতে রয়েছে:

  • সরাসরি Googlers থেকে সর্বশেষ জানতে সরাসরি আলোচনা , AMA এবং রোডম্যাপ সেশন
  • আপনার ইনবক্সে সরাসরি Google ক্লাউডের সর্বশেষ খবর
  • ডিজিটাল ব্যাজ এবং ভিডিও কনফারেন্স ব্যাকগ্রাউন্ড
  • স্কিল বুস্টে ল্যাব এবং শেখার 500 ক্রেডিট

নিবন্ধন করতে এখানে ক্লিক করুন!