1. Tổng quan
Loạt lớp học lập trình Serverless Migration Station (hướng dẫn thực hành theo tốc độ của riêng bạn) và các video liên quan nhằm giúp các nhà phát triển Google Cloud không máy chủ hiện đại hoá các ứng dụng của họ bằng cách hướng dẫn họ thực hiện một hoặc nhiều quy trình di chuyển, chủ yếu là chuyển từ các dịch vụ cũ. Làm như vậy sẽ giúp ứng dụng của bạn dễ dàng di chuyển hơn, đồng thời mang đến cho bạn nhiều lựa chọn và sự linh hoạt hơn, cho phép bạn tích hợp và truy cập vào nhiều sản phẩm trên đám mây hơn, cũng như dễ dàng nâng cấp lên các bản phát hành ngôn ngữ mới hơn. Mặc dù ban đầu tập trung vào những người dùng Cloud sớm nhất, chủ yếu là các nhà phát triển App Engine (môi trường tiêu chuẩn), nhưng loạt bài này đủ rộng để bao gồm các nền tảng không máy chủ khác như Cloud Functions và Cloud Run, hoặc ở những nơi khác nếu có thể.
Lớp học lập trình này hướng dẫn bạn cách thêm và sử dụng App Engine Memcache cho ứng dụng mẫu trong lớp học lập trình Mô-đun 1. Chúng ta sẽ thêm cách sử dụng Memcache trong hướng dẫn này ở Mô-đun 12, sau đó di chuyển sang Cloud Memorystore trong Mô-đun 13.
Bạn sẽ tìm hiểu cách
- Sử dụng API/thư viện Memcache của App Engine
- Thêm tính năng lưu vào bộ nhớ đệm vào một ứng dụng NDB cơ bản của Flask App Engine Python 2
Bạn cần có
- Một dự án trên Google Cloud Platform có một tài khoản thanh toán GCP đang hoạt động
- Kỹ năng cơ bản về Python
- Có kiến thức cơ bản về các lệnh Linux thường dùng
- Kiến thức cơ bản về cách phát triển và triển khai các ứng dụng App Engine
- Một ứng dụng App Engine hoạt động ở Mô-đun 1 (hoàn thành lớp học lập trình này [nên dùng] hoặc sao chép ứng dụng từ kho lưu trữ)
Khảo sát
Bạn sẽ sử dụng hướng dẫn này như thế nào?
Bạn đánh giá thế nào về trải nghiệm của mình với Python?
Bạn đánh giá thế nào về trải nghiệm khi sử dụng các dịch vụ của Google Cloud?
2. Thông tin khái quát
Để di chuyển từ App Engine Memcache, hãy thêm việc sử dụng Memcache vào ứng dụng Flask và App Engine NDB hiện có trong lớp học lập trình Mô-đun 1. Ứng dụng mẫu hiển thị 10 lượt truy cập gần đây nhất của người dùng. Nếu cùng một người dùng làm mới trình duyệt, thì việc liên tục tạo các thực thể Lượt truy cập mới và tìm nạp các lượt truy cập gần đây nhất từ Datastore là không tối ưu, vì vậy, chúng ta sẽ lưu vào bộ nhớ đệm những lượt truy cập gần đây nhất đó.
Nếu cùng một khách truy cập truy cập vào trang, thì những lượt truy cập đó sẽ được trả về từ bộ nhớ đệm. Nếu người dùng mới truy cập vào trang web hoặc đã hết một giờ, thì bộ nhớ đệm sẽ bị xoá và thay thế bằng các mục gần đây nhất (chưa kể một Lượt truy cập mới được đăng ký). Sau khi triển khai chế độ tích hợp App Engine Memcache này, chúng ta có thể di chuyển chế độ này sang Cloud Memorystore trong lớp học lập trình tiếp theo (Mô-đun 13).
Hướng dẫn này có các bước sau:
- Thiết lập/Công việc chuẩn bị
- Cập nhật cấu hình
- Sửa đổi mã xử lý ứng dụng
3. Thiết lập/Công việc chuẩn bị
Trước khi bắt đầu phần chính của hướng dẫn, hãy thiết lập dự án, lấy mã rồi triển khai ứng dụng cơ sở để chúng ta biết rằng mình đã bắt đầu bằng mã hoạt động.
1. Thiết lập dự án
Nếu đã hoàn thành lớp học lập trình Mô-đun 1, bạn nên sử dụng lại chính dự án (và mã) đó. Ngoài ra, bạn có thể tạo một dự án hoàn toàn mới hoặc sử dụng lại một dự án hiện có khác. Đảm bảo dự án có một tài khoản thanh toán đang hoạt động và App Engine được bật.
2. Tải ứng dụng mẫu cơ sở
Một trong những điều kiện tiên quyết của lớp học lập trình này là bạn phải có một ứng dụng mẫu Hoạt động 1 đang hoạt động. Nếu không có, hãy hoàn thành một trong hai hướng dẫn (đường liên kết ở trên) trước khi tiếp tục ở đây. Nếu đã quen thuộc với nội dung này, bạn có thể bắt đầu bằng mã Mô-đun 1 bên dưới.
Cho dù bạn dùng mã của mình hay mã của chúng tôi, mã của Mô-đun 1 sẽ là nơi chúng ta BẮT ĐẦU. Lớp học lập trình này sẽ hướng dẫn bạn từng bước, kết thúc bằng mã tương tự như mã trong thư mục kho lưu trữ Mô-đun 11 (FINISH).
- BẮT ĐẦU: Thư mục Mô-đun 1 (Python 2)
- HOÀN TẤT: Thư mục Mô-đun 12 (Python 2)
- Toàn bộ kho lưu trữ (để sao chép hoặc tải tệp ZIP xuống)
Thư mục của các tệp BẮT ĐẦU Mô-đun 1 (của bạn hoặc của chúng tôi) sẽ có dạng như sau:
$ ls README.md main.py templates app.yaml requirements.txt
3. (Triển khai lại) Ứng dụng cơ sở
Các bước chuẩn bị còn lại mà bạn cần thực hiện ngay:
- Làm quen lại với công cụ dòng lệnh
gcloud - Triển khai lại ứng dụng mẫu bằng
gcloud app deploy - Xác nhận rằng ứng dụng chạy trên App Engine mà không gặp vấn đề
Sau khi thực hiện thành công các bước đó và thấy ứng dụng web của bạn hoạt động (với đầu ra tương tự như bên dưới), bạn đã sẵn sàng thêm tính năng sử dụng bộ nhớ đệm vào ứng dụng của mình.

4. Cập nhật cấu hình
Bạn không cần thay đổi các tệp cấu hình App Engine tiêu chuẩn (app.yaml, requirements.txt, appengine_config.py).
5. Sửa đổi tệp ứng dụng
Vì chúng ta chỉ thêm một API App Engine, nên không có gói bên ngoài nào liên quan, tức là bạn không cần cập nhật tệp cấu hình (app.yaml, requirements.txt, appengine_config.py). Chỉ có một tệp ứng dụng, main.py, nên mọi thay đổi trong phần này chỉ ảnh hưởng đến tệp đó.
Nhập
Bước quan trọng nhất là nhập thư viện Memcache, google.appengine.api.memcache. Vì chúng ta sẽ lưu vào bộ nhớ đệm những lượt truy cập gần đây nhất trong một giờ, nên hãy thêm một hằng số cho số giây trong một giờ. Dưới đây là giao diện mã của bạn trước và sau khi thay đổi này:
TRƯỚC:
from flask import Flask, render_template, request
from google.appengine.ext import ndb
app = Flask(__name__)
SAU:
from flask import Flask, render_template, request
from google.appengine.api import memcache
from google.appengine.ext import ndb
app = Flask(__name__)
HOUR = 3600
Thêm tính năng lưu vào bộ nhớ đệm có hỗ trợ Memcache
Thay đổi đáng kể nhất là thêm việc sử dụng tính năng lưu vào bộ nhớ đệm trong ứng dụng của chúng ta. Cụ thể hơn, chúng ta nên lưu vào bộ nhớ đệm những lượt truy cập gần đây nhất, kiểm tra xem có lượt truy cập nào được lưu vào bộ nhớ đệm hay không và cố gắng sử dụng kết quả được lưu vào bộ nhớ đệm nhiều nhất có thể theo kế hoạch của chúng ta. Sau đây là các bước mà ứng dụng sẽ thực hiện để đạt được mục tiêu của chúng ta:
- Đặt lượt truy cập hiện tại và gọi là
visitor - Tìm cách tìm nạp
visitsgần đây nhất từ bộ nhớ đệm - Nếu bộ nhớ đệm trống hoặc khách truy cập gần đây nhất (
visits[0]['visitor']) khác vớivisitorhiện tại: lưu lượt truy cập mới nhất này, tìm nạp các lượt truy cập gần đây nhất và lưu chúng vào bộ nhớ đệm trong một giờ. - Hiển thị
visitscho người dùng thông qua mẫu web
Sau đây là hình ảnh trước và sau khi áp dụng các nội dung cập nhật này:
TRƯỚC:
@app.route('/')
def root():
'main application (GET) handler'
store_visit(request.remote_addr, request.user_agent)
visits = fetch_visits(10)
return render_template('index.html', visits=visits)
SAU:
@app.route('/')
def root():
'main application (GET) handler'
# check for (hour-)cached visits
ip_addr, usr_agt = request.remote_addr, request.user_agent
visitor = '{}: {}'.format(ip_addr, usr_agt)
visits = memcache.get('visits')
# register visit & run DB query if cache empty or new visitor
if not visits or visits[0]['visitor'] != visitor:
store_visit(ip_addr, usr_agt)
visits = list(fetch_visits(10))
memcache.set('visits', visits, HOUR) # set() not add()
return render_template('index.html', visits=visits)
Sau đây là hình ảnh minh hoạ những thay đổi đã được thực hiện:

Như vậy là bạn đã thực hiện tất cả các thay đổi cần thiết để thêm việc sử dụng App Engine memcache vào ứng dụng mẫu trong Mô-đun 1. Hãy tạo và triển khai ứng dụng này để xem ứng dụng hoạt động!
6. Tóm tắt/Dọn dẹp
Phần này kết thúc lớp học lập trình bằng cách triển khai ứng dụng, xác minh rằng ứng dụng hoạt động như dự kiến và trong mọi đầu ra được phản ánh. Sau khi xác thực ứng dụng, hãy thực hiện mọi bước dọn dẹp và cân nhắc các bước tiếp theo.
Triển khai và xác minh ứng dụng
Triển khai lại ứng dụng bằng gcloud app deploy và xác nhận rằng ứng dụng hoạt động. Giờ đây, mã của bạn sẽ khớp với mã trong FINISH (HOÀN TẤT), thư mục Mô-đun 12. Kết quả đầu ra phải giống hệt với ứng dụng trong Mô-đun 1 mà bạn đã triển khai trước đó:

Tất cả những gì chúng tôi làm là tăng tốc trải nghiệm người dùng cho cùng một người dùng. Khi làm mới, bạn sẽ nhận được kết quả trực tiếp từ bộ nhớ đệm, việc này không tạo lượt truy cập mới cũng như không thực hiện lệnh tìm nạp Datastore.
Chúc mừng bạn đã hoàn thành lớp học lập trình Mô-đun 12 để thêm việc sử dụng dịch vụ memcache App Engine vào ứng dụng mẫu của chúng tôi. Giờ đây, bạn có thể chuyển ứng dụng Python 2 này sang Python 3 trong bước bổ sung.
Dọn dẹp
Giải pháp chung
Nếu đã hoàn tất, bạn nên tắt ứng dụng App Engine để tránh bị tính phí. Tuy nhiên, nếu muốn kiểm thử hoặc thử nghiệm thêm, nền tảng App Engine có một hạn mức miễn phí. Vì vậy, miễn là không vượt quá cấp sử dụng đó, bạn sẽ không bị tính phí. Đó là mức phí cho hoạt động tính toán, nhưng cũng có thể có các khoản phí cho các dịch vụ App Engine có liên quan. Vì vậy, hãy xem trang định giá của dịch vụ này để biết thêm thông tin. Nếu quá trình di chuyển này liên quan đến các dịch vụ đám mây khác, thì các dịch vụ đó sẽ được tính phí riêng. Trong cả hai trường hợp, nếu có, hãy xem phần "Cụ thể cho lớp học lập trình này" bên dưới.
Để công bố đầy đủ, việc triển khai trên một nền tảng điện toán không máy chủ của Google Cloud như App Engine sẽ phát sinh một khoản chi phí nhỏ cho việc tạo và lưu trữ. Cloud Build có hạn mức miễn phí riêng, tương tự như Cloud Storage. Việc lưu trữ hình ảnh đó sẽ chiếm một phần hạn mức. Tuy nhiên, có thể bạn sinh sống ở một khu vực không có gói miễn phí như vậy, vì vậy, hãy lưu ý đến mức sử dụng bộ nhớ để giảm thiểu chi phí phát sinh. Bạn nên xem xét các "thư mục" cụ thể trên Cloud Storage, bao gồm:
console.cloud.google.com/storage/browser/LOC.artifacts.PROJECT_ID.appspot.com/containers/imagesconsole.cloud.google.com/storage/browser/staging.PROJECT_ID.appspot.com- Các đường liên kết đến bộ nhớ ở trên phụ thuộc vào
PROJECT_IDvà *LOC*của bạn, ví dụ: "us" nếu ứng dụng của bạn được lưu trữ ở Hoa Kỳ.
Mặt khác, nếu bạn không tiếp tục với ứng dụng này hoặc các lớp học lập trình di chuyển có liên quan khác và muốn xoá hoàn toàn mọi thứ, hãy tắt dự án của bạn.
Cụ thể đối với lớp học lập trình này
Các dịch vụ trong danh sách dưới đây là riêng biệt đối với lớp học lập trình này. Hãy tham khảo tài liệu của từng sản phẩm để biết thêm thông tin:
- Dịch vụ Memcache của App Engine có 2 loại, mỗi loại có một cấu trúc giá riêng, vì vậy, bạn phải theo dõi mức sử dụng đó liên quan đến việc thanh toán.
- Dịch vụ App Engine Datastore do Cloud Datastore (Cloud Firestore ở chế độ Datastore) cung cấp, dịch vụ này cũng có một cấp miễn phí; hãy xem trang định giá của dịch vụ này để biết thêm thông tin.
Các bước tiếp theo
Quá trình di chuyển hợp lý tiếp theo cần xem xét được đề cập trong Học phần 13, cho thấy cách nhà phát triển di chuyển từ dịch vụ memcache của App Engine sang Cloud Memorystore. Tất cả các quy trình di chuyển này đều không bắt buộc và dành cho những người dùng muốn thực hiện các bước để hiện đại hoá ứng dụng của họ. Dịch vụ Cloud Memorystore là một bản nâng cấp đáng kể cho memcache của App Engine vì nhiều lý do:
- Cloud Memorystore không phải là dịch vụ không cần máy chủ. Điều này có nghĩa là bạn phải phân bổ một máy chủ cho bộ nhớ đệm. Cloud Memorystore cũng không có cấp miễn phí. Cả hai yếu tố này đều có thể ảnh hưởng đáng kể đến chi phí.
- Cloud Memorystore hỗ trợ một cặp cơ chế lưu trữ cơ bản khác nhau (công cụ lưu vào bộ nhớ đệm), Redis và Memcached.
- Cloud Memorystore (cho Redis) có một bộ tính năng phong phú và chuyên sâu hơn nhiều so với App Engine Memcache.
- Để sử dụng Cloud Memorystore, bạn phải thiết lập một máy chủ Cloud Memorystore, thêm máy chủ đó vào mạng VPC của Google Cloud, sau đó để ứng dụng App Engine sử dụng mạng đó để giao tiếp với máy chủ Memorystore.
Nếu không cảm thấy cần tất cả các tính năng có trong Cloud Memorystore hoặc lo ngại về ảnh hưởng của tính năng này đến chi phí, bạn có thể tiếp tục sử dụng App Engine Memcache.
Ngoài Mô-đun 13, còn có rất nhiều hoạt động di chuyển khác có thể xảy ra, chẳng hạn như Cloud NDB và Cloud Datastore hoặc Cloud Tasks. Ngoài ra, còn có các hoạt động di chuyển trên nhiều sản phẩm sang Cloud Run và Cloud Functions. Bạn sẽ tìm thấy tất cả các hướng dẫn này tại kho lưu trữ di chuyển.
Một bước tiếp theo có thể là quy trình chuyển đổi sang Python 3. Đây là bước không bắt buộc và sẽ được đề cập trong phần tiếp theo.
7. PHẦN THƯỞNG: Di chuyển sang Python 3
Tổng quan
Phần này bao gồm nội dung bổ sung không bắt buộc, di chuyển ứng dụng Mô-đun 12 mà chúng ta vừa hoàn thành ở trên sang Python 3. Chúng ta sẽ bắt đầu với cấu hình, sau đó là ứng dụng.
Đơn giản hoá app.yaml
Một trong những lợi ích của thời gian chạy Python 3 là app.yaml có thể được đơn giản hoá đáng kể.
TRƯỚC:
Dưới đây là nội dung trong app.yaml khi kết thúc Mô-đun 12:
runtime: python27
threadsafe: yes
api_version: 1
handlers:
- url: /.*
script: main.app
Vì thời gian chạy Python 3 yêu cầu các khung web tự thực hiện định tuyến, nên tất cả trình xử lý tuyến đường trong app.yaml phải được thay đổi thành auto. Nếu không có tệp tĩnh nào được phân phát, người dùng có thể xoá hoàn toàn phần handlers:. Ngoài ra, cả threadsafe và api_version đều không còn được dùng nữa.
SAU:
Với những thay đổi bắt buộc vừa được mô tả, đây là app.yaml thay thế cho Python 3:
runtime: python39
app_engine_apis: true
Dòng duy nhất cần có lời giải thích là app_engine_apis: true. Khi các dịch vụ App Engine cũ được cung cấp cho thời gian chạy thế hệ thứ hai vào năm 2021, một số thời gian chạy, bao gồm cả Python 3, yêu cầu thêm quy trình khởi động để truy cập vào các API đó như ndb, taskqueue và memcache. Dòng này trong cấu hình sẽ phục vụ mục đích đó.
Cập nhật tệp requirements.txt
Một quy trình khởi động khác của các API ban đầu là bắt buộc trong requirements.txt: bạn phải có quyền truy cập vào SDK App Engine mới.
TRƯỚC:
Dưới đây là nội dung trong app.yaml khi kết thúc Mô-đun 12:
flask
SAU:
Bạn chỉ cần thêm App Engine Python SDK là có thể sử dụng những tính năng sau:
flask
appengine-python-standard
Xoá appengine_config.py và lib
Thế hệ tiếp theo của thời gian chạy App Engine cải tiến việc sử dụng gói của bên thứ ba:
- Thư viện tích hợp là những thư viện được Google kiểm tra và cung cấp trên các máy chủ App Engine, có thể là do chúng chứa mã C/C++ mà nhà phát triển không được phép triển khai lên đám mây. Những thư viện này không còn có trong thời gian chạy thế hệ thứ 2 nữa.
- Bạn không cần sao chép các thư viện không tích hợp sẵn (đôi khi được gọi là "vendoring" hoặc "self-bundling") trong thời gian chạy thế hệ thứ 2. Thay vào đó, chúng phải được liệt kê trong
requirements.txt, nơi hệ thống xây dựng tự động cài đặt chúng thay cho bạn tại thời điểm triển khai.
Do những thay đổi đó đối với việc quản lý gói của bên thứ ba, bạn không cần tệp appengine_config.py cũng như thư mục lib, vì vậy hãy xoá chúng. Trong thời gian chạy thế hệ thứ 2, App Engine sẽ tự động cài đặt các gói của bên thứ ba có trong requirements.txt. Tóm tắt:
- Không có thư viện tự đóng gói hoặc sao chép của bên thứ ba; hãy liệt kê các thư viện đó trong
requirements.txt - Không có
pip installnào trong thư mụclib, tức là không có thư mụclibnào - Không có thư viện tích hợp sẵn của bên thứ ba (do đó không có phần
libraries) trongapp.yaml; liệt kê các thư viện đó trongrequirements.txt - Không có thư viện bên thứ ba nào để tham chiếu từ ứng dụng của bạn, tức là không có tệp
appengine_config.py
Yêu cầu duy nhất đối với nhà phát triển là liệt kê tất cả các thư viện bên thứ ba mong muốn trong requirements.txt.
Cập nhật ứng dụng để sử dụng App Engine SDK
Như đã đề cập ở trên, các ứng dụng Python 3 cần có một số điểm sửa đổi để truy cập vào các dịch vụ đi kèm của App Engine:
- Gói SDK App Engine (trong
requirements.txt) - Kích hoạt App Engine SDK (trong
app.yaml) - Bọc đối tượng WSGI (trong
main.py)
Cặp đầu tiên đã hoàn tất ở trên, vì vậy yêu cầu cuối cùng là cập nhật main.py.
TRƯỚC:
Dưới đây là main.py Python 2 ở phần kết luận của Mô-đun 12:
from flask import Flask, render_template, request
from google.appengine.api import memcache
from google.appengine.ext import ndb
app = Flask(__name__)
HOUR = 3600
SAU:
Đối với cổng Python 3, hãy nhập SDK và bao bọc đối tượng ứng dụng Flask bằng SDK đó (trình bao bọc SDK), dẫn đến kết quả như sau:
from flask import Flask, render_template, request
from google.appengine.api import memcache, wrap_wsgi_app
from google.appengine.ext import ndb
app = Flask(__name__)
app.wsgi_app = wrap_wsgi_app(app.wsgi_app)
HOUR = 3600
Nhà phát triển cần thực hiện những thay đổi này cho các ứng dụng Python khi thực hiện quy trình chuyển đổi từ phiên bản 2.x sang 3.x để truy cập vào các dịch vụ đi kèm. Nếu không dùng Flask, bạn cũng có thể tham khảo các mẫu Django và Pyramid trong tài liệu. Nếu mã Python 2 của bạn không phải là một ứng dụng web, thì chỉ cần thêm gói SDK là đủ khi chuyển sang Python 3. Mã xử lý ứng dụng của chúng tôi ban đầu được thiết kế để hoạt động trong Python 2 và 3, nên không cần thay đổi thêm về khả năng tương thích.
Triển khai ứng dụng
Sau khi hoàn tất các thay đổi nêu trên, bạn có thể triển khai ứng dụng mẫu đã cập nhật. (Không có vấn đề gì khi triển khai phiên bản Python 3 của ứng dụng qua phiên bản Python 2 ban đầu trong cùng một dự án GCP.) Hành vi của ứng dụng sẽ không thay đổi. Nếu bạn cần so sánh ứng dụng đã cập nhật của mình với ứng dụng của chúng tôi, hãy xem thư mục Module 12b trong kho lưu trữ di chuyển. Để tìm hiểu thêm về việc hỗ trợ các dịch vụ đi kèm của App Engine trong các thời gian chạy mới nhất như Python 3, hãy xem thông báo ra mắt tính năng cũng như lớp học lập trình Mô-đun 17.
Chúc mừng bạn đã hoàn thành bước thưởng trong Mô-đun 12! Ngoài ra, hãy xem tài liệu về cách chuẩn bị tệp cấu hình cho thời gian chạy Python 3. Xem phần Tóm tắt/Dọn dẹp ở trên để biết các bước tiếp theo và cách dọn dẹp.
8. Tài nguyên khác
Dưới đây là các tài nguyên bổ sung dành cho những nhà phát triển muốn tìm hiểu thêm về Mô-đun di chuyển này hoặc các mô-đun di chuyển có liên quan, cũng như các sản phẩm có liên quan. Trong đó có những nơi để bạn gửi ý kiến phản hồi về nội dung này, đường liên kết đến mã và nhiều phần tài liệu mà bạn có thể thấy hữu ích.
Vấn đề/ý kiến phản hồi về lớp học lập trình
Nếu bạn gặp vấn đề với lớp học lập trình này, vui lòng tìm kiếm vấn đề của bạn trước khi báo cáo. Đường liên kết để tìm kiếm và tạo vấn đề mới:
Tài nguyên di chuyển
Bạn có thể tìm thấy đường liên kết đến các thư mục kho lưu trữ cho Mô-đun 2 (BẮT ĐẦU) và Mô-đun 12 (KẾT THÚC) trong bảng bên dưới. Bạn cũng có thể truy cập vào các hướng dẫn này trong kho lưu trữ cho tất cả các hoạt động di chuyển codelab App Engine. Bạn có thể sao chép hoặc tải tệp ZIP xuống.
Lớp học lập trình | Python 2 | Python 3 |
mã (không có trong hướng dẫn này) | ||
Mô-đun 12 (lớp học lập trình này) |
Tài liệu tham khảo trực tuyến
Dưới đây là các tài nguyên trực tuyến có thể liên quan đến hướng dẫn này:
App Engine
- Tài liệu về App Engine
- Thời gian chạy Python 2 App Engine (môi trường tiêu chuẩn)
- Thời gian chạy Python 3 App Engine (môi trường tiêu chuẩn)
- Sự khác biệt giữa thời gian chạy Python 2 và 3 App Engine (môi trường tiêu chuẩn)
- Hướng dẫn di chuyển ứng dụng từ Python 2 sang Python 3 trên App Engine (môi trường tiêu chuẩn)
- Thông tin về giá và hạn mức của App Engine
- Ra mắt nền tảng App Engine thế hệ thứ hai (2018)
- So sánh nền tảng thế hệ thứ nhất và thứ hai
- Hỗ trợ dài hạn cho các thời gian chạy cũ
- Kho lưu trữ mẫu di chuyển tài liệu
- Kho lưu trữ mẫu di chuyển do cộng đồng đóng góp
Cloud Memorystore và Cloud Datastore
- Trang sản phẩm Cloud Memorystore
- Tài liệu về Cloud Memorystore for Redis
- Tài liệu về Cloud Memorystore for Memcached
- Thông tin về giá của Cloud Memorystore (cho Redis)
- Tài liệu về Cloud Datastore
- Thông tin về giá của Cloud Datastore
Thông tin khác về Cloud
- Python trên Google Cloud Platform
- Thư viện ứng dụng Google Cloud Python
- Cấp "Luôn miễn phí" của Google Cloud
- SDK Google Cloud (công cụ dòng lệnh
gcloud) - Tất cả tài liệu của Google Cloud
Video
- Serverless Migration Station
- Expeditions không cần máy chủ
- Đăng ký theo dõi Google Cloud Tech
- Đăng ký theo dõi Google Developers
Giấy phép
Tác phẩm này được cấp phép theo giấy phép Ghi công theo Creative Commons 2.0 Chung.