1. खास जानकारी
सर्वरलेस माइग्रेशन स्टेशन की कोडलैब सीरीज़ (अपने हिसाब से सीखने और प्रैक्टिकल करने वाले ट्यूटोरियल) और इससे जुड़े वीडियो का मकसद, Google Cloud सर्वरलेस डेवलपर की मदद करना है. इससे वे एक या उससे ज़्यादा माइग्रेशन करके, अपने ऐप्लिकेशन को बेहतर बना सकते हैं. इनमें मुख्य रूप से लेगसी सेवाओं से माइग्रेट करना शामिल है. ऐसा करने से, आपके ऐप्लिकेशन को एक जगह से दूसरी जगह ले जाना आसान हो जाता है. साथ ही, आपको ज़्यादा विकल्प और सुविधा मिलती है. इससे आपको Cloud प्रॉडक्ट की ज़्यादा रेंज के साथ इंटिग्रेट करने और उन्हें ऐक्सेस करने में मदद मिलती है. साथ ही, भाषा के नए वर्शन पर आसानी से अपग्रेड किया जा सकता है. शुरुआत में, इस सीरीज़ में मुख्य तौर पर App Engine (स्टैंडर्ड एनवायरमेंट) डेवलपर के लिए कॉन्टेंट शामिल किया गया था. हालांकि, अब इसमें अन्य सर्वरलेस प्लैटफ़ॉर्म के लिए भी कॉन्टेंट शामिल किया गया है. जैसे, Cloud Functions और Cloud Run. इसके अलावा, इसमें अन्य प्लैटफ़ॉर्म के लिए भी कॉन्टेंट शामिल किया गया है.
पहले, डेवलपर को भाषा के वर्शन अपग्रेड करने से पहले, App Engine की लेगसी "बंडल्ड सेवाओं" जैसे कि Datastore और Memcache से माइग्रेट करना पड़ता था. ये दोनों काम एक के बाद एक करने पड़ते थे, इसलिए इनमें काफ़ी मुश्किल आ सकती थी. बंडल की गई कई मुख्य सेवाओं को दूसरी जनरेशन की App Engine सेवा में उपलब्ध कराकर, डेवलपर अब अपने ऐप्लिकेशन को नए रनटाइम पर पोर्ट कर सकते हैं. साथ ही, बंडल की गई (ज़्यादातर) सेवाओं का इस्तेमाल जारी रख सकते हैं. इस कोडलैब में, आपको Python 2 से Python 3 में किसी सैंपल ऐप्लिकेशन को अपग्रेड करने का तरीका बताया गया है. साथ ही, इसमें App Engine NDB लाइब्रेरी के ज़रिए, बंडल की गई Datastore सेवा का इस्तेमाल जारी रखने के बारे में भी बताया गया है. इस ट्यूटोरियल में बताया जाएगा कि बंडल की गई ज़्यादातर सेवाओं का इस्तेमाल करने के लिए, कोड में सिर्फ़ एक छोटा सा अपडेट करना होता है. हालांकि, कुछ सेवाओं के लिए कोड में बड़े बदलाव करने पड़ते हैं. इनके बारे में "दूसरा भाग" में बताया जाएगा. यह एक फ़ॉलो-अप मॉड्यूल और कोडलैब है.
आपको इनके बारे में जानकारी मिलेगी
- App Engine के सैंपल ऐप्लिकेशन को Python 2 से 3 में पोर्ट करना
- ऐप्लिकेशन के कॉन्फ़िगरेशन को अपडेट करके, उसमें App Engine SDK टूल को शामिल करें
- Python 3 जैसे दूसरी जनरेशन के रनटाइम में, बंडल की गई सेवाओं के साथ काम करने वाले ऐप्लिकेशन में SDK कोड जोड़ें
आपको किन चीज़ों की ज़रूरत होगी
- चालू GCP बिलिंग खाते वाला Google Cloud प्रोजेक्ट
- Python की बुनियादी जानकारी
- Linux की सामान्य कमांड के बारे में जानकारी होना
- App Engine ऐप्लिकेशन डेवलप और डिप्लॉय करने की बुनियादी जानकारी
- App Engine का मॉड्यूल 1 ऐप्लिकेशन (इसका कोडलैब पूरा करें [सुझाया गया] या रिपॉज़िटरी से ऐप्लिकेशन कॉपी करें)
सर्वे
इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?
Python के साथ अपने अनुभव को आप क्या रेटिंग देंगे?
Google Cloud की सेवाओं को इस्तेमाल करने के अपने अनुभव को आप क्या रेटिंग देंगे?
2. बैकग्राउंड
App Engine की ओरिजनल सेवा साल 2008 में लॉन्च हुई थी. इसमें लेगसी एपीआई का एक सेट शामिल था. इन्हें अब बंडल्ड सेवाएं कहा जाता है. इससे डेवलपर को दुनिया भर में ऐप्लिकेशन बनाने और उन्हें डिप्लॉय करने में आसानी होती है. इन सेवाओं में Datastore, Memcache, और Task Queue शामिल हैं. हालांकि, यह सुविधा काफ़ी आसान थी, लेकिन उपयोगकर्ताओं को अपने ऐप्लिकेशन को एक प्लैटफ़ॉर्म से दूसरे प्लैटफ़ॉर्म पर ले जाने में समस्या आ रही थी. ऐसा इसलिए हो रहा था, क्योंकि वे App Engine से जुड़े मालिकाना हक वाले एपीआई का इस्तेमाल कर रहे थे. इसलिए, वे चाहते थे कि उनके ऐप्लिकेशन को एक प्लैटफ़ॉर्म से दूसरे प्लैटफ़ॉर्म पर ले जाना आसान हो. इसके अलावा, बंडल की गई कई सेवाओं को अलग-अलग क्लाउड प्रॉडक्ट के तौर पर उपलब्ध कराया गया. इस वजह से, App Engine टीम ने 2018 में अगली जनरेशन का प्लैटफ़ॉर्म लॉन्च किया.
Python 2 के डेवलपर, Python 3 पर अपग्रेड करने के लिए उत्सुक हैं. बंडल की गई सेवाओं का इस्तेमाल करने वाले 2.x ऐप्लिकेशन को, उन सेवाओं से माइग्रेट करना पड़ा. इसके बाद ही, उनके ऐप्लिकेशन को 3.x पर पोर्ट किया जा सका. इससे, एक के बाद एक दो बार माइग्रेशन करना पड़ा. यह प्रोसेस मुश्किल भी हो सकती है. इस ट्रांज़िशन में मदद करने के लिए, App Engine टीम ने साल 2021 के पतझड़ में एक "वर्महोल" पेश किया था. इससे अगली जनरेशन के रनटाइम पर चलने वाले ऐप्लिकेशन, बंडल की गई कई सेवाओं को ऐक्सेस कर सकते हैं. इस रिलीज़ में, ओरिजनल रनटाइम में उपलब्ध सभी सेवाएं शामिल नहीं हैं. हालांकि, Datastore, Task Queue, और Memcache जैसी मुख्य सेवाएं उपलब्ध हैं.
इस कोडलैब में, आपके ऐप्लिकेशन को Python 3 पर अपग्रेड करने के लिए ज़रूरी बदलावों के बारे में बताया गया है. साथ ही, इसमें बंडल की गई सेवाओं का इस्तेमाल जारी रखने के बारे में भी बताया गया है. हमारा मकसद यह है कि आपके ऐप्लिकेशन, नए रनटाइम पर काम करें. इससे आपको बंडल की गई सेवाओं से, Cloud की स्टैंडअलोन सेवाओं या तीसरे पक्ष के विकल्पों पर अपनी समयसीमा के हिसाब से माइग्रेट करने की अनुमति मिलती है. इससे 3.x वर्शन पर अपग्रेड करने में कोई रुकावट नहीं आती. अब बंडल की गई सेवाओं से माइग्रेट करना ज़रूरी नहीं है. हालांकि, ऐसा करने से आपको ज़्यादा पोर्टेबिलिटी और फ़्लेक्सिबिलिटी मिलती है. इससे यह तय किया जा सकता है कि आपके ऐप्लिकेशन कहां होस्ट किए जा सकते हैं. इसमें उन प्लैटफ़ॉर्म पर स्विच करना भी शामिल है जो आपके वर्कलोड को बेहतर तरीके से पूरा कर सकते हैं. इसके अलावा, आपके पास App Engine पर ही बने रहने का विकल्प भी है. इसके लिए, आपको सिर्फ़ ज़्यादा आधुनिक भाषा रिलीज़ पर अपग्रेड करना होगा.
Module 1 Python 2 का सैंपल ऐप्लिकेशन, App Engine NDB के ज़रिए Datastore बंडल की गई सेवा का इस्तेमाल करता है. ऐप्लिकेशन ने वेबऐप्लिकेशन2 से फ़्रेमवर्क को Flask में पहले ही माइग्रेट कर लिया है. यह काम Module 1 codelab में पूरा हो गया था. हालांकि, Datastore का इस्तेमाल अब भी किया जा रहा है.
इस ट्यूटोरियल में ये चरण शामिल हैं:
- सेटअप/प्रीवर्क
- कॉन्फ़िगरेशन अपडेट करना
- ऐप्लिकेशन कोड में बदलाव करना
3. सेटअप/प्रीवर्क
इस सेक्शन में, यह बताया गया है कि:
- अपना Cloud प्रोजेक्ट सेट अप करना
- बेसलाइन सैंपल ऐप्लिकेशन पाना
- बेसलाइन ऐप्लिकेशन को (फिर से) डिप्लॉय करें और उसकी पुष्टि करें
इन चरणों से यह पक्का किया जाता है कि आप काम करने वाले कोड से शुरुआत कर रहे हैं.
1. प्रोजेक्ट सेट अप करना
अगर आपने मॉड्यूल 1 का कोडलैब पूरा कर लिया है, तो हमारा सुझाव है कि आप उसी प्रोजेक्ट और कोड का फिर से इस्तेमाल करें. इसके अलावा, एक नया Cloud प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. पक्का करें कि प्रोजेक्ट में ऐसा चालू बिलिंग खाता हो जिसमें App Engine सेवा चालू हो.
2. बेसलाइन सैंपल ऐप्लिकेशन पाना
इस कोडलैब के लिए ज़रूरी है कि आपके पास Module 1 का App Engine ऐप्लिकेशन हो. इसके लिए, Module 1 का कोडलैब पूरा करें (सुझाया गया) या repo से Module 1 का ऐप्लिकेशन कॉपी करें. चाहे आपने बनाया हो या हमने, मॉड्यूल 1 का कोड वह जगह है जहां से हम "शुरू करेंगे." इस कोडलैब में, आपको हर चरण के बारे में बताया गया है. साथ ही, आखिर में ऐसा कोड दिया गया है जो मॉड्यूल 7 के रेपो फ़ोल्डर "FINISH" में मौजूद कोड जैसा है.
- शुरू करें: मॉड्यूल 1 फ़ोल्डर (Python 2)
- पूरा करें: Module 1b folder (Python 3)
- पूरी रिपो (क्लोन करने या ZIP फ़ाइल डाउनलोड करने के लिए)
भले ही, आपने मॉड्यूल 1 के किसी भी ऐप्लिकेशन का इस्तेमाल किया हो, फ़ोल्डर ऐसा दिखना चाहिए. इसमें lib फ़ोल्डर भी हो सकता है:
$ ls README.md appengine_config.py requirements.txt app.yaml main.py templates
3. बेसलाइन ऐप्लिकेशन को (फिर से) डिप्लॉय करना
Module 1 ऐप्लिकेशन को (फिर से) डिप्लॉय करने के लिए, यह तरीका अपनाएं:
- अगर
libफ़ोल्डर मौजूद है, तो उसे मिटाएं. इसके बाद,pip install -t lib -r requirements.txtचलाकरlibको फिर से भरें. अगर आपके पास Python 2 और 3, दोनों इंस्टॉल हैं, तो आपकोpip2कमांड का इस्तेमाल करना पड़ सकता है. - पक्का करें कि आपने
gcloudकमांड-लाइन टूल को इंस्टॉल और शुरू कर लिया हो. साथ ही, आपने इसके इस्तेमाल की समीक्षा कर ली हो. - अगर आपको हर
gcloudकमांड के साथPROJECT_IDनहीं डालना है, तो अपने Cloud प्रोजेक्ट कोgcloud config set projectPROJECT_IDके साथ सेट करें. gcloud app deployकी मदद से, सैंपल ऐप्लिकेशन को डिप्लॉय करना- पुष्टि करें कि मॉड्यूल 1 ऐप्लिकेशन, उम्मीद के मुताबिक काम कर रहा है. साथ ही, इसमें हाल ही की विज़िट की जानकारी दिख रही है. इसकी जानकारी यहां दी गई है

4. कॉन्फ़िगरेशन अपडेट करना
इन चरणों को पूरा करने के बाद, अगर आपको लगता है कि आपका वेब ऐप्लिकेशन काम कर रहा है, तो इस ऐप्लिकेशन को Python 3 में पोर्ट किया जा सकता है. इसके लिए, सबसे पहले कॉन्फ़िगरेशन से शुरुआत करें.
requirements.txt फ़ाइल में एसडीके टूल जोड़ना
App Engine Python 3 रनटाइम, तीसरे पक्ष की लाइब्रेरी का इस्तेमाल करने के लिए ज़रूरी ओवरहेड को काफ़ी कम कर देता है. इसके लिए, आपको सिर्फ़ requirements.txt में उन्हें लिस्ट करना होगा. Python 3 में बंडल की गई सेवाओं का इस्तेमाल करने के लिए, उसमें App Engine SDK पैकेज, appengine-python-standard जोड़ें. SDK पैकेज, मॉड्यूल 1 से Flask में शामिल होता है:
flask
appengine-python-standard
app.yaml फ़ाइल अपडेट करना
अपनी app.yaml फ़ाइल में कॉन्फ़िगरेशन में किए गए बदलावों को लागू करने के लिए, यहां दिया गया तरीका अपनाएं:
runtimeडायरेक्टिव को Python 3 के उस वर्शन से बदलें जो काम करता है. उदाहरण के लिए, Python 3.10 के लिएpython310तय करें.threadsafeऔरapi_version, दोनों डायरेक्टिव मिटा दें, क्योंकि Python 3 में इनमें से किसी का भी इस्तेमाल नहीं किया जाता.handlersसेक्शन को पूरी तरह से मिटा दें, क्योंकि इस ऐप्लिकेशन में सिर्फ़ स्क्रिप्ट हैंडलर हैं. अगर आपके ऐप्लिकेशन में स्टैटिक फ़ाइल हैंडलर हैं, तो उन्हेंhandlersमें वैसे ही रहने दें.- Python 3 रनटाइम, बिल्ट-इन तीसरे पक्ष की लाइब्रेरी के साथ काम नहीं करता. हालांकि, Python 2 रनटाइम के साथ ऐसा नहीं है. अगर आपके ऐप्लिकेशन में
app.yamlमेंlibrariesसेक्शन है, तो पूरे सेक्शन को मिटाएं. (सिर्फ़ ज़रूरी पैकेज कोrequirements.txtमें शामिल करना होगा. जैसे, नॉन-बिल्ट-इन लाइब्रेरी.) हमारे सैंपल ऐप्लिकेशन मेंlibrariesसेक्शन नहीं है. इसलिए, अगले चरण पर जाएं. - इसका इस्तेमाल करने के लिए,
app_engine_apisडायरेक्टिव कोtrueपर सेट करें. यह ऊपर दिए गएrequirements.txtमें App Engine SDK पैकेज जोड़ने के बराबर है.
app.yaml में किए जाने वाले ज़रूरी बदलावों के बारे में खास जानकारी:
BEFORE:
runtime: python27
threadsafe: yes
api_version: 1
handlers:
- url: /.*
script: main.app
AFTER:
runtime: python310
app_engine_apis: true
अन्य कॉन्फ़िगरेशन फ़ाइलें
क्योंकि सभी तीसरे पक्ष के पैकेज को सिर्फ़ requirements.txt में लिस्ट करना होता है. अगर आपके पास appengine_config.py में कोई खास जानकारी नहीं है, तो इसकी ज़रूरत नहीं है. इसलिए, इसे मिटा दें. इसी तरह, बिल्ड प्रोसेस के दौरान सभी तीसरे पक्ष की लाइब्रेरी अपने-आप इंस्टॉल हो जाती हैं. इसलिए, उन्हें कॉपी करने या वेंडर करने की ज़रूरत नहीं होती. इसका मतलब है कि अब pip install कमांड और lib फ़ोल्डर की ज़रूरत नहीं है. इसलिए, इसे मिटा दें. खास जानकारी जनरेट की जा रही है:
appengine_config.pyफ़ाइल मिटाएंlibफ़ोल्डर मिटा दिया जाए?
कॉन्फ़िगरेशन में किए जाने वाले सभी ज़रूरी बदलाव पूरे हो गए हैं.
5. ऐप्लिकेशन कोड में बदलाव करना
Python 3 रनटाइम एनवायरमेंट में, बंडल की गई ज़्यादातर सेवाओं को ऐक्सेस करने के लिए, main.py में वेब सर्वर गेटवे इंटरफ़ेस (WSGI) ऐप्लिकेशन ऑब्जेक्ट को रैप करने वाले कोड के एक छोटे से हिस्से की ज़रूरत होती है. रैपर फ़ंक्शन google.appengine.api.wrap_wsgi_app() है. इसका इस्तेमाल करने के लिए, इसे इंपोर्ट करें और अपने WSGI ऑब्जेक्ट को इससे रैप करें. main.py में Flask के लिए ज़रूरी अपडेट दिखाने के लिए, यहां दिए गए बदलाव करें:
BEFORE:
from flask import Flask, render_template, request
from google.appengine.ext import ndb
app = Flask(__name__)
AFTER:
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)
अन्य Python फ़्रेमवर्क के लिए, WSGI-रैपिंग के उदाहरणों के लिए दस्तावेज़ देखें.
इस उदाहरण से, आपके ऐप्लिकेशन को Python 3 में बंडल की गई ज़्यादातर सेवाओं का ऐक्सेस मिल जाता है. हालाँकि, Blobstore और Mail जैसी अन्य सेवाओं के लिए अतिरिक्त कोड की ज़रूरत होती है. हम उन सैंपल के बारे में, माइग्रेशन के दूसरे मॉड्यूल में बताएंगे.
Module 1 के सैंपल ऐप्लिकेशन में App Engine की बंडल की गई सेवाओं का इस्तेमाल करने के लिए, ज़रूरी बदलाव पूरे हो गए हैं. ऐप्लिकेशन पहले से ही Python 2 और 3 के साथ काम करता है. इसलिए, इसे Python 3 पर पोर्ट करने के लिए, कॉन्फ़िगरेशन में किए गए बदलावों के अलावा कोई और बदलाव करने की ज़रूरत नहीं है. आखिरी चरण: बदलाव किए गए इस ऐप्लिकेशन को अगली जनरेशन के App Engine Python 3 रनटाइम पर डिप्लॉय करें. साथ ही, पुष्टि करें कि अपडेट हो गए हैं.
6. खास जानकारी/सफ़ाई
इस सेक्शन में, ऐप्लिकेशन को डिप्लॉय करके इस कोडलैब को पूरा किया गया है. साथ ही, यह पुष्टि की गई है कि ऐप्लिकेशन ठीक से काम कर रहा है और आउटपुट में कोई गड़बड़ी नहीं है. ऐप्लिकेशन की पुष्टि होने के बाद, क्लीन-अप करें और अगले चरणों पर विचार करें.
ऐप्लिकेशन डिप्लॉय करना और उसकी पुष्टि करना
gcloud app deploy की मदद से Python 3 ऐप्लिकेशन को डिप्लॉय करें. साथ ही, पुष्टि करें कि ऐप्लिकेशन, Python 2 में काम करने की तरह ही काम कर रहा है. फ़ंक्शन में कोई बदलाव नहीं किया गया है. इसलिए, आउटपुट मॉड्यूल 1 ऐप्लिकेशन जैसा ही होना चाहिए:

फ़ाइनल नोट
- अपने जवाब की तुलना Module 1b folder (FINISH) में मौजूद जवाब से करें. अगर आपने कोई गलती की है, तो उसे ठीक करें.
- अगर आपका ऐप्लिकेशन अब भी
webapp2का इस्तेमाल करता है, तो इस पेज पर जाकर, मॉड्यूल 0main.pyकी तुलना मॉड्यूल 1bmain.pyसे करें. इसके बाद, मॉड्यूल 1 कोडलैब पूरा करें. इससे आपकोwebapp2से Flask पर माइग्रेट करने का तरीका पता चलेगा.
Python 2 वाले App Engine ऐप्लिकेशन को Python 3 में पोर्ट करने के लिए बधाई. साथ ही, इस समय बंडल की गई सेवाओं का इस्तेमाल जारी रखने के लिए भी बधाई.
व्यवस्थित करें
सामान्य
अगर आपको अभी और काम नहीं करना है, तो हमारा सुझाव है कि आप अपने App Engine ऐप्लिकेशन को बंद कर दें, ताकि आपसे शुल्क न लिया जाए. हालांकि, अगर आपको कुछ और टेस्ट या एक्सपेरिमेंट करने हैं, तो App Engine प्लैटफ़ॉर्म पर मुफ़्त कोटा उपलब्ध है. इसलिए, जब तक आप इस्तेमाल की उस सीमा से ज़्यादा नहीं होते हैं, तब तक आपसे कोई शुल्क नहीं लिया जाएगा. यह शुल्क कंप्यूट के लिए है. हालांकि, App Engine की सेवाओं के लिए भी शुल्क लिया जा सकता है. इसलिए, ज़्यादा जानकारी के लिए कीमत वाला पेज देखें. अगर इस माइग्रेशन में अन्य क्लाउड सेवाएं शामिल हैं, तो उनके लिए अलग से बिल भेजा जाता है. अगर लागू हो, तो दोनों ही मामलों में, नीचे दिया गया "इस कोडलैब के लिए खास जानकारी" सेक्शन देखें.
पूरी जानकारी के लिए बता दें कि App Engine जैसे Google Cloud के सर्वरलेस कंप्यूट प्लैटफ़ॉर्म पर डिप्लॉय करने से, बिल्ड और स्टोरेज के लिए मामूली शुल्क लगता है. Cloud Build का अपना मुफ़्त कोटा होता है. साथ ही, Cloud Storage का भी अपना मुफ़्त कोटा होता है. उस इमेज को सेव करने के लिए, स्टोरेज कोटा का कुछ हिस्सा इस्तेमाल किया जाता है. हालांकि, ऐसा हो सकता है कि आपके देश/इलाके में बिना किसी शुल्क के स्टोरेज इस्तेमाल करने की सुविधा उपलब्ध न हो. इसलिए, स्टोरेज के इस्तेमाल पर नज़र रखें, ताकि संभावित लागत को कम किया जा सके. Cloud Storage के कुछ "फ़ोल्डर" की समीक्षा करनी चाहिए. इनमें ये शामिल हैं:
console.cloud.google.com/storage/browser/LOC.artifacts.PROJECT_ID.appspot.com/containers/imagesconsole.cloud.google.com/storage/browser/staging.PROJECT_ID.appspot.com- ऊपर दिए गए स्टोरेज लिंक, आपके
PROJECT_IDऔर *LOC*ation पर निर्भर करते हैं. उदाहरण के लिए, अगर आपका ऐप्लिकेशन अमेरिका में होस्ट किया गया है, तो "us" दिखेगा.
दूसरी ओर, अगर आपको इस ऐप्लिकेशन या माइग्रेशन से जुड़े अन्य कोडलैब का इस्तेमाल नहीं करना है और आपको सब कुछ पूरी तरह से मिटाना है, तो अपना प्रोजेक्ट बंद करें.
इस कोडलैब के लिए खास तौर पर
यहां दी गई सेवाएं, इस कोड सीखने की लैब के लिए खास तौर पर बनाई गई हैं. ज़्यादा जानकारी के लिए, हर प्रॉडक्ट का दस्तावेज़ देखें:
- App Engine Datastore सेवा, Cloud Datastore (Cloud Firestore in Datastore mode) से मिलती है. इसमें भी बिना शुल्क वाली सेवा उपलब्ध है. ज़्यादा जानकारी के लिए, इसका कीमत वाला पेज देखें.
अगले चरण
यहां से कई काम किए जा सकते हैं:
- बंडल की गई सेवाओं का इस्तेमाल करके कोड अपडेट करना. इसके लिए, कोड में ज़्यादा बदलाव करने पड़ते हैं
- बंडल की गई सेवाओं से, Cloud के स्टैंडअलोन प्रॉडक्ट पर माइग्रेट करना
- App Engine से किसी दूसरे Cloud serverless प्लैटफ़ॉर्म पर माइग्रेट करना
Blobstore, Mail, और Deferred जैसी अन्य बंडल की गई सेवाओं को ऐक्सेस करने के लिए, कोड में ज़्यादा बदलाव करने पड़ते हैं. App Engine की लेगसी बंडल्ड सेवाओं से दूर जाने पर फ़ोकस करने वाले माइग्रेशन मॉड्यूल में ये शामिल हैं:
- दूसरा मॉड्यूल: App Engine NDB से Cloud NDB पर माइग्रेट करना
- मॉड्यूल 7-9: App Engine TaskQueue (पुश टास्क) से Cloud Tasks पर माइग्रेट करना
- मॉड्यूल 12-13: App Engine Memcache से Cloud Memorystore पर माइग्रेट करना
- मॉड्यूल 15-16: App Engine Blobstore से Cloud Storage पर माइग्रेट करना
- मॉड्यूल 18-19: App Engine TaskQueue (पुल टास्क) से Cloud Pub/Sub पर माइग्रेट करना
App Engine अब Google Cloud में सर्वरलेस प्लैटफ़ॉर्म नहीं है. अगर आपके पास कोई छोटा App Engine ऐप्लिकेशन है या ऐसा ऐप्लिकेशन है जिसमें सीमित सुविधाएं हैं और आपको उसे स्टैंडअलोन माइक्रोसेवा में बदलना है या आपको किसी मोनोलिथिक ऐप्लिकेशन को फिर से इस्तेमाल किए जा सकने वाले कई कॉम्पोनेंट में बांटना है, तो Cloud Functions पर माइग्रेट करने के लिए ये अच्छी वजहें हैं. अगर कंटेनर बनाने की प्रोसेस, ऐप्लिकेशन डेवलपमेंट वर्कफ़्लो का हिस्सा बन गई है, तो Cloud Run पर माइग्रेट करें. खास तौर पर, अगर इसमें सीआई/सीडी (लगातार इंटिग्रेशन/लगातार डिलीवरी या डिप्लॉयमेंट) पाइपलाइन शामिल है. इन स्थितियों के बारे में यहां दिए गए मॉड्यूल में बताया गया है:
- App Engine से Cloud Functions पर माइग्रेट करना: मॉड्यूल 11 देखें
- App Engine से Cloud Run पर माइग्रेट करना: Docker की मदद से अपने ऐप्लिकेशन को कंटेनर में बदलने के लिए, मॉड्यूल 4 देखें. इसके अलावा, कंटेनर, Docker की जानकारी या
Dockerfileके बिना ऐसा करने के लिए, मॉड्यूल 5 देखें
किसी दूसरे सर्वरलेस प्लैटफ़ॉर्म पर स्विच करना ज़रूरी नहीं है. हमारा सुझाव है कि कोई भी बदलाव करने से पहले, अपने ऐप्लिकेशन और इस्तेमाल के उदाहरणों के लिए सबसे सही विकल्पों पर विचार करें.
अगले माइग्रेशन मॉड्यूल के तौर पर किसी भी मॉड्यूल को चुना जा सकता है. हालांकि, Serverless Migration Station का पूरा कॉन्टेंट (कोड लैब, वीडियो, सोर्स कोड [अगर उपलब्ध हो]) इसके ओपन सोर्स रेपो में ऐक्सेस किया जा सकता है. रेपो के README में यह भी बताया गया है कि किन माइग्रेशन पर विचार करना चाहिए. साथ ही, माइग्रेशन मॉड्यूल के "क्रम" के बारे में भी बताया गया है.
7. अन्य संसाधन
यहां डेवलपर के लिए कुछ और संसाधन दिए गए हैं. इनकी मदद से, डेवलपर इस या इससे मिलते-जुलते माइग्रेशन मॉड्यूल के साथ-साथ इससे जुड़े प्रॉडक्ट के बारे में ज़्यादा जान सकते हैं. इसमें इस कॉन्टेंट पर सुझाव/राय देने या शिकायत करने की जगह, कोड के लिंक, और कई तरह के दस्तावेज़ शामिल हैं, जो आपके काम आ सकते हैं.
कोडलैब से जुड़ी समस्याएं/सुझाव/राय
अगर आपको इस कोडलैब में कोई समस्या मिलती है, तो कृपया शिकायत दर्ज करने से पहले अपनी समस्या खोजें. नई समस्याएं खोजने और बनाने के लिए लिंक:
माइग्रेशन के लिए उपलब्ध संसाधन
मॉड्यूल 1 (START) और मॉड्यूल 1b (FINISH) के लिए, repo फ़ोल्डर के लिंक यहां दिए गए हैं. इन्हें App Engine के सभी कोडलैब माइग्रेशन के लिए उपलब्ध रिपो से भी ऐक्सेस किया जा सकता है.
कोडलैब | Python 2 | Python 3 |
लागू नहीं | ||
मॉड्यूल 17 (यह कोडलैब) | लागू नहीं | code (mod1b-flask) |
ऑनलाइन संसाधन
यहां कुछ ऑनलाइन संसाधन दिए गए हैं, जो इस ट्यूटोरियल के लिए काम के हो सकते हैं:
App Engine की बंडल की गई सेवाएं
- Python 3 के अगली जनरेशन वाले रनटाइम में बंडल की गई सेवाओं को ऐक्सेस करना
- मॉड्यूल 0 ऐप्लिकेशन (Python 2) बनाम मॉड्यूल 1b ऐप्लिकेशन (Python 3) की तुलना
- App Engine SDK के वेब फ़्रेमवर्क के WSGI ऑब्जेक्ट रैपर के सैंपल
- अगली जनरेशन के रनटाइम लॉन्च में, App Engine की बंडल की गई सेवाओं के लिए सहायता (2021)
App Engine के सामान्य दस्तावेज़
- App Engine के दस्तावेज़
- Python 2 App Engine (स्टैंडर्ड एनवायरमेंट) रनटाइम
- Python 2 App Engine पर App Engine की पहले से मौजूद लाइब्रेरी का इस्तेमाल करना
- Python 3 App Engine (स्टैंडर्ड एनवायरमेंट) रनटाइम
- App Engine के स्टैंडर्ड एनवायरमेंट के Python 2 और Python 3 रनटाइम के बीच अंतर
- Python 2 से 3 App Engine (स्टैंडर्ड एनवायरमेंट) में माइग्रेट करने से जुड़ी गाइड
- App Engine की कीमत और कोटे की जानकारी
- App Engine प्लैटफ़ॉर्म की दूसरी जनरेशन लॉन्च की गई (2018)
- लेगसी रनटाइम के लिए लंबे समय तक सहायता
- दस्तावेज़ माइग्रेशन के सैंपल का रिपो
- कम्यूनिटी के योगदान से तैयार किए गए माइग्रेशन के सैंपल की रिपो
क्लाउड से जुड़ी अन्य जानकारी
- Google Cloud Platform पर Python
- Google Cloud की Python क्लाइंट लाइब्रेरी
- Google Cloud का "हमेशा के लिए बिना शुल्क" वाला टियर
- Google Cloud SDK (
gcloudकमांड-लाइन टूल) - Google Cloud के सभी दस्तावेज़
वीडियो
- Serverless Migration Station
- Serverless Expeditions
- Google Cloud Tech की सदस्यता लें
- Google Developers की सदस्यता लें
लाइसेंस
इस काम के लिए, Creative Commons एट्रिब्यूशन 2.0 जेनेरिक लाइसेंस के तहत लाइसेंस मिला है.