การขยายการรองรับบริการแพ็กเกจ App Engine: ส่วนที่ 1 (โมดูล 17)

1. ภาพรวม

ชุด Codelab ของ Serverless Migration Station (บทแนะนำแบบลงมือปฏิบัติจริงที่ทำตามได้ด้วยตนเอง) และวิดีโอที่เกี่ยวข้องมีจุดมุ่งหมายเพื่อช่วยให้นักพัฒนาแอป Google Cloud แบบไร้เซิร์ฟเวอร์ปรับปรุงแอปพลิเคชันให้ทันสมัยโดยแนะนำการย้ายข้อมูลอย่างน้อย 1 รายการ ซึ่งส่วนใหญ่เป็นการย้ายข้อมูลออกจากบริการเดิม การทำเช่นนี้จะทำให้แอปของคุณพกพาได้มากขึ้น และช่วยให้คุณมีตัวเลือกและความยืดหยุ่นมากขึ้น ซึ่งจะช่วยให้คุณผสานรวมและเข้าถึงผลิตภัณฑ์ระบบคลาวด์ที่หลากหลายยิ่งขึ้น รวมถึงอัปเกรดเป็นภาษาเวอร์ชันใหม่ๆ ได้ง่ายขึ้น แม้ว่าในตอนแรกจะมุ่งเน้นไปที่ผู้ใช้ Cloud รุ่นแรกๆ ซึ่งส่วนใหญ่เป็นนักพัฒนาซอฟต์แวร์ App Engine (สภาพแวดล้อมมาตรฐาน) แต่ชุดข้อมูลนี้ก็ครอบคลุมแพลตฟอร์มแบบไร้เซิร์ฟเวอร์อื่นๆ เช่น Cloud Functions และ Cloud Run หรือที่อื่นๆ หากเกี่ยวข้อง

ก่อนหน้านี้ นักพัฒนาแอปต้องย้ายข้อมูลจาก "บริการแบบรวมกลุ่ม" เดิมของ App Engine เช่น Datastore และ Memcache ก่อนจึงจะอัปเกรดเวอร์ชันภาษาได้ ซึ่งเป็น 2 งานที่อาจท้าทายอย่างมาก การทำให้บริการหลักๆ ที่รวมไว้หลายอย่างพร้อมใช้งานในบริการ App Engine รุ่นที่ 2 ช่วยให้นักพัฒนาแอปสามารถย้ายแอปไปยังรันไทม์ล่าสุดในขณะที่ยังคงใช้บริการที่รวมไว้ (ส่วนใหญ่) ได้ Codelab นี้จะแนะนำวิธียกระดับแอปตัวอย่างจาก Python 2 เป็น 3 ในขณะที่ยังคงใช้บริการ Datastore แบบรวมกลุ่ม (ผ่านไลบรารี NDB ของ App Engine) การใช้บริการส่วนใหญ่ที่รวมไว้จะกำหนดให้ต้องอัปเดตโค้ดเพียงเล็กน้อยตามที่จะกล่าวถึงในบทแนะนำนี้ แต่ก็มีบริการอื่นๆ ที่ต้องมีการเปลี่ยนแปลงที่ครอบคลุมมากขึ้น ซึ่งจะกล่าวถึงใน "ส่วนที่ 2" ซึ่งเป็นโมดูลและโค้ดแล็บติดตามผล

คุณจะได้เรียนรู้วิธีต่อไปนี้

  • พอร์ตแอป App Engine ตัวอย่างจาก Python 2 เป็น 3
  • อัปเดตการกำหนดค่าแอปให้รวม SDK ของ App Engine
  • เพิ่มโค้ด SDK ลงในแอปที่รองรับบริการแบบแพ็กเกจในรันไทม์รุ่นที่ 2 เช่น Python 3

สิ่งที่คุณต้องมี

แบบสำรวจ

คุณจะใช้บทแนะนำนี้อย่างไร

อ่านอย่างเดียว อ่านและทำแบบฝึกหัด

คุณจะให้คะแนนประสบการณ์การใช้งาน Python เท่าใด

ผู้ฝึกหัด ขั้นกลาง ผู้ชำนาญ

คุณจะให้คะแนนประสบการณ์การใช้บริการ Google Cloud เท่าใด

ผู้ฝึกหัด ขั้นกลาง ผู้ชำนาญ

2. ฉากหลัง

บริการ App Engine เดิมเปิดตัวในปี 2008 และมาพร้อมกับชุด API เดิม (ปัจจุบันเรียกว่าบริการแบบรวม) เพื่อให้นักพัฒนาแอปสร้างและใช้งานแอปพลิเคชันทั่วโลกได้อย่างสะดวก บริการดังกล่าว ได้แก่ Datastore, Memcache และคิวของงาน แม้จะสะดวก แต่ผู้ใช้เริ่มกังวลเกี่ยวกับความสามารถในการพกพาของแอปเมื่อใช้ API ที่เป็นกรรมสิทธิ์ซึ่งเชื่อมโยงแอปกับ App Engine และต้องการให้แอปของตนมีความสามารถในการพกพามากขึ้น ด้วยเหตุนี้และข้อเท็จจริงที่ว่าบริการแบบแพ็กเกจเหล่านี้หลายอย่างเติบโตจนกลายเป็นผลิตภัณฑ์ Cloud แบบสแตนด์อโลนของตนเอง ทีม App Engine จึงเปิดตัวแพลตฟอร์มรุ่นถัดไปในปี 2018 โดยไม่มีบริการเหล่านั้น

มาถึงปัจจุบัน นักพัฒนาซอฟต์แวร์ Python 2 ต่างก็กระตือรือร้นที่จะอัปเกรดเป็น Python 3 แอป 2.x ที่ใช้บริการแบบรวมต้องย้ายออกจากบริการเหล่านั้นก่อนจึงจะพอร์ตแอปไปยัง 3.x ได้ ซึ่งหมายถึงการย้ายข้อมูลแบบบังคับ 2 ครั้งติดต่อกัน ซึ่งอาจเป็นเรื่องที่ท้าทายด้วย เพื่อช่วยในการเปลี่ยนผ่านนี้ ทีม App Engine ได้เปิดตัว "รูหนอน" ในฤดูใบไม้ร่วงปี 2021 เพื่อย้อนกลับไปในอดีต ซึ่งช่วยให้แอปที่ทำงานบนรันไทม์รุ่นถัดไปเข้าถึงบริการที่รวมไว้จำนวนมากได้ แม้ว่ารุ่นนี้จะไม่มีบริการทั้งหมดที่พร้อมใช้งานในรันไทม์เดิม แต่บริการหลักๆ เช่น Datastore, Task Queue และ Memcache ก็พร้อมใช้งาน

Codelab นี้แสดงการเปลี่ยนแปลงที่จำเป็นเพื่อให้คุณอัปเกรดแอปเป็น Python 3 ได้ในขณะที่ยังคงใช้บริการที่รวมไว้ได้ เป้าหมายคือการทำให้แอปของคุณทำงานบนรันไทม์ล่าสุด ซึ่งจะช่วยให้คุณย้ายข้อมูลจากบริการที่รวมแพ็กเกจไปยังบริการแบบสแตนด์อโลนของ Cloud หรือทางเลือกของบุคคลที่สามได้ตามไทม์ไลน์ของคุณเอง แทนที่จะเป็นอุปสรรคในการอัปเกรดเป็น 3.x แม้ว่าตอนนี้คุณจะไม่จำเป็นต้องย้ายข้อมูลออกจากบริการแบบรวมแล้ว แต่การย้ายข้อมูลจะช่วยให้คุณมีความสามารถในการพกพาและความยืดหยุ่นมากขึ้นในแง่ของตำแหน่งที่โฮสต์แอปได้ ซึ่งรวมถึงการเปลี่ยนไปใช้แพลตฟอร์มที่อาจให้บริการเวิร์กโหลดได้ดีกว่า หรือเพียงแค่ใช้ App Engine ต่อไปในขณะที่อัปเกรดเป็นภาษาเวอร์ชันที่ทันสมัยกว่าตามที่อธิบายไว้

แอปตัวอย่าง Python 2 ของโมดูลที่ 1 ใช้บริการ Datastore ที่รวมไว้ผ่าน App Engine NDB แอปได้ย้ายข้อมูลเฟรมเวิร์กจาก webapp2 ไปยัง Flask แล้ว ซึ่งดำเนินการเสร็จสมบูรณ์ใน Codelab โมดูลที่ 1 แต่ยังคงการใช้งาน Datastore ไว้

บทแนะนำนี้มีขั้นตอนต่อไปนี้

  1. การตั้งค่า/การเตรียมการ
  2. อัปเดตการกำหนดค่า
  3. แก้ไขโค้ดแอปพลิเคชัน

3. การตั้งค่า/การเตรียมการ

ส่วนนี้จะอธิบายวิธี

  1. ตั้งค่าโปรเจ็กต์ Cloud
  2. รับแอปตัวอย่างพื้นฐาน
  3. (อีกครั้ง) นำไปใช้งานและตรวจสอบแอปพื้นฐาน

ขั้นตอนเหล่านี้จะช่วยให้คุณเริ่มต้นด้วยโค้ดที่ใช้งานได้

1. ตั้งค่าโปรเจ็กต์

หากคุณทำ Codelab โมดูลที่ 1 เสร็จแล้ว เราขอแนะนำให้ใช้โปรเจ็กต์ (และโค้ด) เดียวกันนั้นซ้ำ หรือจะสร้างโปรเจ็กต์ Cloud ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่อื่นซ้ำก็ได้ ตรวจสอบว่าโปรเจ็กต์มีบัญชีสำหรับการเรียกเก็บเงินที่ใช้งานอยู่ซึ่งเปิดใช้บริการ App Engine แล้ว

2. รับแอปตัวอย่างพื้นฐาน

ข้อกำหนดเบื้องต้นอย่างหนึ่งของ Codelab นี้คือการมีแอป App Engine ของโมดูล 1 ที่ใช้งานได้ ให้ทำตาม Codelab โมดูล 1 (แนะนำ) หรือคัดลอกแอปโมดูล 1 จากที่เก็บ ไม่ว่าคุณจะใช้โค้ดของคุณเองหรือโค้ดของเรา โค้ดโมดูล 1 คือจุดที่เราจะ "เริ่มต้น" Codelab นี้จะแนะนำแต่ละขั้นตอนให้คุณ โดยจะจบด้วยโค้ดที่คล้ายกับโค้ดในโฟลเดอร์ "FINISH" ของที่เก็บโมดูลที่ 7

ไม่ว่าคุณจะใช้แอป Module 1 ใด โฟลเดอร์ควรมีลักษณะดังต่อไปนี้ และอาจมีโฟลเดอร์ lib ด้วย

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

3. (อีกครั้ง) ทำให้แอปพื้นฐานใช้งานได้

ทำตามขั้นตอนต่อไปนี้เพื่อ (อีกครั้ง) ทำให้แอปโมดูล 1 ใช้งานได้

  1. ลบโฟลเดอร์ lib หากมี แล้วเรียกใช้ pip install -t lib -r requirements.txt เพื่อสร้าง lib ใหม่ คุณอาจต้องใช้คำสั่ง pip2 แทนหากติดตั้งทั้ง Python 2 และ 3
  2. ตรวจสอบว่าคุณได้ติดตั้งและเริ่มต้นเครื่องมือบรรทัดคำสั่ง gcloud และตรวจสอบการใช้งานแล้ว
  3. ตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์ด้วย gcloud config set project PROJECT_ID หากไม่ต้องการป้อน PROJECT_ID ทุกครั้งที่ออกคำสั่ง gcloud
  4. ทำให้แอปตัวอย่างใช้งานได้ด้วย gcloud app deploy
  5. ยืนยันว่าแอปโมดูล 1 ทำงานได้ตามที่คาดไว้โดยไม่มีปัญหาในการแสดงการเข้าชมล่าสุด (ดังภาพด้านล่าง)

a7a9d2b80d706a2b.png

4. อัปเดตการกำหนดค่า

เมื่อทำตามขั้นตอนเหล่านั้นเรียบร้อยแล้วและเห็นว่าเว็บแอปทํางานได้ คุณก็พร้อมที่จะพอร์ตแอปนี้ไปยัง Python 3 โดยเริ่มจาก config

เพิ่ม SDK ลงใน requirements.txt

รันไทม์ Python 3 ของ App Engine ช่วยลดค่าใช้จ่ายในการใช้ไลบรารีของบุคคลที่สามได้อย่างมาก เพียงแค่ระบุไว้ใน requirements.txt ก็เพียงพอแล้ว หากต้องการใช้บริการที่รวมไว้ใน Python 3 ให้เพิ่มแพ็กเกจ App Engine SDK appengine-python-standard ลงใน Python 3 แพ็กเกจ SDK จะเข้าร่วม Flask จากโมดูลที่ 1

flask
appengine-python-standard

อัปเดต app.yaml

ทําตามขั้นตอนด้านล่างเพื่อใช้การเปลี่ยนแปลงการกําหนดค่ากับไฟล์ app.yaml

  1. แทนที่คำสั่ง runtime ด้วยรุ่น Python 3 ที่รองรับ เช่น ระบุ python310 สำหรับ Python 3.10
  2. ลบทั้งคำสั่ง threadsafe และ api_version เนื่องจากไม่มีการใช้คำสั่งทั้ง 2 รายการใน Python 3
  3. ลบส่วน handlers ออกทั้งหมดเนื่องจากแอปนี้มีเพียงตัวแฮนเดิลสคริปต์ หากแอปมีตัวแฮนเดิลไฟล์แบบคงที่ ให้นำไปวางไว้ใน handlers
  4. รันไทม์ Python 3 ไม่รองรับไลบรารีของบุคคลที่สามที่มาพร้อมกับระบบเหมือนกับรันไทม์ Python 2 หากแอปของคุณมีส่วนlibrariesในapp.yaml ให้ลบทั้งส่วน (คุณต้องระบุแพ็กเกจที่จำเป็นใน requirements.txt เท่านั้น เช่นเดียวกับไลบรารีที่ไม่ได้มาพร้อมกับ Python) แอปตัวอย่างของเราไม่มีส่วนlibraries ดังนั้นให้ไปที่ขั้นตอนถัดไป
  5. สร้าง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 เว้นแต่คุณจะมีสิ่งพิเศษใน appengine_config.py ดังนั้นให้ลบออก ในทำนองเดียวกัน เนื่องจากระบบจะติดตั้งไลบรารีของบุคคลที่สามทั้งหมดโดยอัตโนมัติในระหว่างกระบวนการบิลด์ คุณจึงไม่จำเป็นต้องคัดลอกหรือจัดหาไลบรารีเหล่านั้น ซึ่งหมายความว่าจะไม่มีคำสั่ง pip install หรือโฟลเดอร์ lib อีกต่อไป ดังนั้นให้ลบออก การสรุป

  • ลบไฟล์ appengine_config.py
  • ลบโฟลเดอร์ lib

การดำเนินการนี้เป็นการเปลี่ยนแปลงการกำหนดค่าที่จำเป็นทั้งหมด

5. แก้ไขโค้ดแอปพลิเคชัน

การเข้าถึงบริการแบบแพ็กเกจส่วนใหญ่ที่มีอยู่ในสภาพแวดล้อมรันไทม์ Python 3 ต้องใช้โค้ดสั้นๆ ที่ห่อหุ้มออบเจ็กต์แอปพลิเคชัน Web Server Gateway Interface (WSGI) ใน main.py ฟังก์ชัน Wrapper คือ 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 ลงในแอปตัวอย่างของโมดูลที่ 1 แอปพลิเคชันนี้รองรับ Python 2 และ 3 อยู่แล้ว ดังนั้นจึงไม่มีการเปลี่ยนแปลงเพิ่มเติมในการพอร์ตไปยัง Python 3 นอกเหนือจากที่คุณได้ดำเนินการในการกำหนดค่าแล้ว ขั้นตอนสุดท้ายคือ การทําให้แอปที่แก้ไขแล้วนี้ใช้งานได้กับรันไทม์ Python 3 ของ App Engine รุ่นถัดไป และยืนยันว่าการอัปเดตสําเร็จ

6. สรุป/ล้างข้อมูล

ส่วนนี้จะสรุป Codelab นี้ด้วยการติดตั้งใช้งานแอป ยืนยันว่าแอปทำงานได้ตามที่ต้องการและในเอาต์พุตที่แสดง หลังจากตรวจสอบแอปแล้ว ให้ล้างข้อมูลและพิจารณาขั้นตอนถัดไป

ทำให้แอปพลิเคชันใช้งานได้และยืนยัน

ทำให้แอป Python 3 ใช้งานได้ด้วย gcloud app deploy และยืนยันว่าแอปทำงานได้เหมือนกับใน Python 2 ไม่มีการเปลี่ยนแปลงฟังก์ชันการทำงาน ดังนั้นเอาต์พุตจึงควรเหมือนกับแอปในโมดูลที่ 1

a7a9d2b80d706a2b.png

หมายเหตุสุดท้าย

ขอแสดงความยินดีที่คุณได้เริ่มขั้นตอนแรกในการพอร์ตแอป App Engine ที่เขียนด้วย Python 2 ไปยัง Python 3 ในขณะที่ยังคงใช้บริการที่รวมไว้ในขณะนี้

ล้างข้อมูล

ทั่วไป

หากคุณดำเนินการเสร็จแล้วในตอนนี้ เราขอแนะนำให้ปิดใช้แอป App Engine เพื่อไม่ให้มีการเรียกเก็บเงิน อย่างไรก็ตาม หากต้องการทดสอบหรือทดลองเพิ่มเติม แพลตฟอร์ม App Engine มีโควต้าฟรี ดังนั้นตราบใดที่คุณไม่เกินระดับการใช้งานดังกล่าว คุณก็จะไม่ถูกเรียกเก็บเงิน ซึ่งเป็นค่าบริการสำหรับการประมวลผล แต่อาจมีค่าบริการสำหรับบริการ App Engine ที่เกี่ยวข้องด้วย ดังนั้นโปรดดูข้อมูลเพิ่มเติมในหน้าการกำหนดราคา หากการย้ายข้อมูลนี้เกี่ยวข้องกับบริการอื่นๆ ของระบบคลาวด์ ระบบจะเรียกเก็บเงินสำหรับบริการเหล่านั้นแยกต่างหาก ไม่ว่าจะในกรณีใดก็ตาม หากมี ให้ดูส่วน "เฉพาะสำหรับ Codelab นี้" ด้านล่าง

เพื่อความโปร่งใสอย่างเต็มที่ การติดตั้งใช้งานแพลตฟอร์มการประมวลผลแบบ Serverless ของ Google Cloud เช่น App Engine จะทำให้เกิดค่าใช้จ่ายในการสร้างและพื้นที่เก็บข้อมูลเล็กน้อย Cloud Build มีโควต้าฟรีของตัวเอง เช่นเดียวกับ Cloud Storage การจัดเก็บรูปภาพนั้นจะใช้โควต้าบางส่วน อย่างไรก็ตาม คุณอาจอาศัยอยู่ในภูมิภาคที่ไม่มีระดับการใช้งานฟรีดังกล่าว ดังนั้นโปรดทราบการใช้พื้นที่เก็บข้อมูลเพื่อลดค่าใช้จ่ายที่อาจเกิดขึ้น "โฟลเดอร์" ของ Cloud Storage ที่คุณควรตรวจสอบ ได้แก่

  • 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*ation ของคุณ เช่น "us" หากแอปโฮสต์อยู่ในสหรัฐอเมริกา

ในทางกลับกัน หากคุณจะไม่ดำเนินการต่อกับแอปพลิเคชันนี้หรือ Codelab การย้ายข้อมูลอื่นๆ ที่เกี่ยวข้อง และต้องการลบทุกอย่างออกทั้งหมด ให้ปิดโปรเจ็กต์

เฉพาะสำหรับ Codelab นี้

บริการที่ระบุไว้ด้านล่างเป็นบริการเฉพาะสำหรับโค้ดแล็บนี้ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของแต่ละผลิตภัณฑ์

ขั้นตอนถัดไป

คุณสามารถดำเนินการต่อได้หลายวิธีดังนี้

  1. อัปเดตโค้ดโดยใช้บริการแบบแพ็กเกจที่ต้องมีการเปลี่ยนแปลงโค้ดเพิ่มเติม
  2. ย้ายข้อมูลจากบริการแบบแพ็กเกจไปยังผลิตภัณฑ์แบบสแตนด์อโลนบนระบบคลาวด์
  3. ย้ายข้อมูลจาก App Engine ไปยังแพลตฟอร์มแบบไร้เซิร์ฟเวอร์อื่นๆ ในระบบคลาวด์

การเข้าถึงบริการอื่นๆ ที่รวมอยู่ เช่น Blobstore, Mail และ Deferred จะต้องมีการเปลี่ยนแปลงโค้ดเพิ่มเติม โมดูลการย้ายข้อมูลที่เน้นการย้ายออกจากบริการแบบกลุ่มเดิมของ App Engine ที่ควรพิจารณา ได้แก่

App Engine ไม่ใช่แพลตฟอร์มแบบไร้เซิร์ฟเวอร์เพียงอย่างเดียวใน Google Cloud อีกต่อไป หากคุณมีแอป App Engine ขนาดเล็กหรือแอปที่มีฟังก์ชันการทำงานจำกัด และต้องการเปลี่ยนให้เป็นไมโครเซอร์วิสแบบสแตนด์อโลน หรือต้องการแยกแอปแบบ Monolithic ออกเป็นคอมโพเนนต์ที่นำกลับมาใช้ใหม่ได้หลายรายการ นี่เป็นเหตุผลที่ดีที่ควรพิจารณาเปลี่ยนไปใช้ Cloud Functions หากการใช้คอนเทนเนอร์กลายเป็นส่วนหนึ่งของเวิร์กโฟลว์การพัฒนาแอปพลิเคชัน โดยเฉพาะอย่างยิ่งหากประกอบด้วยไปป์ไลน์ CI/CD (การผสานรวมอย่างต่อเนื่อง/การนำส่งหรือการติดตั้งใช้งานอย่างต่อเนื่อง) ให้พิจารณาการย้ายข้อมูลไปยัง Cloud Run สถานการณ์เหล่านี้จะครอบคลุมในโมดูลต่อไปนี้

  • ย้ายข้อมูลจาก App Engine ไปยัง Cloud Functions: ดูโมดูลที่ 11
  • ย้ายข้อมูลจาก App Engine ไปยัง Cloud Run: ดูโมดูลที่ 4 เพื่อจัดคอนเทนเนอร์แอปด้วย Docker หรือโมดูลที่ 5 เพื่อดำเนินการโดยไม่ต้องใช้คอนเทนเนอร์ ความรู้เกี่ยวกับ Docker หรือ Dockerfile

การเปลี่ยนไปใช้แพลตฟอร์มแบบไม่ใช้เซิร์ฟเวอร์อื่นเป็นทางเลือก และเราขอแนะนำให้พิจารณาตัวเลือกที่ดีที่สุดสำหรับแอปและ Use Case ของคุณก่อนทำการเปลี่ยนแปลงใดๆ

ไม่ว่าคุณจะพิจารณาโมดูลการย้ายข้อมูลใดเป็นโมดูลถัดไป คุณจะเข้าถึงเนื้อหาของ Serverless Migration Station ทั้งหมด (Codelab, วิดีโอ, ซอร์สโค้ด [หากมี]) ได้ที่ที่เก็บแบบโอเพนซอร์ส README ของที่เก็บยังให้คำแนะนำเกี่ยวกับการย้ายข้อมูลที่ควรพิจารณาและ "ลำดับ" ที่เกี่ยวข้องของโมดูลการย้ายข้อมูลด้วย

7. แหล่งข้อมูลเพิ่มเติม

ด้านล่างนี้คือแหล่งข้อมูลเพิ่มเติมสำหรับนักพัฒนาแอปที่ต้องการสำรวจโมดูลการย้ายข้อมูลนี้หรือโมดูลที่เกี่ยวข้อง รวมถึงผลิตภัณฑ์ที่เกี่ยวข้องเพิ่มเติม ซึ่งรวมถึงส่วนที่ให้ความคิดเห็นเกี่ยวกับเนื้อหานี้ ลิงก์ไปยังโค้ด และเอกสารต่างๆ ที่คุณอาจเห็นว่ามีประโยชน์

ปัญหา/ความคิดเห็นเกี่ยวกับ Codelab

หากพบปัญหาเกี่ยวกับ Codelab นี้ โปรดค้นหาปัญหาของคุณก่อนที่จะยื่นเรื่อง ลิงก์สำหรับค้นหาและสร้างปัญหาใหม่

แหล่งข้อมูลเกี่ยวกับการย้ายข้อมูล

คุณจะพบลิงก์ไปยังโฟลเดอร์ที่เก็บสำหรับโมดูลที่ 1 (START) และโมดูลที่ 1b (FINISH) ได้ในตารางด้านล่าง นอกจากนี้ คุณยังเข้าถึงได้จากที่เก็บสำหรับการย้ายข้อมูล Codelab ของ App Engine ทั้งหมด

Codelab

Python 2

Python 3

โมดูล 1

รหัส

ไม่มี

โมดูล 17 (Codelab นี้)

ไม่มี

โค้ด (mod1b-flask)

แหล่งข้อมูลออนไลน์

ด้านล่างนี้คือแหล่งข้อมูลออนไลน์ที่อาจเกี่ยวข้องกับบทแนะนำนี้

บริการ App Engine แบบกลุ่ม

เอกสารทั่วไปของ App Engine

ข้อมูลอื่นๆ เกี่ยวกับระบบคลาวด์

วิดีโอ

ใบอนุญาต

ผลงานนี้ได้รับอนุญาตภายใต้สัญญาอนุญาตครีเอทีฟคอมมอนส์สำหรับยอมรับสิทธิของผู้สร้าง (Creative Commons Attribution License) 2.0 แบบทั่วไป