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

1. ภาพรวม

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

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

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

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

สิ่งที่ต้องมี

แบบสำรวจ

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

อ่านเท่านั้น อ่านและทำแบบฝึกหัด

คุณจะให้คะแนนประสบการณ์การใช้งาน Python อย่างไร

มือใหม่ ระดับกลาง ผู้ชำนาญ

คุณจะให้คะแนนความพึงพอใจในการใช้บริการ Google Cloud อย่างไร

มือใหม่ ระดับกลาง ผู้ชำนาญ

2. ข้อมูลเบื้องต้น

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

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

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

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

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

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

3. การตั้งค่า/งานล่วงหน้า

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

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

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

1. สร้างโปรเจ็กต์

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

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

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

ไม่ว่าคุณจะใช้แอป 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 แล้ว โดยเริ่มจากการกําหนดค่า

เพิ่ม SDK ไปยังข้อกำหนด.txt

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

flask
appengine-python-standard

อัปเดต app.yaml

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

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

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

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

ติดตั้งใช้งานและยืนยันแอปพลิเคชัน

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

a7a9d2b80d706a2b.png

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

  • เปรียบเทียบสิ่งที่คุณมีกับสิ่งที่อยู่ในโฟลเดอร์โมดูล 1b (FINISH) หากคุณเกิดความผิดพลาดในระหว่างดำเนินการ และปรับเปลี่ยนตามความจำเป็น
  • เปรียบเทียบโมดูล 0 main.py เทียบเคียงกับโมดูล 1ข main.py ในหน้านี้หากแอปของคุณยังใช้ webapp2 อยู่ ให้อ่าน Codelab โมดูล 1 เพื่อดูวิธีย้ายข้อมูลจาก webapp2 ไปยัง Flask

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

ล้างข้อมูล

ทั่วไป

หากดำเนินการเสร็จแล้ว เราขอแนะนำให้คุณปิดใช้แอป App Engine เพื่อหลีกเลี่ยงการเรียกเก็บเงิน อย่างไรก็ตาม หากคุณต้องการทดสอบหรือทดลองเพิ่มเติม แพลตฟอร์ม App Engine จะมีโควต้าฟรี และตราบใดที่คุณใช้งานไม่เกินระดับการใช้งานดังกล่าว เราก็จะไม่เรียกเก็บเงิน ค่าดังกล่าวมีไว้สําหรับการประมวลผล แต่ก็อาจมีการเรียกเก็บเงินค่าบริการ App Engine ที่เกี่ยวข้องด้วย ดังนั้นโปรดดูข้อมูลเพิ่มเติมในหน้าราคา หากการย้ายข้อมูลนี้เกี่ยวข้องกับบริการระบบคลาวด์อื่นๆ ระบบจะเรียกเก็บเงินแยกต่างหาก ในทั้ง 2 กรณี หากมี โปรดดูส่วน "เฉพาะสำหรับ 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*ของคุณ เช่น "us" หากแอปของคุณโฮสต์ในสหรัฐอเมริกา

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

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

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

  • บริการ App Engine Datastore ให้บริการโดย Cloud Datastore (Cloud Firestore ในโหมด Datastore) ซึ่งมีรุ่นฟรีเช่นกัน ดูข้อมูลเพิ่มเติมได้ที่หน้าราคา

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

มีเส้นทางหลายทางที่จะไปจากที่นี่:

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

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

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

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

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

ไม่ว่าคุณจะพิจารณาโมดูลการย้ายข้อมูลใดในครั้งถัดไป คุณสามารถเข้าถึงเนื้อหาของสถานีย้ายข้อมูลแบบ Serverless (โค้ดแล็บ วิดีโอ ซอร์สโค้ด [เมื่อพร้อมให้บริการ]) ทั้งหมดได้ที่ที่เก็บโอเพนซอร์ส 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

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

วิดีโอ

ใบอนุญาต

ผลงานนี้ได้รับอนุญาตภายใต้ใบอนุญาตทั่วไปครีเอทีฟคอมมอนส์แบบระบุแหล่งที่มา 2.0