এই কোডল্যাব সম্পর্কে
1. ওভারভিউ
কোডল্যাবগুলির এই সিরিজের (স্ব-গতিসম্পন্ন, হাতে-কলমে টিউটোরিয়াল) লক্ষ্য হল Google অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড) বিকাশকারীদের তাদের অ্যাপ্লিকেশানগুলিকে একাধিক মাইগ্রেশনের মাধ্যমে গাইড করে তাদের আধুনিকীকরণে সহায়তা করা৷ এই ধরনের মাইগ্রেশনের বেশিরভাগই মূল রানটাইম বান্ডিল করা পরিষেবাগুলি থেকে দূরে সরে যাওয়া জড়িত কারণ পরবর্তী প্রজন্মের রানটাইমগুলি আরও নমনীয়, ব্যবহারকারীদের পরিষেবা বিকল্পগুলির একটি বৃহত্তর বৈচিত্র্য দেয়। একটি অ্যাপকে আধুনিকীকরণ করার আরেকটি উপায় হল একটি নতুন পণ্যে আপগ্রেড করা, এবং এটি এই কোডল্যাবের বিষয়।
অ্যাপ ইঞ্জিন ব্যবহারকারীরা ক্লাউড এনডিবি বা ক্লাউড ডেটাস্টোর ক্লায়েন্ট লাইব্রেরিগুলির মাধ্যমে ডেটাস্টোর অ্যাক্সেস করছেন এবং তাদের আর স্থানান্তরিত করার প্রয়োজন নেই৷ যাইহোক, ক্লাউড ফায়ারস্টোর ফায়ারবেস রিয়েল-টাইম ডাটাবেসের বৈশিষ্ট্য সহ সাম্প্রতিক, মাপযোগ্য, অত্যন্ত-উপলভ্য, NoSQL ডেটাস্টোরের প্রতিনিধিত্ব করে।
আপনি সঠিক জায়গায় আছেন যদি আপনি একজন ডেভেলপার হন যিনি Firestore এর বৈশিষ্ট্যগুলির সুবিধা নেওয়ার জন্য ব্যবহার করতে বাধ্য বোধ করেন বা অন্ততপক্ষে মাইগ্রেশনের সাথে কী জড়িত তা অন্বেষণ করার জন্য যথেষ্ট আগ্রহ থাকে৷ এই টিউটোরিয়ালটি আপনাকে শেখায় কিভাবে ক্লাউড ডেটাস্টোর ব্যবহার করে একটি অ্যাপ ইঞ্জিন অ্যাপ ক্লাউড ফায়ারস্টোরে স্থানান্তর করতে হয়।
আপনি কিভাবে শিখবেন
- ডেটাস্টোর এবং ফায়ারস্টোরের মধ্যে পার্থক্য চিনুন
- ক্লাউড ডেটাস্টোর থেকে ক্লাউড ফায়ারস্টোরে স্থানান্তর করুন
আপনি কি প্রয়োজন হবে
- এর সাথে একটি Google ক্লাউড প্ল্যাটফর্ম প্রকল্প :
- মৌলিক পাইথন দক্ষতা
- সাধারণ লিনাক্স কমান্ডের কাজের জ্ঞান
- অ্যাপ ইঞ্জিন অ্যাপ্লিকেশানগুলি বিকাশ এবং স্থাপন করার প্রাথমিক জ্ঞান
- এটি (মডিউল 6) শুরু করার আগে আপনাকে পাইথন 3 এ পোর্ট করা সহ মডিউল 3 কোডল্যাব সম্পূর্ণ করার পরামর্শ দেওয়া হচ্ছে।
- একটি কার্যকরী মডিউল 3 ক্লাউড ডেটাস্টোর পাইথন 3 অ্যাপ ইঞ্জিন অ্যাপ ।
সমীক্ষা
আপনি কিভাবে এই কোডল্যাব ব্যবহার করবেন?
2. পটভূমি
অ্যাপ ইঞ্জিনের ডেটাস্টোর 2013 সালে তার নিজস্ব পণ্য হয়ে ওঠে , Google ক্লাউড ডেটাস্টোর, এবং এখন অ্যাপ ইঞ্জিনের বাইরের বিকাশকারীদের কাছে অ্যাক্সেসযোগ্য। পরের বছর, Firebase গুগল অধিগ্রহণ করে। সেই সময়ে, এটি তার রিয়েল-টাইম ডাটাবেসের জন্য পরিচিত ছিল।
পরের কয়েক বছরে, Firebase এবং ক্লাউড ডেটাস্টোর দলগুলি ডেটাস্টোরে কিছু Firebase বৈশিষ্ট্য একীভূত করার জন্য কাজ করেছে। ফলস্বরূপ, 2017 সালে, ক্লাউড ডেটাস্টোরের পরবর্তী প্রজন্ম প্রকাশিত হয়েছিল । কিছু Firebase বৈশিষ্ট্য উত্তরাধিকারসূত্রে প্রতিফলিত করতে, এটিকে ক্লাউড ফায়ারস্টোর হিসাবে পুনঃব্র্যান্ড করা হয়েছিল।
ক্লাউড ফায়ারস্টোর Google ক্লাউড প্রজেক্টের জন্য ডিফল্ট NoSQL স্টোরেজ মেকানিজম হয়ে উঠেছে। নতুন অ্যাপ্লিকেশানগুলি ক্লাউড ফায়ারস্টোরকে স্থানীয়ভাবে ব্যবহার করতে পারে, যখন বিদ্যমান ডেটাস্টোর ডেটাবেসগুলিকে ফায়ারস্টোরে রূপান্তরিত করা হয়েছিল এবং এখন ডেটাস্টোর অপারেশনগুলির সাথে সামঞ্জস্য বজায় রাখতে "ডেটাস্টোর মোডে ফায়ারস্টোর" হিসাবে কাজ করে৷ ফলস্বরূপ, অ্যাপ্লিকেশনগুলি শুধুমাত্র সেই মোডগুলির মধ্যে একটিতে ক্লাউড ফায়ারস্টোর পরিচালনা করতে পারে এবং একবার সেট হয়ে গেলে পরিবর্তন করা যাবে না৷
বর্তমানে যখন ব্যবহারকারীরা নতুন প্রকল্প তৈরি করে এবং একটি NoSQL সমাধান নির্বাচন করে, তখন তাদের ডেটাস্টোর মোডে Firestore বা নেটিভ মোডে Firestore নির্বাচন করতে বলা হয়। একবার ব্যবহারকারীরা ডেটাস্টোর সত্ত্বা যোগ করলে, তারা Firestore-এ পরিবর্তন করতে পারবে না, এবং একইভাবে, একবার Firestore নেটিভ মোড নির্বাচন করা হলে, তারা আর Datastore (অথবা, Datastore মোডে Firestore) ফিরে যেতে পারবে না। আরও বিশদ বিবরণের জন্য ডকুমেন্টেশনে ডেটাস্টোর মোডে ক্লাউড ফায়ারস্টোর বা নেটিভ ফায়ারস্টোর মোড পৃষ্ঠার মধ্যে নির্বাচন পড়ুন। একটি অ্যাপকে Firestore-এ স্থানান্তরিত করার জন্য, একটি নতুন প্রকল্প তৈরি করতে হবে, Datastore রপ্তানি করে তারপর Firestore-এ আমদানি করা হবে। এই টিউটোরিয়ালটির উদ্দেশ্য হল ডেভেলপারদের ক্লাউড ডেটাস্টোর এবং ক্লাউড ফায়ারস্টোর ব্যবহারের মধ্যে পার্থক্য সম্পর্কে ধারণা দেওয়া।
এই মাইগ্রেশনটি এমন নয় যা আমরা আশা করি ব্যবহারকারীরা পারফর্ম করবে , তাই এটি ঐচ্ছিক মাইগ্রেশন। যদিও ক্লাউড ফায়ারস্টোর স্থানীয়ভাবে ব্যবহার করার সুস্পষ্ট সুবিধা রয়েছে যেমন ক্লায়েন্ট প্রমাণীকরণ, ফায়ারবেস নিয়ম একীকরণ এবং অবশ্যই, ফায়ারবেস রিয়েল-টাইম ডাটাবেস, মাইগ্রেশন পদক্ষেপগুলি "অসুবিধাজনক:"
- আপনাকে অবশ্যই একটি ভিন্ন প্রকল্প ব্যবহার করতে হবে যা আপনার বর্তমান অ্যাপের প্রকল্প।
- একটি প্রজেক্ট যেখানে একটি অ্যাপ ডেটাস্টোর সত্তা যুক্ত করেছে তা নেটিভ মোডে ফায়ারস্টোরে স্যুইচ করা যাবে না
- একইভাবে, একটি প্রকল্প যা নেটিভ মোডে Firestore নির্বাচন করেছে Datastore মোডে Firestore-এ ফিরে যেতে পারে না।
- এমন কোন মাইগ্রেশন টুল নেই যা এক প্রজেক্ট থেকে অন্য প্রজেক্টে ডাটা স্ট্রিম করতে পারে।
- নেমস্পেস এবং উচ্চতর লেখার থ্রুপুট (>10k/s) সহ কিছু সমালোচনামূলক ডেটাস্টোর বৈশিষ্ট্য Firestore থেকে পাওয়া যায় না ।
- রপ্তানি এবং আমদানি সরঞ্জামগুলি হল "আদিম" এবং "সমস্ত বা কিছুই" পরিস্থিতি।
- আপনার অ্যাপে যদি অনেক ডেটাস্টোর সত্ত্বা থাকে, তাহলে রপ্তানি করতে অনেক ঘন্টা সময় লাগতে পারে তারপর ফায়ারস্টোরে আমদানি করতে।
- এই সময়ের মধ্যে, আপনার অ্যাপ্লিকেশন/পরিষেবা ডেটা লিখতে/আপডেট করতে পারবে না।
- মাইগ্রেশন কার্যক্রম স্বাভাবিক ব্যবহারের জন্য গণনা করা হয়; খরচ কমানোর জন্য আপনি এটিকে ছড়িয়ে দিতে চাইতে পারেন (যদি সম্ভব হয় দৈনিক কোটা জুড়ে)।
- যেহেতু আপনার নতুন পরিষেবা একটি ভিন্ন প্রজেক্টে চলে, তাই আপনার DNS আপডেটগুলি প্রচারের জন্য একটি উইন্ডোর প্রয়োজন হবে৷
- ডেটাস্টোর এবং ফায়ারস্টোরের একই রকম কিন্তু ভিন্ন ডেটা মডেল আছে তাই মাইগ্রেশনের জন্য অ্যাপ/পরিষেবা কীভাবে কাজ করে তা আপডেট করতে হবে
- ডেটাস্টোর থেকে পূর্বপুরুষের প্রশ্নগুলি এখন ফায়ারস্টোর সংগ্রহের প্রশ্ন (ডিফল্ট)
- Datastore থেকে বিস্তৃত ধরনের প্রশ্ন হল Firestore কালেকশন গ্রুপের প্রশ্ন
- সূচক এবং হ্যান্ডলিং ভিন্ন, ইত্যাদি
যা বলা হয়েছে, আপনার কাছে যদি মাইগ্রেশনের জন্য বিবেচনা করার জন্য একটি মোটামুটি সহজবোধ্য অ্যাপ থাকে, এমন একটি মাইগ্রেশন অনুকরণ করার জন্য প্রস্তুতি নিচ্ছেন, অথবা এখানে ডেটাস্টোর বনাম ফায়ারস্টোর সম্পর্কে জানতে, তাহলে অনুগ্রহ করে চালিয়ে যান!
পাইথন 2 ব্যবহারকারী: এই ঐচ্ছিক মাইগ্রেশন কোডল্যাবটি শুধুমাত্র পাইথন 3-এ উপস্থাপিত হয়েছে, তবে যেহেতু ক্লাউড ফায়ারস্টোর 2.x সমর্থন করে, তাই ব্যবহারকারীরা ব্যবহারের পার্থক্যগুলিকে ইন্টারপোলেট করতে পারে। একটি উদাহরণ হল যে ফায়ারস্টোর রেকর্ডগুলি ইউনিকোড স্ট্রিং ব্যবহার করে (বাইট স্ট্রিংগুলির পরিবর্তে), তাই পাইথন 2 স্ট্রিং লিটারালের জন্য একটি u''
লিডিং ইন্ডিকেটর প্রয়োজন, যার অর্থ একটি 2.x store_visit()
ফাংশন এইরকম দেখাবে:
def store_visit(remote_addr, user_agent):
doc_ref = fs_client.collection(u'Visit')
doc_ref.add({
u'timestamp': datetime.now(),
u'visitor': u'{}: {}'.format(remote_addr, user_agent),
})
তা ছাড়া, ক্লায়েন্ট লাইব্রেরি একইভাবে কাজ করা উচিত। বিবেচনায় নেওয়ার একমাত্র অন্য সমস্যাটি হল যে 2.x ক্লাউড ফায়ারস্টোর লাইব্রেরিটি যতদূর বিকাশের দিকে যায় "হিমায়িত" হয়, তাই ক্রমবর্ধমানভাবে আরও/নতুন বৈশিষ্ট্যগুলি শুধুমাত্র 3.x ফায়ারস্টোর ক্লায়েন্ট লাইব্রেরিতে উপলব্ধ হবে৷
এই মাইগ্রেশনের সাথে এগিয়ে যাওয়ার জন্য, এই টিউটোরিয়ালের প্রাথমিক ধাপগুলি হল:
- সেটআপ/প্রিওয়ার্ক
- ক্লাউড ফায়ারস্টোর লাইব্রেরি যোগ করুন
- অ্যাপ্লিকেশন ফাইল আপডেট করুন
3. সেটআপ/প্রিওয়ার্ক
আমরা টিউটোরিয়ালের মূল অংশ নিয়ে যাওয়ার আগে, আসুন আমাদের প্রকল্প সেট আপ করি, কোড পাই, তারপর বেসলাইন অ্যাপটি স্থাপন করি যাতে আমরা জানি যে আমরা কাজের কোড দিয়ে শুরু করেছি।
1. সেটআপ প্রকল্প
আমরা মডিউল 3 কোডল্যাব সম্পূর্ণ করার জন্য আপনি যে প্রকল্পটি ব্যবহার করেছেন সেই একই প্রকল্পটি পুনরায় ব্যবহার করার পরামর্শ দিই। বিকল্পভাবে, আপনি একটি একেবারে নতুন প্রকল্প তৈরি করতে পারেন বা অন্য একটি বিদ্যমান প্রকল্প পুনরায় ব্যবহার করতে পারেন। নিশ্চিত করুন যে প্রকল্পটির একটি সক্রিয় বিলিং অ্যাকাউন্ট আছে এবং অ্যাপ ইঞ্জিন (অ্যাপ) সক্ষম আছে।
2. বেসলাইন নমুনা অ্যাপ পান
এই কোডল্যাবের পূর্বশর্তগুলির মধ্যে একটি হল একটি কার্যকরী মডিউল 3 নমুনা অ্যাপ থাকা। আপনার যদি এটি না থাকে তবে এখানে এগিয়ে যাওয়ার আগে মডিউল 3 টিউটোরিয়াল (উপরের লিঙ্ক) সম্পূর্ণ করুন। অন্যথায় আপনি যদি ইতিমধ্যেই এর বিষয়বস্তুগুলির সাথে পরিচিত হন তবে আপনি নীচের মডিউল 3 কোডটি ধরে শুরু করতে পারেন।
আপনি আপনার বা আমাদের ব্যবহার করুন না কেন, মডিউল 3 কোড যেখানে আমরা শুরু করব। এই মডিউল 6 কোডল্যাব আপনাকে প্রতিটি ধাপে নিয়ে যায় এবং যখন সম্পূর্ণ হয়, এটি ফিনিশ পয়েন্টে কোডের সাথে সাদৃশ্যপূর্ণ হওয়া উচিত। (এই টিউটোরিয়ালটি শুধুমাত্র পাইথন 3 এর জন্য উপলব্ধ।)
- শুরু: মডিউল 3 রেপো
- ফিনিশ: মডিউল 6 রেপো
- সম্পূর্ণ রেপো (ক্লোন বা ডাউনলোড জিপ)
মডিউল 3 ফাইলের ডিরেক্টরি (আপনার বা আমাদের) এইরকম হওয়া উচিত:
$ ls
README.md main.py templates
app.yaml requirements.txt
3. (পুনরায়) মডিউল 3 অ্যাপ স্থাপন করুন
এখন চালানোর জন্য আপনার অবশিষ্ট প্রিওয়ার্ক পদক্ষেপগুলি:
-
gcloud
কমান্ড-লাইন টুলের সাথে নিজেকে পুনরায় পরিচিত করুন (যদি NEC।) - (পুনরায়) অ্যাপ ইঞ্জিনে মডিউল 3 কোড স্থাপন করুন (যদি nec.)
একবার আপনি সফলভাবে এই পদক্ষেপগুলি সম্পাদন করেছেন এবং এটি কার্যকরী নিশ্চিত করার পরে, আমরা কনফিগারেশন ফাইলগুলি দিয়ে শুরু করে এই টিউটোরিয়ালটিতে এগিয়ে যাব।
পাইথন 2 প্রয়োজনীয়তা
- নিশ্চিত করুন যে
app.yaml
(এখনও) 3য়-পক্ষের বান্ডিল করা প্যাকেজগুলি উল্লেখ করে:grpcio
এবংsetuptools
। - নিশ্চিত করুন যে
appengine_config.py
এখনওpkg_resources
এবংgoogle.appengine.ext.vendor
ব্যবহার করে অ্যাপটিকে তৃতীয়-পক্ষের সংস্থানগুলিতে নির্দেশ করে৷ -
requirements.txt
আপডেট করার পরবর্তী বিভাগে, আপনাকে অবশ্যইgoogle-cloud-firestore==1.9.0
ব্যবহার করতে হবে কারণ এটি Python Firestore ক্লায়েন্ট লাইব্রেরির চূড়ান্ত 2.x-সামঞ্জস্যপূর্ণ সংস্করণ।- যদি আপনার
requirements.txt
google-cloud-core
এর জন্য একটি এন্ট্রি থাকে, তাহলে এটিকে যেমন আছে-এভাবে ছেড়ে দিন। -
lib
মুছুন এবংpip install -t lib -r requirements.txt
দিয়ে পুনরায় ইনস্টল করুন।
- যদি আপনার
4. কনফিগারেশন ফাইল আপডেট করুন (ক্লাউড ফায়ারস্টোর লাইব্রেরি যোগ করুন)
সেটআপের বাইরে, প্রয়োজনীয় পরবর্তী পদক্ষেপগুলি হল অ্যাপ্লিকেশন ফাইলগুলি অনুসরণ করে কনফিগারেশন আপডেট করা। পূর্বের জন্য, শুধুমাত্র কনফিগারেশন পরিবর্তন হল আপনার requirements.txt
ফাইলে একটি ছোট প্যাকেজ অদলবদল, তাই এখনই করা যাক।
google-cloud-datastore
লাইনটিকে requirements.txt
এ google-cloud-firestore
দিয়ে প্রতিস্থাপন করুন যাতে এটি এইরকম দেখায়:
Flask==1.1.2
google-cloud-firestore==2.0.2
আমরা প্রতিটি লাইব্রেরির সর্বশেষ সংস্করণ ব্যবহার করার পরামর্শ দিই; উপরের সংস্করণ সংখ্যা এই লেখার সময় সর্বশেষ. ফিনিশ রেপো ফোল্ডারের কোডটি আরও ঘন ঘন আপডেট করা হয় এবং এর একটি নতুন সংস্করণ থাকতে পারে।
অন্য কোন কনফিগারেশন পরিবর্তন নেই, তাই app.yaml
এবং templates/index.html
যেমন আছে তেমনই থাকবে।
5. অ্যাপ্লিকেশন ফাইল আপডেট করুন
শুধুমাত্র একটি অ্যাপ্লিকেশন ফাইল আছে, main.py
, তাই এই বিভাগে সমস্ত পরিবর্তন শুধুমাত্র সেই ফাইলটিকে প্রভাবিত করে৷
1. আমদানি
প্যাকেজ আমদানি পরিবর্তন করা datastore
থেকে firestore
একটি ছোট পরিবর্তন:
- আগে:
from google.cloud import datastore
- পরে:
from google.cloud import firestore
2. ফায়ারস্টোর অ্যাক্সেস
ফ্লাস্ক শুরু করার পরে, আপনার ফায়ারস্টোর ক্লায়েন্ট তৈরি করুন। উপরের মত একটি অনুরূপ পরিবর্তন করুন কিন্তু ক্লায়েন্ট আরম্ভ করার জন্য:
- আগে:
app = Flask(__name__)
ds_client = datastore.Client()
- পরে:
app = Flask(__name__)
fs_client = firestore.Client()
ক্লাউড এনডিবি থেকে ক্লাউড ডেটাস্টোরে মাইগ্রেশন করার মাধ্যমে, আপনি ইতিমধ্যেই ক্লাউড ফায়ারস্টোরে যাওয়ার জন্য হেভিলিফটিং করেছেন৷ ডেটাস্টোরের সাহায্যে, আপনি সাধারণ বৈশিষ্ট্য দ্বারা গঠিত সত্তার আকারে ডেটা রেকর্ড তৈরি করেন এবং কী দ্বারা তাদের গোষ্ঠীভুক্ত করেন । Firestore-এ ডেটা রেকর্ডগুলি হল ডকুমেন্ট, কী-মান জোড়া দিয়ে তৈরি এবং একত্রে সংগ্রহে গোষ্ঠীবদ্ধ। ডেটাস্টোর থেকে স্থানান্তরিত করার জন্য আপনাকে এই পার্থক্যগুলি সম্পর্কে চিন্তা করতে হবে কারণ আপনি যখন ডেটা রেকর্ড তৈরি করবেন এবং সেই সাথে তাদের জন্য অনুসন্ধান করবেন তখন সেগুলি বাস্তবায়িত হবে৷ আপনার ডেটাস্টোর কোড কতটা জটিল তার উপর নির্ভর করে আপনার ফলাফল পরিবর্তিত হতে পারে।
ডেটাস্টোরের জন্য, আপনি ফিল্টারিং এবং বাছাইয়ের মানদণ্ডের সাথে সত্তার প্রকারের উপর ভিত্তি করে প্রশ্ন তৈরি করেন। ফায়ারস্টোরের জন্য, ডেটা অনুসন্ধান করা একই রকম। এই ক্যোয়ারী মান, ক্লায়েন্ট ( ds_client
বা fs_client
, যথাক্রমে), এবং আমদানি অনুমান করে চলুন একটি দ্রুত উদাহরণ দেখি:
from datetime import datetime
from firestore.Query import DESCENDING
OCT1 = datetime(2020, 10, 1)
LIMIT = 10
Datastore-এর জন্য, আসুন নিচের ক্রমে 2020 অক্টোবর 1-এর থেকে নতুন দশটি সাম্প্রতিক Visit
সত্তার জন্য প্রশ্ন করি:
query = ds_client.query(kind='Visit')
query.add_filter('timestamp', '>=', datetime(2020, 10, 1))
query.order = ['-timestamp']
return query.fetch(limit=LIMIT)
Firestore-এর জন্য একই কাজ, Visit
সংগ্রহ থেকে:
query = fs_client.collection('Visit')
query.where('timestamp', '>=', datetime(2020, 10, 1))
query.order_by('timestamp', direction=DESCENDING)
return query.limit(LIMIT).stream()
নমুনা অ্যাপ ক্যোয়ারী সহজ (কোনও "WHERE" ধারা নেই)। পর্যালোচনা হিসাবে, এখানে ক্লাউড ডেটাস্টোর কোড রয়েছে:
- আগে:
def store_visit(remote_addr, user_agent):
entity = datastore.Entity(key=ds_client.key('Visit'))
entity.update({
'timestamp': datetime.now(),
'visitor': '{}: {}'.format(remote_addr, user_agent),
})
ds_client.put(entity)
def fetch_visits(limit):
query = ds_client.query(kind='Visit')
query.order = ['-timestamp']
return query.fetch(limit=limit)
Firestore-এ স্থানান্তরিত হলে, আপনি সত্তার মতো নতুন নথি তৈরি করতে এবং আগে দেখানো প্রশ্নগুলি দেখতে পাবেন।
- পরে:
def store_visit(remote_addr, user_agent):
doc_ref = fs_client.collection('Visit')
doc_ref.add({
'timestamp': datetime.now(),
'visitor': '{}: {}'.format(remote_addr, user_agent),
})
def fetch_visits(limit):
visits_ref = fs_client.collection('Visit')
visits = (v.to_dict() for v in visits_ref.order_by('timestamp',
direction=firestore.Query.DESCENDING).limit(limit).stream())
return visits
মূল ফাংশন root()
index.html
টেমপ্লেট ফাইলের মতোই থাকে। আপনার পরিবর্তনগুলি দুবার পরীক্ষা করুন, সংরক্ষণ করুন, স্থাপন করুন এবং যাচাই করুন৷
6. সারাংশ/পরিষ্কার
অ্যাপ্লিকেশন স্থাপন
gcloud app deploy
এর সাথে আপনার অ্যাপ পুনরায় স্থাপন করুন এবং অ্যাপটি কাজ করছে তা নিশ্চিত করুন। আপনার কোড এখন মডিউল 6 রেপোতে যা আছে তার সাথে মেলে (অথবা এটি আপনার পছন্দ হলে একটি 2.x সংস্করণ)।
আপনি যদি পূর্ববর্তী কোডল্যাবগুলির কোনওটি না করে এই সিরিজে ঝাঁপিয়ে পড়েন তবে অ্যাপটি নিজেই পরিবর্তন হবে না; এটি মূল ওয়েব পৃষ্ঠায় সমস্ত পরিদর্শন নিবন্ধন করে ( /
) এবং আপনি একবার সাইটটিতে পর্যাপ্ত বার পরিদর্শন করার পরে এটির মতো দেখায়:
এই ঐচ্ছিক মডিউল 6 মাইগ্রেশন সম্পূর্ণ করার জন্য অভিনন্দন। অ্যাপ ইঞ্জিন ডেটা সঞ্চয়স্থান যতদূর যায় ততদূর আপনি যে মাইগ্রেশনগুলি করতে পারেন তা চূড়ান্ত না হলে এটি সম্ভবত একটি। একটি বিকল্প মাইগ্রেশন যা আপনি বিবেচনা করতে পারেন তা হল ক্লাউড রানের জন্য আপনার অ্যাপকে কনটেইনারাইজ করা যদি আপনি ইতিমধ্যে না করে থাকেন (নিচে লিঙ্ক করা মডিউল 4 এবং 5 দেখুন)।
ঐচ্ছিক: পরিষ্কার করুন
আপনি পরবর্তী মাইগ্রেশন কোডল্যাবে যাওয়ার জন্য প্রস্তুত না হওয়া পর্যন্ত বিল এড়াতে পরিষ্কার করার বিষয়ে কী করবেন? বিদ্যমান বিকাশকারী হিসাবে, আপনি সম্ভবত ইতিমধ্যেই অ্যাপ ইঞ্জিনের মূল্যের তথ্যে আপ-টু-স্পীড করছেন৷
ঐচ্ছিক: অ্যাপ অক্ষম করুন
আপনি যদি পরবর্তী টিউটোরিয়ালে যেতে এখনও প্রস্তুত না হন, তাহলে চার্জ এড়াতে আপনার অ্যাপটি অক্ষম করুন । আপনি যখন পরবর্তী কোডল্যাবে যাওয়ার জন্য প্রস্তুত হন, আপনি এটি পুনরায় সক্ষম করতে পারেন৷ আপনার অ্যাপটি অক্ষম থাকাকালীন, এটি চার্জ করার জন্য কোনও ট্রাফিক পাবে না, তবে আরেকটি জিনিস যা আপনার জন্য বিল করা যেতে পারে তা হল আপনার ফায়ারস্টোর ব্যবহার যদি এটি বিনামূল্যের কোটা অতিক্রম করে, তাই সেই সীমার মধ্যে পড়ার জন্য যথেষ্ট মুছে ফেলুন।
অন্যদিকে, আপনি যদি মাইগ্রেশন চালিয়ে যেতে না চান এবং সবকিছু সম্পূর্ণরূপে মুছে ফেলতে চান, তাহলে আপনি আপনার প্রকল্পটি বন্ধ করতে পারেন।
পরবর্তী পদক্ষেপ
এই টিউটোরিয়ালের বাইরে, আরও কয়েকটি মাইগ্রেশন মডিউল কোডল্যাব রয়েছে যা আপনি বিবেচনা করতে পারেন:
- মডিউল 7: অ্যাপ ইঞ্জিন পুশ টাস্ক সারি (আপনি [পুশ] টাস্ক সারি ব্যবহার করলে প্রয়োজনীয়)
- মডিউল 1 অ্যাপে অ্যাপ ইঞ্জিন
taskqueue
পুশ টাস্ক যোগ করে - মডিউল 8-এ ক্লাউড টাস্কে মাইগ্রেট করার জন্য ব্যবহারকারীদের প্রস্তুত করে
- মডিউল 1 অ্যাপে অ্যাপ ইঞ্জিন
- মডিউল 4: ডকার দিয়ে ক্লাউড রানে মাইগ্রেট করুন
- ক্লাউড রান উইথ ডকারে চালানোর জন্য আপনার অ্যাপটি কন্টেইনারাইজ করুন
- এই মাইগ্রেশন আপনাকে পাইথন 2 এ থাকতে দেয়।
- মডিউল 5: ক্লাউড বিল্ডপ্যাক সহ ক্লাউড রানে মাইগ্রেট করুন
- ক্লাউড বিল্ডপ্যাকগুলির সাথে ক্লাউড রানে চালানোর জন্য আপনার অ্যাপটি কন্টেইনারাইজ করুন
- ডকার, কন্টেইনার বা
Dockerfile
সম্পর্কে আপনার কিছু জানার দরকার নেই। - আপনার অ্যাপটি ইতিমধ্যেই পাইথন 3 এ স্থানান্তরিত হওয়া প্রয়োজন (বিল্ডপ্যাকগুলি পাইথন 2 সমর্থন করে না)
7. অতিরিক্ত সম্পদ
অ্যাপ ইঞ্জিন মাইগ্রেশন মডিউল কোডল্যাব সমস্যা/প্রতিক্রিয়া
আপনি যদি এই কোডল্যাবের সাথে কোনো সমস্যা খুঁজে পান, অনুগ্রহ করে ফাইল করার আগে প্রথমে আপনার সমস্যাটি অনুসন্ধান করুন। অনুসন্ধান এবং নতুন সমস্যা তৈরি করার লিঙ্ক:
মাইগ্রেশন সম্পদ
মডিউল 3 (স্টার্ট) এবং মডিউল 6 (ফিনিশ) এর জন্য রেপো ফোল্ডারগুলির লিঙ্কগুলি নীচের টেবিলে পাওয়া যাবে। এগুলি সমস্ত অ্যাপ ইঞ্জিন মাইগ্রেশনের জন্য রেপো থেকে অ্যাক্সেস করা যেতে পারে যা আপনি একটি ZIP ফাইল ক্লোন বা ডাউনলোড করতে পারেন।
অ্যাপ ইঞ্জিন সম্পদ
নীচে এই নির্দিষ্ট মাইগ্রেশন সম্পর্কিত অতিরিক্ত সংস্থান রয়েছে:
- পাইথন ক্লাউড ডেটাস্টোর এবং ক্লাউড ফায়ারস্টোর রেফারেন্স
- Python 3 এবং GAE পরবর্তী প্রজন্মের রানটাইমে স্থানান্তর করা হচ্ছে
- সাধারণ