মডিউল 5: ক্লাউড বিল্ডপ্যাকগুলির সাথে Google অ্যাপ ইঞ্জিন থেকে ক্লাউড রানে স্থানান্তর করুন

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

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

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

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

আপনি শিখবেন কিভাবে

  • ক্লাউড বিল্ডপ্যাক ব্যবহার করে আপনার অ্যাপকে কন্টেইনারাইজ করুন
  • ক্লাউড রানে কন্টেইনার ইমেজ ডিপ্লয় করুন

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

জরিপ

আপনি এই কোডল্যাবটি কীভাবে ব্যবহার করবেন?

শুধু একবার পড়ে দেখুন এটি পড়ুন এবং অনুশীলনগুলো সম্পূর্ণ করুন।

২. পটভূমি

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

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

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

এর পরিবর্তে, আপনাকে কন্টেইনার সম্পর্কে কিছু শিখতে হবে, যেমন কীভাবে সেগুলি তৈরি এবং স্থাপন করতে হয়। আপনি কন্টেইনার ইমেজে কী রাখতে চান, সেই সিদ্ধান্তও নিতে পারবেন; এর মধ্যে একটি ওয়েব সার্ভারও অন্তর্ভুক্ত, কারণ আপনি আর অ্যাপ ইঞ্জিনের ওয়েব সার্ভার ব্যবহার করবেন না। আপনি যদি এই পথ অনুসরণ করতে না চান, তবে আপনার অ্যাপগুলিকে অ্যাপ ইঞ্জিনে রাখাও একটি খারাপ বিকল্প নয়।

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

এই মাইগ্রেশনে নিম্নলিখিত ধাপগুলো রয়েছে:

  1. প্রস্তুতি/পূর্বপ্রস্তুতি
  2. অ্যাপ্লিকেশনকে কন্টেইনারাইজ করুন
    • কনফিগারেশন ফাইলগুলি প্রতিস্থাপন করুন
    • অ্যাপ্লিকেশন ফাইলগুলি পরিবর্তন করুন

৩. প্রস্তুতি/পূর্বপ্রস্তুতি

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

১. প্রকল্প স্থাপন করুন

আপনি যদি মডিউল ২ বা মডিউল ৩-এর কোডল্যাবগুলো সম্পন্ন করে থাকেন, তাহলে আমরা সেই একই প্রজেক্ট (এবং কোড) পুনরায় ব্যবহার করার পরামর্শ দিই। বিকল্পভাবে, আপনি একটি সম্পূর্ণ নতুন প্রজেক্ট তৈরি করতে পারেন অথবা অন্য কোনো বিদ্যমান প্রজেক্ট পুনরায় ব্যবহার করতে পারেন। নিশ্চিত করুন যে প্রজেক্টটিতে একটি সক্রিয় বিলিং অ্যাকাউন্ট এবং অ্যাপ ইঞ্জিন (অ্যাপ) সক্রিয় করা আছে।

২. বেসলাইন নমুনা অ্যাপটি নিন

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

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

START ফাইলগুলোর ডিরেক্টরি (আপনার বা আমাদের) দেখতে এইরকম হওয়া উচিত:

$ ls
README.md               main.py                 templates
app.yaml                requirements.txt

৩. বেসলাইন অ্যাপ (পুনরায়) স্থাপন করুন

এখন আপনার বাকি প্রস্তুতিমূলক ধাপগুলো সম্পন্ন করতে হবে:

  1. gcloud কমান্ড-লাইন টুলটির সাথে পুনরায় পরিচিত হয়ে নিন।
  2. gcloud app deploy ব্যবহার করে নমুনা অ্যাপটি পুনরায় ডিপ্লয় করুন।
  3. অ্যাপটি অ্যাপ ইঞ্জিনে কোনো সমস্যা ছাড়াই চলে কিনা তা নিশ্চিত করুন।

একবার আপনি সফলভাবে সেই ধাপগুলো সম্পন্ন করলে, আপনি এটিকে কন্টেইনারাইজ করার জন্য প্রস্তুত।

৪. অ্যাপ্লিকেশনকে কন্টেইনারাইজ করুন

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

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

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

বর্ণনা

অ্যাপ ইঞ্জিন

ডকার

বিল্ডপ্যাক

সাধারণ কনফিগারেশন

app.yaml

Dockerfile

( service.yaml )

তৃতীয় পক্ষের লাইব্রেরি

requirements.txt

requirements.txt

requirements.txt

তৃতীয় পক্ষের কনফিগারেশন

app.yaml (সাথে appengine_config.py এবং lib [শুধুমাত্র 2.x-এর জন্য])

(প্রযোজ্য নয়)

(প্রযোজ্য নয়)

স্টার্টআপ

(প্রযোজ্য নয়) অথবা app.yaml (যদি entrypoint ব্যবহার করা হয়)

Dockerfile

Procfile

ফাইলগুলি উপেক্ষা করুন

.gcloudignore এবং .gitignore

.gcloudignore , .gitignore , এবং .dockerignore

.gcloudignore এবং .gitignore

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

সাধারণ কনফিগারেশন

অ্যাপ ইঞ্জিন স্বয়ংক্রিয়ভাবে আপনার অ্যাপ্লিকেশন চালু করে, কিন্তু ক্লাউড রান তা করে না। Procfile app.yaml entrypoint ডিরেক্টিভের মতো একই ভূমিকা পালন করে। আমাদের নমুনা অ্যাপের জন্য, আমাদের Procfile ফ্লাস্ক ডেভেলপমেন্ট সার্ভার চালু করতে python main.py এক্সিকিউট করবে। আপনি চাইলে gunicorn মতো একটি প্রোডাকশন ওয়েব সার্ভারও ব্যবহার করতে পারেন, এবং যদি তা করেন, তবে requirements.txt এ এটি যোগ করতে ভুলবেন না। বিল্ডপ্যাক ব্যবহার করে সোর্স কোড থেকে কীভাবে ডিপ্লয় করতে হয় সে সম্পর্কে আরও জানতে এই ক্লাউড রান ডক্স পেজটি দেখুন।

আপনাকে শুধু আপনার app.yaml entrypoint ডিরেক্টিভটি একটি Procfile এ স্থানান্তর করতে হবে। যদি আপনার কোনো Procfile না থাকে, তাহলে আপাতত Flask ডেভেলপমেন্ট সার্ভার ব্যবহার করুন, কারণ এটি ব্যবহারকারীদের এই মাইগ্রেশনের সাথে পরিচিত করানোর জন্য তৈরি একটি নমুনা টেস্ট অ্যাপ মাত্র। আপনার অ্যাপটি হবে একটি নির্দিষ্ট স্টার্টআপ কমান্ড, যা আপনি সবচেয়ে ভালো জানেন। আড়ালে, Cloud Run সার্ভিসটি একটি service.yaml তৈরি করে, যা দেখতে বা কাজ করতে অনেকটা app.yaml মতোই। আপনি আপনার সার্ভিস SVC_NAME এবং REGION জন্য এই ধরনের একটি লিঙ্কে গিয়ে স্বয়ংক্রিয়ভাবে তৈরি হওয়া service.yaml দেখতে পারেন: https://console.cloud.google.com/run/detail/REGION/SVC_NAME/yaml/view

তৃতীয় পক্ষের লাইব্রেরি

requirements.txt ফাইলটি পরিবর্তন করার প্রয়োজন নেই; আপনার ডেটাস্টোর ক্লায়েন্ট লাইব্রেরির (ক্লাউড ডেটাস্টোর বা ক্লাউড এনডিবি) সাথে ফ্লাস্কও সেখানে থাকা উচিত। আপনি যদি গুনিকর্নের মতো অন্য কোনো WSGI-সম্মত HTTP সার্ভার ব্যবহার করতে চান — এই লেখাটির সময় যার বর্তমান সংস্করণ হলো 20.0.4 — তাহলে requirements.txt ফাইলে gunicorn==20.0.4 যোগ করুন।

তৃতীয় পক্ষের কনফিগারেশন

বিল্ডপ্যাকস পাইথন ২ সমর্থন করে না, তাই আমরা এখানে সে বিষয়ে আলোচনা করব না। ক্লাউড রান-এর কন্টেইনারে চলমান পাইথন ৩ অ্যাপগুলো পাইথন ৩ অ্যাপ ইঞ্জিন অ্যাপের মতোই, কারণ এক্ষেত্রেও requirements.txt ফাইলে থার্ড-পার্টি লাইব্রেরিগুলো উল্লেখ করতে হয়।

স্টার্টআপ

পাইথন ৩ ব্যবহারকারীরা তাদের app.yaml ফাইলের handlers সেকশনে script: auto ডিরেক্টিভের পরিবর্তে entrypoint ব্যবহার করার বিকল্প পান। আপনি যদি আপনার পাইথন ৩ app.yamlentrypoint ব্যবহার করেন, তাহলে এটি দেখতে অনেকটা এইরকম হবে:

runtime: python38
entrypoint: python main.py

entrypoint ডিরেক্টিভটি অ্যাপ ইঞ্জিনকে বলে দেয় আপনার সার্ভার কীভাবে চালু করতে হবে। আপনি এটিকে প্রায় সরাসরি আপনার Procfile -এ স্থানান্তর করতে পারেন। উভয় প্ল্যাটফর্মের মধ্যে একটি এন্ট্রি পয়েন্ট ডিরেক্টিভ কোথায় বসবে তার সারসংক্ষেপ নিচে দেওয়া হলো: এটি সরাসরি নিচের রূপে রূপান্তরিত হয়; এছাড়াও আপনার তথ্যের জন্য ডকারের সমতুল্য রূপটিও দেখানো হলো:

  • বিল্ডপ্যাকস: Procfile এর লাইন: web: python main.py
  • ডকার: Dockerfile এর লাইন: ENTRYPOINT ["python", "main.py"]

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

অ্যাপ্লিকেশন ফাইল

সমস্ত মডিউল ২ বা মডিউল ৩ অ্যাপ সম্পূর্ণরূপে পাইথন ২-৩ এর সাথে সামঞ্জস্যপূর্ণ, যার অর্থ main.py এর মূল উপাদানগুলিতে কোনও পরিবর্তন করতে হবে না; আমরা কেবল স্টার্টআপ কোডের কয়েকটি লাইন যোগ করব। ডেভেলপমেন্ট সার্ভার শুরু করার জন্য main.py এর শেষে দুটি লাইন যোগ করুন, কারণ Cloud Run আপনার অ্যাপকে কল করার জন্য পোর্ট ৮০৮০ খোলা থাকা প্রয়োজন:

if __name__ == '__main__':
    import os
    app.run(debug=True, threaded=True, host='0.0.0.0',
            port=int(os.environ.get('PORT', 8080)))

৫. তৈরি এবং স্থাপন করুন

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

পরিষেবা বনাম অ্যাপ

যদিও অ্যাপ ইঞ্জিন প্রাথমিকভাবে অ্যাপ্লিকেশন হোস্ট করার জন্য তৈরি করা হয়েছিল, এটি ওয়েব পরিষেবা বা মাইক্রোসার্ভিসের সমষ্টি দিয়ে গঠিত অ্যাপ্লিকেশন হোস্ট করারও একটি প্ল্যাটফর্ম। ক্লাউড রানে, সবকিছুই একটি পরিষেবা, তা প্রকৃত পরিষেবা হোক বা ওয়েব ইন্টারফেস সহ একটি অ্যাপ্লিকেশন হোক, তাই এর ব্যবহারকে একটি অ্যাপ্লিকেশনের পরিবর্তে একটি পরিষেবার ডেপ্লয়মেন্ট হিসাবে বিবেচনা করুন।

আপনার অ্যাপ ইঞ্জিন অ্যাপটি যদি একাধিক সার্ভিস দিয়ে গঠিত না হতো, তাহলে অ্যাপ্লিকেশনগুলো ডেপ্লয় করার সময় সেগুলোর কোনো নামকরণের প্রয়োজন পড়ত না। ক্লাউড রানের ক্ষেত্রে বিষয়টি বদলে যায়, যেখানে আপনাকে একটি সার্ভিসের নাম ঠিক করতে হয়। অপরদিকে, একটি অ্যাপ ইঞ্জিনের appspot.com ডোমেইনে এর প্রজেক্ট আইডি, যেমন— https://PROJECT_ID.appspot.com ://PROJECT_ID.appspot.com—এবং সম্ভবত এর রিজিয়ন আইডির সংক্ষিপ্ত রূপ, যেমন— http://PROJECT_ID.REGION_ID.r.appspot.com ://PROJECT_ID.REGION_ID.r.appspot.com—থাকে।

তবে, একটি ক্লাউড রান সার্ভিসের ডোমেইনে এর সার্ভিসের নাম , রিজিয়ন আইডি-র সংক্ষিপ্ত রূপ এবং একটি হ্যাশ থাকে, কিন্তু এর প্রোজেক্ট আইডি থাকে না, যেমন, https://SVC_NAME-HASH-REG_ABBR.a.run.app । মূল কথা হলো, একটি সার্ভিসের নাম নিয়ে ভাবতে শুরু করুন!

পরিষেবা স্থাপন করুন

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

$ gcloud run deploy SVC_NAME --source .
Please choose a target platform:
 [1] Cloud Run (fully managed)
 [2] Cloud Run for Anthos deployed on Google Cloud
 [3] Cloud Run for Anthos deployed on VMware
 [4] cancel
Please enter your numeric choice:  1

To specify the platform yourself, pass `--platform managed`. Or, to make this the default target platform, run `gcloud config set run/platform managed`.

Please specify a region:
 [1] asia-east1
 [2] asia-east2
 [3] asia-northeast1
 [4] asia-northeast2
 [5] asia-northeast3
 [6] asia-south1
 [7] asia-southeast1
 [8] asia-southeast2
 [9] australia-southeast1
 [10] europe-north1
 [11] europe-west1
 [12] europe-west2
 [13] europe-west3
 [14] europe-west4
 [15] europe-west6
 [16] northamerica-northeast1
 [17] southamerica-east1
 [18] us-central1
 [19] us-east1
 [20] us-east4
 [21] us-west1
 [22] us-west2
 [23] us-west3
 [24] us-west4
 [25] cancel
Please enter your numeric choice: <select your numeric region choice>

To make this the default region, run `gcloud config set run/region REGION`.

Allow unauthenticated invocations to [SVC_NAME] (y/N)?  y

Building using Buildpacks and deploying container to Cloud Run service [SVC_NAME] in project [PROJECT_ID] region [REGION]
✓ Building and deploying... Done.
  ✓ Uploading sources...
  ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/BUILD-HASH?project=PROJECT_NUM].
  ✓ Creating Revision...
  ✓ Routing traffic...
Done.
Service [SVC_NAME] revision [SVC_NAME-00014-soc] has been deployed and is serving 100 percent of traffic.
Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app

ডেপ্লয়মেন্ট সফল হয়েছে কিনা তা নিশ্চিত করতে আপনার ব্রাউজার দিয়ে নির্দিষ্ট URL-টি ভিজিট করুন!

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

$ gcloud beta run deploy SVC_NAME --source . --platform managed --region REGION --allow-unauthenticated

আপনি যদি এটি ব্যবহার করেন, তবে অবশ্যই একই সার্ভিস নেম SVC_NAME এবং কাঙ্ক্ষিত REGION নেম নির্বাচন করবেন, উপরে ইন্টারেক্টিভভাবে করা ইনডেক্সড মেনু নির্বাচনটি নয়।

৬. সারসংক্ষেপ/পরিষ্কারকরণ

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

ভিজিটমি অ্যাপ

আপনার কোড এখন মডিউল ৫ রিপো ফোল্ডারের কোডের সাথে মিলে যাওয়া উচিত। এই মডিউল ৫ কোডল্যাবটি সফলভাবে সম্পন্ন করার জন্য অভিনন্দন।

ঐচ্ছিক: পরিষ্কার করা

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

ঐচ্ছিক: পরিষেবা অক্ষম করুন

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

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

পরবর্তী পদক্ষেপ

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

  • মডিউল ৪: ডকারের সাহায্যে ক্লাউড রানে মাইগ্রেট করুন
    • ডকারের সাহায্যে আপনার অ্যাপকে কন্টেইনারাইজ করে ক্লাউড রানে চালান।
    • আপনাকে পাইথন ২ ব্যবহার করতে দেয়
  • মডিউল ৭: অ্যাপ ইঞ্জিন পুশ টাস্ক কিউ (যদি আপনি [push] টাস্ক কিউ ব্যবহার করেন তবে এটি আবশ্যক)
    • মডিউল ১ অ্যাপে অ্যাপ ইঞ্জিন taskqueue পুশ টাস্ক যোগ করে।
    • মডিউল ৮-এ ক্লাউড টাস্ক- এ স্থানান্তরের জন্য ব্যবহারকারীদের প্রস্তুত করে।
  • মডিউল ৩:
    • ক্লাউড এনডিবি থেকে ক্লাউড ডেটাস্টোরে ডেটাস্টোর অ্যাক্সেস আধুনিকীকরণ করুন
    • এই লাইব্রেরিটি পাইথন ৩ অ্যাপ ইঞ্জিন অ্যাপ এবং নন-অ্যাপ ইঞ্জিন অ্যাপে ব্যবহৃত হয়।
  • মডিউল ৬: ক্লাউড ফায়ারস্টোরে স্থানান্তর
    • ফায়ারবেস ফিচারগুলো অ্যাক্সেস করতে ক্লাউড ফায়ারস্টোরে মাইগ্রেট করুন।
    • যদিও ক্লাউড ফায়ারস্টোর পাইথন ২ সমর্থন করে, এই কোডল্যাবটি শুধুমাত্র পাইথন ৩-এ উপলব্ধ।

৭. অতিরিক্ত সম্পদ

অ্যাপ ইঞ্জিন মাইগ্রেশন মডিউল কোডল্যাবস সমস্যা/মতামত

এই কোডল্যাবে কোনো সমস্যা পেলে, অভিযোগ জানানোর আগে অনুগ্রহ করে সমস্যাটি অনুসন্ধান করুন। নতুন সমস্যা অনুসন্ধান ও তৈরি করার লিঙ্ক:

অভিবাসন সম্পদ

মডিউল ২ এবং ৩ (শুরু) এবং মডিউল ৫ (শেষ)-এর রিপো ফোল্ডারগুলোর লিঙ্ক নিচের টেবিলে পাওয়া যাবে। এছাড়াও, সমস্ত অ্যাপ ইঞ্জিন কোডল্যাব মাইগ্রেশনের রিপো থেকেও এগুলো অ্যাক্সেস করা যাবে, যা আপনি ক্লোন করতে পারেন অথবা একটি জিপ ফাইল হিসেবে ডাউনলোড করতে পারেন।

কোডল্যাব

পাইথন ২

পাইথন ৩

মডিউল ২

কোড

( কোড )

মডিউল ৩

( কোড )

কোড

মডিউল ৫

(প্রযোজ্য নয়)

কোড

অ্যাপ ইঞ্জিন এবং ক্লাউড রান রিসোর্স

এই নির্দিষ্ট মাইগ্রেশন সম্পর্কিত অতিরিক্ত তথ্যসূত্র নিচে দেওয়া হলো: