1. نظرة عامة
تهدف سلسلة البرامج التعليمية حول Serverless Migration Station (برامج تعليمية ذاتية السرعة وعملية) ومقاطع الفيديو ذات الصلة إلى مساعدة مطوّري الحوسبة بدون خادم على Google Cloud في تحديث تطبيقاتهم من خلال إرشادهم خلال عملية نقل واحدة أو أكثر، مع التركيز بشكل أساسي على التخلّي عن الخدمات القديمة. يؤدي ذلك إلى زيادة قابلية نقل تطبيقاتك ويمنحك المزيد من الخيارات والمرونة، ما يتيح لك الدمج مع مجموعة أكبر من منتجات Cloud والوصول إليها، كما يسهّل عليك الترقية إلى أحدث إصدارات اللغة. على الرغم من أنّ هذه السلسلة تركّز في البداية على أوائل مستخدمي Cloud، وخاصةً مطوّري App Engine (البيئة العادية)، إلا أنّها واسعة النطاق بما يكفي لتشمل منصات أخرى بلا خادم، مثل Cloud Functions وCloud Run، أو في أي مكان آخر إذا كان ذلك منطبقًا.
في السابق، كان على المطوّرين نقل البيانات من "الخدمات المجمّعة" القديمة في App Engine، مثل Datastore وMemcache، قبل أن يتمكّنوا من ترقية إصدارات اللغات، وهما مهمّتان قد تكونان صعبتين متتاليتين. من خلال إتاحة العديد من الخدمات الرئيسية المجمّعة في الجيل الثاني من خدمة App Engine، يمكن للمطوّرين الآن نقل تطبيقاتهم إلى أحدث أوقات التشغيل مع مواصلة استخدام (معظم) الخدمات المجمّعة. يرشدك هذا الدرس التطبيقي حول الترميز إلى كيفية ترقية نموذج تطبيق من Python 2 إلى 3 مع الحفاظ على استخدام خدمة مخزن البيانات المجمّعة (من خلال مكتبة NDB في App Engine). لا يتطلّب استخدام معظم الخدمات المجمّعة سوى إجراء تعديل بسيط على الرمز كما سيتم توضيحه في هذا الدليل التوجيهي/التعليمي، ولكن هناك خدمات أخرى تتطلّب تغييرات أكثر شمولاً، وسيتم تناولها في "الجزء 2"، وهو وحدة ومتابعة ودرس تطبيقي حول الترميز.
ستتعرَّف على كيفية إجراء ما يلي:
- نقل نموذج تطبيق App Engine من Python 2 إلى 3
- تعديل إعدادات التطبيق لتضمين حزمة تطوير البرامج (SDK) في App Engine
- إضافة رمز حزمة تطوير البرامج (SDK) إلى التطبيق الذي يتيح الخدمات المجمّعة في أوقات التشغيل من الجيل الثاني، مثل Python 3
المتطلبات
- مشروع على السحابة الإلكترونية يتضمّن حساب فوترة نشطًا على Google Cloud
- مهارات أساسية في لغة Python
- معرفة عملية بالأوامر الشائعة على نظام التشغيل Linux
- معرفة أساسية بشأن تطوير ونشر تطبيقات App Engine
- تطبيق Module 1 App Engine يعمل (أكمِل الدرس التطبيقي حول الترميز [يُنصح بذلك] أو انسخ التطبيق من المستودع)
استطلاع
كيف ستستخدم هذا البرنامج التعليمي؟
كيف تقيّم تجربتك مع Python؟
ما هو تقييمك لتجربة استخدام خدمات Google Cloud؟
2. الخلفية
تم إطلاق خدمة App Engine الأصلية في عام 2008، وكانت تتضمّن مجموعة من واجهات برمجة التطبيقات القديمة (المعروفة الآن باسم الخدمات المجمّعة) لتسهيل عملية إنشاء التطبيقات ونشرها على مستوى العالم للمطوّرين. وتشمل هذه الخدمات Datastore وMemcache وTask Queue. على الرغم من أنّ هذه الطريقة كانت مريحة، بدأ المستخدمون يشعرون بالقلق بشأن إمكانية نقل تطبيقاتهم عند استخدام واجهات برمجة التطبيقات الخاصة التي تربطهم بخدمة App Engine، وأرادوا أن تكون تطبيقاتهم أكثر قابلية للنقل. وقد أدّى ذلك إلى جانب حقيقة أنّ العديد من هذه الخدمات المجمّعة أصبحت منتجات Cloud مستقلة، إلى إطلاق فريق App Engine للجيل التالي من المنصة في عام 2018 بدونها.
ننتقل سريعًا إلى اليوم، حيث يتوق مطوّرو Python 2 إلى الترقية إلى Python 3. كان يتطلب تطبيق 2.x الذي يستخدم خدمات مجمّعة نقل البيانات من هذه الخدمات قبل أن يتم نقل تطبيقاته إلى الإصدار 3.x، ما يمثّل عمليتَي نقل إجباري متتاليتَين، وربما كانتا عمليتَي نقل صعبة أيضًا. للمساعدة في عملية الانتقال هذه، قدّم فريق App Engine في خريف 2021 "ثقبًا دوديًا" إلى الماضي، ما يتيح للتطبيقات التي تعمل على أوقات التشغيل من الجيل التالي الوصول إلى العديد من تلك الخدمات المجمّعة. على الرغم من أنّ هذا الإصدار لا يتضمّن جميع الخدمات المتوفّرة في أوقات التشغيل الأصلية، إلا أنّ الخدمات الرئيسية، مثل Datastore وTask Queue وMemcache، متوفّرة.
يوضّح هذا الدرس التطبيقي حول الترميز التغييرات اللازمة لترقية تطبيقك إلى الإصدار 3 من Python مع الحفاظ على استخدام الخدمات المجمّعة. والهدف من ذلك هو تشغيل تطبيقاتك على أحدث أوقات التشغيل، ما يتيح لك بعد ذلك نقل البيانات من الخدمات المجمّعة إلى الخدمات المستقلة المكافئة على السحابة الإلكترونية أو البدائل التابعة لجهات خارجية في الجداول الزمنية الخاصة بك، بدلاً من أن يكون ذلك عائقًا أمام الترقية إلى الإصدار 3.x. مع أنّ نقل البيانات من الخدمات المجمّعة لم يعُد مطلوبًا، إلا أنّ إجراء ذلك يمنحك المزيد من إمكانية النقل والمرونة من حيث الأماكن التي يمكن استضافة تطبيقاتك فيها، بما في ذلك الانتقال إلى منصات قد تخدم أحمال العمل بشكل أفضل، أو البقاء على App Engine مع الترقية إلى إصدار لغة أحدث كما هو موضح للتو.
يستخدم نموذج تطبيق Python 2 في الوحدة 1 خدمة مخزن البيانات المجمّعة من خلال App Engine NDB. وقد سبق أن نقل التطبيق الأُطر من webapp2 إلى Flask، وتمّت هذه العملية في الدرس التطبيقي حول الترميز في الوحدة 1، ولكن مع الحفاظ على استخدام مخزن البيانات.
يتضمّن هذا الدليل التعليمي الخطوات التالية:
- الإعداد/العمل التحضيري
- تعديل الإعدادات
- تعديل الرمز البرمجي للتطبيق
3- الإعداد/العمل التحضيري
يوضّح هذا القسم كيفية تنفيذ ما يلي:
- إعداد مشروعك على السحابة الإلكترونية
- الحصول على نموذج تطبيق أساسي
- (إعادة) نشر تطبيق أساسي وإثبات صحته
تضمن لك هذه الخطوات البدء برمز برمجي صالح.
1. إعداد المشروع
إذا أكملت الدرس العملي الخاص بالوحدة 1، ننصحك بإعادة استخدام المشروع (والرمز) نفسه. بدلاً من ذلك، يمكنك إنشاء مشروع على السحابة الإلكترونية جديد تمامًا أو إعادة استخدام مشروع حالي آخر. تأكَّد من أنّ المشروع يتضمّن حساب فوترة نشطًا تم تفعيل خدمة App Engine فيه.
2. الحصول على نموذج تطبيق أساسي
من المتطلبات الأساسية لهذا الدرس التطبيقي حول الترميز أن يكون لديك تطبيق يعمل على الوحدة 1 من App Engine: أكمل الدرس التطبيقي حول الترميز الخاص بالوحدة 1 (يُنصح بذلك) أو انسخ تطبيق الوحدة 1 من المستودع. سواء استخدمت رمزك أو رمزنا، سيكون رمز الوحدة 1 هو المكان الذي سنبدأ منه. يرشدك هذا الدرس التطبيقي حول الترميز خلال كل خطوة، وينتهي برمز يشبه الرمز الموجود في مجلد المستودع "FINISH" في الوحدة 7.
- البدء: وحدة 1 (Python 2)
- إنهاء: وحدة 1b (Python 3)
- المستودع بأكمله (لاستنساخ ملف ZIP أو تنزيله)
بغض النظر عن تطبيق الوحدة 1 الذي تستخدمه، من المفترض أن يبدو المجلد كما هو موضّح أدناه، وربما يتضمّن مجلد lib أيضًا:
$ ls README.md appengine_config.py requirements.txt app.yaml main.py templates
3- (إعادة) نشر التطبيق الأساسي
نفِّذ الخطوات التالية لإعادة نشر تطبيق الوحدة 1:
- احذف المجلد
libإذا كان متوفّرًا ونفِّذ الأمر:pip install -t lib -r requirements.txtلإعادة ملءlib. قد تحتاج إلى استخدام الأمرpip2بدلاً من ذلك إذا كان لديك كل من Python 2 و3 مثبّتَين. - تأكَّد من أنّك ثبَّت وبدأت استخدام أداة سطر الأوامر
gcloudوراجعت طريقة استخدامها. - اضبط مشروعك على Cloud باستخدام
gcloud config set projectPROJECT_IDإذا كنت لا تريد إدخالPROJECT_IDمع كل أمرgcloudيتم إصداره. - نشر نموذج التطبيق باستخدام
gcloud app deploy - تأكَّد من أنّ تطبيق الوحدة 1 يعمل على النحو المتوقّع بدون أي مشاكل في عرض أحدث الزيارات (كما هو موضّح أدناه).

4. تعديل الإعدادات
بعد تنفيذ هذه الخطوات بنجاح والتأكّد من أنّ تطبيق الويب يعمل، يمكنك نقل هذا التطبيق إلى Python 3، بدءًا من ملف الإعداد.
إضافة حزمة SDK إلى ملف requirements.txt
تقلّل بيئة وقت تشغيل Python 3 في App Engine بشكل كبير من النفقات العامة لاستخدام مكتبات تابعة لجهات خارجية. كل ما عليك فعله هو إدراجها في requirements.txt. لاستخدام الخدمات المجمّعة في Python 3، أضِف حزمة App Engine SDK، appengine-python-standard، إليها. تنضم حزمة SDK إلى Flask من الوحدة 1:
flask
appengine-python-standard
تعديل ملف app.yaml
اتّبِع الخطوات التالية لتطبيق تغييرات الإعداد على ملف app.yaml:
- استبدِل التوجيه
runtimeبإصدار Python 3 المتوافق، مثلاً حدِّدpython310للإصدار 3.10 من Python. - احذف التوجيهين
threadsafeوapi_versionلأنّهما غير مستخدَمَين في Python 3. - احذف القسم
handlersبالكامل لأنّ هذا التطبيق يحتوي فقط على معالِجات النصوص البرمجية. إذا كان تطبيقك يتضمّن معالِجات ملفات ثابتة، اترِكها كما هي فيhandlers. - لا يتيح وقت تشغيل Python 3 استخدام مكتبات مدمجة تابعة لجهات خارجية، كما هو الحال في وقت تشغيل Python 2. إذا كان تطبيقك يحتوي على قسم
librariesفيapp.yaml، احذف القسم بالكامل. (يجب إدراج الحِزم المطلوبة فقط فيrequirements.txt، مثل المكتبات غير المضمّنة). لا يتضمّن نموذج تطبيقنا قسمlibraries، لذا انتقِل إلى الخطوة التالية. - أنشئ توجيه
app_engine_apisتم ضبطه علىtrueلاستخدامه، ويتوافق ذلك مع إضافة حزمة App Engine SDK إلىrequirements.txtأعلاه.
في ما يلي ملخّص للتغييرات المطلوبة في 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
بهذا تنتهي جميع تغييرات الإعدادات الضرورية.
5- تعديل الرمز البرمجي للتطبيق
يتطلّب الوصول إلى معظم الخدمات المتاحة ضمن الحزمة في بيئة وقت التشغيل Python 3 جزءًا قصيرًا من الرمز البرمجي يغلّف عنصر تطبيق واجهة بوابة خادم الويب (WSGI) في main.py. دالة التغليف هي google.appengine.api.wrap_wsgi_app()، ويمكنك استخدامها من خلال استيرادها وتغليف عنصر WSGI بها. أدخِل التغييرات أدناه لتعكس التحديث المطلوب لـ Flask في main.py:
قبل:
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 في أُطر عمل Python الأخرى.
على الرغم من أنّ هذا المثال يتيح لتطبيقك الوصول إلى معظم الخدمات المجمّعة في Python 3، تتطلّب خدمات أخرى، مثل Blobstore وMail، رمزًا إضافيًا. سنتناول هذه العيّنات في وحدة نقل بيانات أخرى.
بهذا نكون قد انتهينا من جميع التغييرات اللازمة لإضافة استخدام الخدمات المجمّعة في App Engine إلى نموذج تطبيق Module 1. التطبيق متوافق حاليًا مع Python 2 و3، لذا لن تحتاج إلى إجراء أي تغييرات إضافية لتكييفه مع Python 3 بخلاف ما سبق أن أجريته في عملية الإعداد. الخطوة الأخيرة: نشر هذا التطبيق المعدَّل في وقت تشغيل الجيل التالي من App Engine Python 3 والتأكّد من نجاح التحديثات.
6. الملخّص/التنظيف
يختتم هذا القسم الدرس التطبيقي حول الترميز من خلال تفعيل التطبيق والتأكّد من عمله على النحو المطلوب وفي أي ناتج معروض. بعد التحقّق من التطبيق، نفِّذ أي عملية تنظيف وفكِّر في الخطوات التالية.
نشر التطبيق والتحقّق منه
انشر تطبيق Python 3 باستخدام gcloud app deploy، وتأكَّد من أنّ التطبيق يعمل كما كان يعمل في Python 2. لن تتغير أي من الوظائف، لذا يجب أن يكون الناتج مطابقًا لتطبيق الوحدة 1:

ملاحظات أخيرة
- قارِن ما لديك بما هو موجود في المجلد 1b (إنهاء) إذا اتّخذت خطوة خاطئة على طول الطريق وعدِّل حسب الحاجة.
- قارِن بين الوحدة 0
main.pyجنبًا إلى جنب مع الوحدة 1bmain.pyفي هذه الصفحة إذا كان تطبيقك لا يزال يستخدمwebapp2، ثم نفِّذ الدرس التطبيقي حول الترميز الخاص بالوحدة 1 للتعرّف على كيفية نقل البيانات منwebapp2إلى Flask.
نهنئك على اتّخاذ الخطوة الأولى لتكييف تطبيقات Python 2 App Engine إلى Python 3 مع الاحتفاظ باستخدام الخدمات المجمّعة في الوقت الحالي.
تَنظيم
للجمهور العام
إذا انتهيت من استخدام التطبيق في الوقت الحالي، ننصحك بإيقاف تطبيق App Engine لتجنُّب تحمّل رسوم. ومع ذلك، إذا أردت إجراء المزيد من الاختبارات أو التجارب، تتضمّن منصة App Engine حصّة مجانية، وبالتالي لن يتم تحصيل رسوم منك طالما أنّك لا تتجاوز مستوى الاستخدام هذا. هذا السعر خاص بالحوسبة، ولكن قد تكون هناك رسوم أيضًا مقابل خدمات App Engine ذات الصلة، لذا يُرجى الاطّلاع على صفحة الأسعار للحصول على مزيد من المعلومات. إذا كان نقل البيانات هذا يتضمّن خدمات سحابية أخرى، يتم إصدار فواتير لها بشكل منفصل. في كلتا الحالتين، إذا كان ذلك منطبقًا، راجِع القسم "خاص بهذا الدرس التطبيقي حول الترميز" أدناه.
للتوضيح، يؤدي النشر على منصة حوسبة بدون خادم في Google Cloud، مثل App Engine، إلى تكبُّد تكاليف بسيطة للإنشاء والتخزين. تتضمّن 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*، على سبيل المثال، "us" إذا كان تطبيقك مستضافًا في الولايات المتحدة.
من ناحية أخرى، إذا كنت لن تواصل استخدام هذا التطبيق أو غيره من الدروس التعليمية البرمجية المتعلقة بنقل البيانات وأردت حذف كل شيء تمامًا، عليك إيقاف مشروعك.
خاص بهذا الدرس التطبيقي حول الترميز
الخدمات المدرَجة أدناه خاصة بهذا الدرس التطبيقي حول الترميز. يُرجى الرجوع إلى مستندات كل منتج للحصول على مزيد من المعلومات:
- يتم توفير خدمة App Engine Datastore من خلال Cloud Datastore (Cloud Firestore في وضع Datastore) الذي يتضمّن أيضًا طبقة مجانية. يمكنك الاطّلاع على صفحة الأسعار للحصول على مزيد من المعلومات.
الخطوات التالية
يمكنك اتّخاذ عدة إجراءات من هنا:
- تعديل الرمز باستخدام الخدمات المجمّعة التي تتطلّب المزيد من التغييرات على الرمز
- نقل البيانات من الخدمات المجمّعة إلى منتجات Cloud المستقلة
- نقل البيانات من App Engine إلى منصة أخرى بلا خادم على السحابة الإلكترونية
يتطلّب الوصول إلى الخدمات الأخرى المجمّعة، مثل Blobstore وMail وDeferred، إجراء المزيد من التغييرات على الرموز البرمجية. تشمل وحدات نقل البيانات التي تركّز على التوقّف عن استخدام الخدمات المجمّعة القديمة في App Engine ما يلي:
- الوحدة 2: نقل البيانات من 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. إذا أصبحت عملية إنشاء الحاويات جزءًا من سير عمل تطوير التطبيقات، خاصةً إذا كانت تتألف من مسار CI/CD (التكامل المستمر/التسليم المتواصل أو النشر المستمر)، ننصحك بالانتقال إلى Cloud Run. تتناول الوحدات التدريبية التالية هذه السيناريوهات:
- نقل البيانات من App Engine إلى Cloud Functions: يمكنك الاطّلاع على الوحدة 11
- الانتقال من App Engine إلى Cloud Run: يمكنك الاطّلاع على الوحدة 4 لتضمين تطبيقك في حاوية باستخدام Docker، أو الوحدة 5 لإجراء ذلك بدون حاويات أو معرفة بـ Docker أو
Dockerfile
إنّ الانتقال إلى منصة أخرى بلا خادم هو أمر اختياري، وننصحك بمراجعة أفضل الخيارات لتطبيقاتك وحالات الاستخدام قبل إجراء أي تغييرات.
بغض النظر عن وحدة النقل التي ستختارها، يمكنك الوصول إلى كل محتوى Serverless Migration Station (الدروس البرمجية والفيديوهات ورمز المصدر [عند توفّره]) من خلال مستودع المصدر المفتوح. يوفّر مستودع README أيضًا إرشادات حول عمليات نقل البيانات التي يجب أخذها في الاعتبار وأي "ترتيب" ذي صلة لوحدات نقل البيانات.
7. مراجع إضافية
في ما يلي مراجع إضافية للمطوّرين الذين يريدون استكشاف هذه الوحدة أو وحدة نقل البيانات ذات الصلة بالإضافة إلى المنتجات ذات الصلة. ويشمل ذلك أماكن لتقديم ملاحظات حول هذا المحتوى، وروابط إلى الرمز، ومختلف أجزاء المستندات التي قد تجدها مفيدة.
مشاكل/ملاحظات بشأن الدروس التطبيقية حول الترميز
إذا واجهت أي مشاكل في هذا الدرس العملي، يُرجى البحث عن مشكلتك أولاً قبل إرسالها. روابط للبحث عن مشاكل جديدة وإنشائها:
مراجع لنقل البيانات
يمكنك العثور على روابط لمجلدات المستودع الخاصة بالوحدة التدريبية 1 (البداية) والوحدة التدريبية 1b (النهاية) في الجدول أدناه. يمكن الوصول إليها أيضًا من مستودع جميع عمليات نقل الدروس التطبيقية حول الترميز في App Engine.
Codelab | Python 2 | Python 3 |
لا ينطبق | ||
الوحدة 17 (هذا الدرس التطبيقي حول الترميز) | لا ينطبق | code (mod1b-flask) |
مراجع متوفرة على الإنترنت
في ما يلي مراجع على الإنترنت قد تكون ذات صلة بهذا البرنامج التعليمي:
الخدمات المجمّعة في App Engine
- الوصول إلى الخدمات المجمّعة في وقت التشغيل من الجيل التالي في Python 3
- مقارنة جنبًا إلى جنب بين تطبيق الوحدة 0 (Python 2) وتطبيق الوحدة 1b (Python 3)
- عيّنات لبرنامج تضمين عناصر WSGI في إطار عمل الويب الخاص بحزمة تطوير البرامج (SDK) في App Engine
- إتاحة الخدمات المجمّعة في App Engine عند إطلاق أوقات التشغيل من الجيل التالي (2021)
مستندات App Engine العامة
- مستندات App Engine
- وقت تشغيل Python 2 App Engine (البيئة العادية)
- استخدام المكتبات المضمّنة في App Engine على Python 2 App Engine
- وقت تشغيل Python 3 App Engine (البيئة العادية)
- الاختلافات بين أوقات تشغيل Python 2 و3 في App Engine (البيئة العادية)
- دليل نقل البيانات من Python 2 إلى Python 3 في App Engine (البيئة العادية)
- معلومات الأسعار والحصص في App Engine
- إطلاق الجيل الثاني من منصة App Engine (2018)
- الدعم الطويل الأمد لأوقات التشغيل القديمة
- مستودع نماذج نقل المستندات
- مستودع نماذج نقل البيانات التي ساهم بها المنتدى
معلومات أخرى حول السحابة الإلكترونية
- Python على Google Cloud Platform
- مكتبات برامج Python في Google Cloud
- فئة "دائمًا مجانية" في Google Cloud
- Google Cloud SDK (أداة سطر الأوامر
gcloud) - جميع مستندات Google Cloud
الفيديوهات
- Serverless Migration Station
- أداة "استكشافات" بدون خادم
- الاشتراك في قناة Google Cloud Tech
- الاشتراك في Google Developers
الترخيص
يخضع هذا العمل لترخيص المشاع الإبداعي مع نسب العمل إلى مؤلفه 2.0 Generic License.