অ্যাপ ইঞ্জিন বান্ডিল পরিষেবাগুলির জন্য সমর্থন প্রসারিত করা: অংশ 1 (মডিউল 17)

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

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

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

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

  • নমুনা অ্যাপ ইঞ্জিন অ্যাপটি পাইথন ২ থেকে ৩-এ পোর্ট করুন।
  • অ্যাপ ইঞ্জিন এসডিকে অন্তর্ভুক্ত করতে অ্যাপ কনফিগারেশন আপডেট করুন।
  • অ্যাপটিতে এমন SDK কোড যোগ করুন যা পাইথন ৩-এর মতো দ্বিতীয় প্রজন্মের রানটাইমে বান্ডেল করা পরিষেবাগুলোকে সমর্থন করে।

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

জরিপ

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

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

পাইথন নিয়ে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

গুগল ক্লাউড পরিষেবা ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

২. পটভূমি

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

আজকের দিনে পাইথন ২ ডেভেলপাররা পাইথন ৩-এ আপগ্রেড করতে আগ্রহী। বান্ডেল করা সার্ভিস ব্যবহারকারী একটি ২.x অ্যাপকে ৩.x-এ পোর্ট করার আগে সেই সার্ভিসগুলো থেকে সরে আসতে হতো, যা ছিল পরপর দুটি বাধ্যতামূলক মাইগ্রেশন এবং সেগুলো বেশ চ্যালেঞ্জিংও ছিল। এই রূপান্তরে সাহায্য করার জন্য, অ্যাপ ইঞ্জিন টিম ২০২১ সালের শরতে অতীতে ফিরে যাওয়ার একটি "ওয়ার্মহোল" চালু করে , যা পরবর্তী প্রজন্মের রানটাইমে চলা অ্যাপগুলোকে সেই বান্ডেল করা সার্ভিসগুলোর অনেকগুলো অ্যাক্সেস করার সুযোগ দেয়। যদিও এই রিলিজে মূল রানটাইমগুলোতে উপলব্ধ সমস্ত সার্ভিস অন্তর্ভুক্ত নয়, তবে ডেটাস্টোর, টাস্ক কিউ এবং মেমক্যাশের মতো প্রধান সার্ভিসগুলো এতে পাওয়া যাচ্ছে।

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

মডিউল ১-এর পাইথন ২ স্যাম্পল অ্যাপটি অ্যাপ ইঞ্জিন এনডিবি-এর মাধ্যমে ডেটাস্টোর বান্ডেলড সার্ভিসটি ব্যবহার করে। অ্যাপটি ইতোমধ্যেই ওয়েবঅ্যাপ২ থেকে ফ্লাস্ক-এ ফ্রেমওয়ার্ক মাইগ্রেট করেছে—যা মডিউল ১ কোডল্যাবে সম্পন্ন হয়েছিল—কিন্তু এর ডেটাস্টোর ব্যবহার অক্ষুণ্ণ রাখা হয়েছে।

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

  1. প্রস্তুতি/পূর্বপ্রস্তুতি
  2. কনফিগারেশন আপডেট করুন
  3. অ্যাপ্লিকেশন কোড পরিবর্তন করুন

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

এই বিভাগে ব্যাখ্যা করা হয়েছে কীভাবে:

  1. আপনার ক্লাউড প্রজেক্ট সেট আপ করুন
  2. বেসলাইন নমুনা অ্যাপ পান
  3. বেসলাইন অ্যাপ পুনরায় স্থাপন এবং যাচাই করুন

এই ধাপগুলো নিশ্চিত করে যে আপনি একটি কার্যকর কোড দিয়ে কাজ শুরু করছেন।

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

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

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

এই কোডল্যাবের অন্যতম পূর্বশর্ত হলো একটি কার্যকর মডিউল ১ অ্যাপ ইঞ্জিন অ্যাপ থাকা: মডিউল ১ কোডল্যাবটি সম্পূর্ণ করুন (প্রস্তাবিত) অথবা রিপো থেকে মডিউল ১ অ্যাপটি কপি করুন। আপনি আপনার নিজের বা আমাদের, যেটিই ব্যবহার করুন না কেন, মডিউল ১-এর কোড থেকেই আমরা "শুরু" করব। এই কোডল্যাবটি আপনাকে প্রতিটি ধাপের মধ্য দিয়ে নিয়ে যাবে এবং শেষে এমন একটি কোড দিয়ে শেষ হবে যা মডিউল ৭ রিপো ফোল্ডারের "শেষ" অংশের কোডের অনুরূপ।

আপনি মডিউল ১-এর যে অ্যাপই ব্যবহার করুন না কেন, ফোল্ডারটি নিচের মতো দেখতে হবে, সম্ভবত এর সাথে একটি lib ফোল্ডারও থাকবে:

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

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

মডিউল ১ অ্যাপটি (পুনরায়) স্থাপন করতে নিম্নলিখিত ধাপগুলি অনুসরণ করুন:

  1. যদি lib ফোল্ডারটি থাকে তবে সেটি মুছে ফেলুন এবং lib পুনরায় তৈরি করতে pip install -t lib -r requirements.txt চালান। আপনার যদি Python 2 এবং 3 উভয়ই ইনস্টল করা থাকে, তবে এর পরিবর্তে আপনাকে pip2 কমান্ডটি ব্যবহার করতে হতে পারে।
  2. আপনি gcloud কমান্ড-লাইন টুলটি ইনস্টলচালু করেছেন কিনা তা নিশ্চিত করুন এবং এর ব্যবহারবিধি পর্যালোচনা করেছেন।
  3. যদি আপনি প্রতিটি gcloud কমান্ডের সাথে আপনার PROJECT_ID প্রবেশ করাতে না চান, তাহলে gcloud config set project PROJECT_ID ব্যবহার করে আপনার ক্লাউড প্রজেক্ট সেট করুন।
  4. gcloud app deploy ব্যবহার করে নমুনা অ্যাপটি ডিপ্লয় করুন।
  5. নিশ্চিত করুন যে মডিউল ১ অ্যাপটি কোনো সমস্যা ছাড়াই প্রত্যাশিতভাবে চলছে এবং সাম্প্রতিকতম ভিজিটগুলো প্রদর্শন করছে (নিচে চিত্রিত)।

a7a9d2b80d706a2b.png

৪. কনফিগারেশন আপডেট করুন

একবার আপনি সফলভাবে সেই ধাপগুলো সম্পন্ন করে আপনার ওয়েব অ্যাপটি কাজ করতে দেখলে, আপনি কনফিগ থেকে শুরু করে এই অ্যাপটিকে পাইথন ৩-এ পোর্ট করার জন্য প্রস্তুত।

requirements.txt ফাইলে SDK যোগ করুন

অ্যাপ ইঞ্জিন পাইথন ৩ রানটাইম থার্ড-পার্টি লাইব্রেরি ব্যবহারের জন্য প্রয়োজনীয় অতিরিক্ত কাজ উল্লেখযোগ্যভাবে কমিয়ে দেয়। এর জন্য শুধু requirements.txt ফাইলে সেগুলোর একটি তালিকা তৈরি করাই যথেষ্ট। পাইথন ৩-এ বান্ডেল করা পরিষেবাগুলো ব্যবহার করার জন্য, এতে অ্যাপ ইঞ্জিন SDK প্যাকেজ, appengine-python-standard , যোগ করুন। এই SDK প্যাকেজটি মডিউল ১ থেকে Flask-এর সাথে যুক্ত হয়।

flask
appengine-python-standard

app.yaml আপডেট করুন

আপনার app.yaml ফাইলে কনফিগারেশন পরিবর্তনগুলো প্রয়োগ করতে নিচের ধাপগুলো অনুসরণ করুন:

  1. runtime ডিরেক্টিভটি সমর্থিত পাইথন ৩ রিলিজ দিয়ে প্রতিস্থাপন করুন; উদাহরণস্বরূপ, পাইথন ৩.১০-এর জন্য python310 উল্লেখ করুন।
  2. threadsafe এবং api_version উভয় ডিরেক্টিভই মুছে ফেলুন, কারণ পাইথন ৩-এ এগুলোর কোনোটিই ব্যবহৃত হয় না।
  3. যেহেতু এই অ্যাপটিতে শুধুমাত্র স্ক্রিপ্ট হ্যান্ডলার রয়েছে, তাই handlers সেকশনটি সম্পূর্ণভাবে মুছে ফেলুন। যদি আপনার অ্যাপে স্ট্যাটিক ফাইল হ্যান্ডলার থাকে, তবে সেগুলোকে handlers সেকশনে অক্ষত রাখুন।
  4. পাইথন ৩ রানটাইম, পাইথন ২ রানটাইমের মতো বিল্ট-ইন থার্ড-পার্টি লাইব্রেরি সাপোর্ট করে না। যদি আপনার অ্যাপের app.yaml ফাইলে একটি libraries সেকশন থাকে, তাহলে পুরো সেকশনটি ডিলিট করে দিন। (প্রয়োজনীয় প্যাকেজগুলোকে শুধু requirements.txt ফাইলে নন-বিল্ট-ইন লাইব্রেরির মতোই তালিকাভুক্ত করতে হবে।) আমাদের স্যাম্পল অ্যাপটিতে কোনো libraries সেকশন নেই, তাই পরবর্তী ধাপে যান।
  5. এটি ব্যবহার করার জন্য app_engine_apis ডিরেক্টিভটি ` true তে সেট করে তৈরি করুন—এটি উপরের requirements.txt ফাইলে `App Engine SDK` প্যাকেজটি যোগ করার সাথে সঙ্গতিপূর্ণ।

app.yaml এ যে সকল প্রয়োজনীয় পরিবর্তন করতে হবে তার সারসংক্ষেপ:

পূর্বে:

runtime: python27
threadsafe: yes
api_version: 1

handlers:
- url: /.*
  script: main.app

পরে:

runtime: python310
app_engine_apis: true

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

যেহেতু সমস্ত থার্ড-পার্টি প্যাকেজ শুধুমাত্র requirements.txt ফাইলে তালিকাভুক্ত করলেই চলে, তাই appengine_config.py ফাইলে বিশেষ কিছু না থাকলে এটির প্রয়োজন নেই, সুতরাং এটি মুছে ফেলুন। একইভাবে, যেহেতু সমস্ত থার্ড-পার্টি লাইব্রেরি বিল্ড প্রক্রিয়ার সময় স্বয়ংক্রিয়ভাবে ইনস্টল হয়ে যায়, তাই সেগুলি কপি বা ভেন্ডর করার প্রয়োজন নেই, অর্থাৎ আর pip install কমান্ড বা lib ফোল্ডারের দরকার নেই, সুতরাং এটিও মুছে ফেলুন। সারসংক্ষেপ:

  • appengine_config.py ফাইলটি মুছে ফেলুন
  • lib ফোল্ডারটি মুছে ফেলুন

এর মাধ্যমে সকল প্রয়োজনীয় কনফিগারেশন পরিবর্তন সম্পন্ন হলো।

৫. অ্যাপ্লিকেশন কোড পরিবর্তন করুন

পাইথন ৩ রানটাইম এনভায়রনমেন্টে উপলব্ধ বেশিরভাগ বান্ডেল করা পরিষেবা অ্যাক্সেস করার জন্য main.py ফাইলে ওয়েব সার্ভার গেটওয়ে ইন্টারফেস (WSGI) অ্যাপ্লিকেশন অবজেক্টকে র‍্যাপ করে একটি ছোট কোড লিখতে হয়। র‍্যাপার ফাংশনটি হলো google.appengine.api.wrap_wsgi_app() , এবং এটি ব্যবহার করার জন্য আপনাকে এটিকে ইম্পোর্ট করে আপনার WSGI অবজেক্টটিকে এর মধ্যে র‍্যাপ করতে হবে। main.py ফাইলে Flask-এর জন্য প্রয়োজনীয় আপডেটটি প্রতিফলিত করতে নিচের পরিবর্তনগুলো করুন:

পূর্বে:

from flask import Flask, render_template, request
from google.appengine.ext import ndb

app = Flask(__name__)

পরে:

from flask import Flask, render_template, request
from google.appengine.api import wrap_wsgi_app
from google.appengine.ext import ndb

app = Flask(__name__)
app.wsgi_app = wrap_wsgi_app(app.wsgi_app)

অন্যান্য পাইথন ফ্রেমওয়ার্কের WSGI-র‍্যাপিং উদাহরণের জন্য ডকুমেন্টেশন দেখুন।

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

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

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

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

অ্যাপ্লিকেশনটি স্থাপন এবং যাচাই করুন

gcloud app deploy দিয়ে Python 3 অ্যাপটি ডিপ্লয় করুন এবং নিশ্চিত করুন যে অ্যাপটি Python 2-এর মতোই কাজ করছে। কোনো কার্যকারিতার পরিবর্তন হবে না, তাই আউটপুটটি মডিউল ১ অ্যাপের মতোই হওয়া উচিত:

a7a9d2b80d706a2b.png

চূড়ান্ত মন্তব্য

এই মুহূর্তে বান্ডেল করা পরিষেবাগুলোর ব্যবহার বজায় রেখে আপনার পাইথন ২ অ্যাপ ইঞ্জিন অ্যাপগুলোকে পাইথন ৩-এ পোর্ট করার প্রথম পদক্ষেপ নেওয়ায় অভিনন্দন।

পরিষ্কার করা

সাধারণ

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

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

  • console.cloud.google.com/storage/browser/LOC.artifacts.PROJECT_ID.appspot.com/containers/images
  • console.cloud.google.com/storage/browser/staging.PROJECT_ID.appspot.com
  • উপরের স্টোরেজ লিঙ্কগুলি আপনার PROJECT_ID এবং * LOC *-এর উপর নির্ভর করে, উদাহরণস্বরূপ, " us " যদি আপনার অ্যাপটি মার্কিন যুক্তরাষ্ট্রে হোস্ট করা হয়।

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

এই কোডল্যাবের জন্য নির্দিষ্ট

নীচে তালিকাভুক্ত পরিষেবাগুলি এই কোডল্যাবের জন্য অনন্য। আরও তথ্যের জন্য প্রতিটি পণ্যের ডকুমেন্টেশন দেখুন:

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

এখান থেকে যাওয়ার জন্য বেশ কয়েকটি পথ রয়েছে:

  1. বান্ডেল পরিষেবা ব্যবহার করে কোড আপডেট করতে আরও কোড পরিবর্তনের প্রয়োজন হবে।
  2. বান্ডেল পরিষেবা থেকে ক্লাউড স্বতন্ত্র পণ্যে স্থানান্তরিত হন
  3. অ্যাপ ইঞ্জিন থেকে অন্য কোনো ক্লাউড সার্ভারলেস প্ল্যাটফর্মে স্থানান্তরিত করুন

Blobstore , Mail , এবং Deferred- এর মতো অন্যান্য বান্ডেল করা পরিষেবাগুলি অ্যাক্সেস করার জন্য আরও কোড পরিবর্তনের প্রয়োজন। App Engine-এর লিগ্যাসি বান্ডেল করা পরিষেবাগুলি থেকে সরে আসার উপর দৃষ্টি নিবদ্ধ করে এমন মাইগ্রেশন মডিউলগুলির মধ্যে নিম্নলিখিতগুলি বিবেচনা করা যেতে পারে:

  • মডিউল ২ : অ্যাপ ইঞ্জিন এনডিবি থেকে ক্লাউড এনডিবি
  • মডিউল ৭-৯ : অ্যাপ ইঞ্জিন টাস্ককিউ থেকে ক্লাউড টাস্কে টাস্ক পাঠানো
  • মডিউল ১২-১৩ : অ্যাপ ইঞ্জিন মেমক্যাশ থেকে ক্লাউড মেমোরিস্টোর
  • মডিউল ১৫-১৬ : অ্যাপ ইঞ্জিন ব্লবস্টোর থেকে ক্লাউড স্টোরেজ
  • মডিউল ১৮-১৯ : অ্যাপ ইঞ্জিন টাস্ককিউ (টাস্ক পুল করা) থেকে ক্লাউড পাব/সাব

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

  • অ্যাপ ইঞ্জিন থেকে ক্লাউড ফাংশনে স্থানান্তর করুন: মডিউল ১১ দেখুন।
  • অ্যাপ ইঞ্জিন থেকে ক্লাউড রান-এ মাইগ্রেট করুন: ডকার ব্যবহার করে আপনার অ্যাপকে কন্টেইনারাইজ করতে মডিউল ৪ দেখুন, অথবা কন্টেইনার, ডকার জ্ঞান বা Dockerfile ছাড়াই এটি করতে মডিউল ৫ দেখুন।

অন্য কোনো সার্ভারলেস প্ল্যাটফর্মে পরিবর্তন করা ঐচ্ছিক, এবং আমরা সুপারিশ করি যে কোনো পরিবর্তন করার আগে আপনার অ্যাপ ও ব্যবহারের ক্ষেত্রগুলোর জন্য সেরা বিকল্পগুলো বিবেচনা করে নিন।

এরপরে আপনি যে মাইগ্রেশন মডিউলটিই বিবেচনা করুন না কেন, সার্ভারলেস মাইগ্রেশন স্টেশনের সমস্ত কন্টেন্ট (কোডল্যাব, ভিডিও, সোর্স কোড [যখন উপলব্ধ]) এর ওপেন সোর্স রিপো থেকে অ্যাক্সেস করা যাবে। রিপোটির README কোন মাইগ্রেশনগুলো বিবেচনা করা উচিত এবং মাইগ্রেশন মডিউলগুলোর প্রাসঙ্গিক "ক্রম" সম্পর্কেও নির্দেশনা দেওয়া আছে।

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

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

কোডল্যাবের সমস্যা/মতামত

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

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

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

কোডল্যাব

পাইথন ২

পাইথন ৩

মডিউল ১

কোড

প্রযোজ্য নয়

মডিউল ১৭ (এই কোডল্যাব)

প্রযোজ্য নয়

কোড (mod1b-flask)

অনলাইন রিসোর্স

এই টিউটোরিয়ালটির জন্য প্রাসঙ্গিক হতে পারে এমন কিছু অনলাইন রিসোর্স নিচে দেওয়া হলো:

অ্যাপ ইঞ্জিন বান্ডেল পরিষেবা

অ্যাপ ইঞ্জিন সাধারণ ডকুমেন্টেশন

অন্যান্য ক্লাউড তথ্য

ভিডিও

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে রয়েছে।