Skip to content
This repository was archived by the owner on Oct 1, 2025. It is now read-only.

Commit 5170548

Browse files
committed
add tutorial links
1 parent ec8d386 commit 5170548

File tree

2 files changed

+40
-30
lines changed

2 files changed

+40
-30
lines changed

.README.md.swp

32 KB
Binary file not shown.

README.md

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Codelabs begin with a "START" code base then walks developers through that migra
77

88
> **NOTE:** These migrations are *only* for those with Python 2 (2.7) App Engine apps.
99
> 1. *Python 3.x App Engine users*: You're *already* on the next-gen platform, so there's no need for you to be here unless you help 2.x developers migrate.
10-
> 1. *Python 2.5 App Engine developers*: to revive apps on the original 2.5 runtime, [deprecated in 2013](http://googleappengine.blogspot.com/2013/03/python-25-thanks-for-good-times.html) and [shutdown in 2017](https://cloud.google.com/appengine/docs/standard/python/python25), you must [migrate from `db` to `ndb`](http://cloud.google.com/appengine/docs/standard/python/ndb/db_to_ndb) before attempting these migrations.
10+
> 1. *Python 2.5 App Engine users*: to revive apps from the original 2.5 runtime, [deprecated in 2013](http://googleappengine.blogspot.com/2013/03/python-25-thanks-for-good-times.html) and [shutdown in 2017](https://cloud.google.com/appengine/docs/standard/python/python25), you must [migrate from `db` to `ndb`](http://cloud.google.com/appengine/docs/standard/python/ndb/db_to_ndb) and get those apps running on Python 2.7 before attempting these migrations.
1111
1212

1313
## Prerequisites
@@ -21,7 +21,7 @@ Codelabs begin with a "START" code base then walks developers through that migra
2121

2222
## Cost
2323

24-
App Engine is not a free service. While you may not have needed to enable billing in App Engine's early days, [all applications now require an active billing account](https://cloud.google.com/appengine/docs/standard/payment-instrument) backed by a financial instrument (usually a credit card). Don't worry, App Engine (and other GCP products) still have an ["Always Free" tier](https://cloud.google.com/free/docs/gcp-free-tier#always-free), and as long as you stay within those limits, you won't incur billing. Also check the App Engine [pricing](https://cloud.google.com/appengine/pricing) and [quotas](https://cloud.google.com/appengine/quotas) pages for more information.
24+
App Engine is not a free service. While you may not have needed to enable billing in App Engine's early days, [all applications now require an active billing account](https://cloud.google.com/appengine/docs/standard/payment-instrument) backed by a financial instrument (usually a credit card). Don't worry, App Engine (and other GCP products) still have an ["Always Free" tier](https://cloud.google.com/free/docs/gcp-free-tier#always-free), and as long as you stay within those limits, you won't incur any charges. Also check the App Engine [pricing](https://cloud.google.com/appengine/pricing) and [quotas](https://cloud.google.com/appengine/quotas) pages for more information.
2525

2626

2727
## Why
@@ -60,33 +60,35 @@ The table below summarizes migration module resources currently available to dev
6060

6161
### Summary table
6262

63-
Module | Topic | Video | Codelab | START repo | FINISH repo
64-
--- | --- | --- | --- | --- | ---
65-
0|Baseline app| _TBD_ | _N/A_ | _N/A_ | Module 0 [code](/mod0-baseline) (2.x)
66-
1|Migrate to Flask| _TBD_ | _TBD_ | Module 0 [code](/mod0-baseline) (2.x) | Module 1 [code](/mod1-framework) (2.x)
67-
2|Migrate to Cloud NDB| _TBD_ | _TBD_ | Module 1 [code](/mod1-framework) (2.x) | Module 2 [code](/mod2a-cloudndb) (2.x) & [code](/mod2b-cloudndb) (3.x)
68-
3|Migrate to Cloud Datastore| _TBD_ | _TBD_ | Module 2 [code](/mod2a-cloudndb) (2.x) & [code](/mod2b-cloudndb) (3.x) | Module 3 [code](/mod3a-datastore) (2.x) & [code](/mod3b-datastore) (3.x)
69-
4|Migrate to Cloud Run with Docker| _TBD_ | _TBD_ | Module 2 [code](/mod2a-cloudndb) (2.x) & Module 3 [code](/mod3b-datastore) (3.x) | Module 4 [code](/mod4a-rundocker) (2.x) & [code](/mod4b-rundocker) (3.x)
70-
5|Migrate to Cloud Run with Buildpacks| _TBD_ | _TBD_ | Module 2 [code](/mod2b-cloudndb) (3.x) | Module 5 [code](/mod5-runbldpks) (3.x)
71-
6|Migrate to Cloud Firestore| _TBD_ | _TBD_ | Module 3 [code]() (3.x) | Module 6 [code](/mod6-firestore) (3.x)
72-
7|Add App Engine push tasks| _TBD_ | _TBD_ | Module 1 [code]() (2.x) | Module 7 [code](/mod7-gaetasks) (2.x)
73-
8|Migrate to Cloud Tasks| _TBD_ | _TBD_ | Module 7 [code](/mod7-gaetasks) (2.x) | Module 8 [code](/mod8-cloudtasks) (2.x)
74-
9|Migrate to Python 3 (Cloud Datastore & Cloud Tasks v2)| _TBD_ | _TBD_ | Module 8 [code](/mod8-cloudtasks) (2.x) | Module 9 [code](/mod9-py3clouddstasks) (3.x)
63+
Module | Topic | Codelab | START repo | FINISH repo
64+
--- | --- | --- | --- | ---
65+
0|Baseline app| _N/A_ (no migration; just review the code) | _N/A_ | Module 0 [code](/mod0-baseline) (2.x)
66+
1|Migrate to Flask| [link](http://g.co/codelabs/pae-migrate-flask) | Module 0 [code](/mod0-baseline) (2.x) | Module 1 [code](/mod1-framework) (2.x)
67+
2|Migrate to Cloud NDB| [link](http://g.co/codelabs/pae-migrate-cloudndb) | Module 1 [code](/mod1-framework) (2.x) | Module 2 [code](/mod2a-cloudndb) (2.x) & [code](/mod2b-cloudndb) (3.x)
68+
3|Migrate to Cloud Datastore| [link](http://g.co/codelabs/pae-migrate-datastore) | Module 2 [code](/mod2a-cloudndb) (2.x) & [code](/mod2b-cloudndb) (3.x) | Module 3 [code](/mod3a-datastore) (2.x) & [code](/mod3b-datastore) (3.x)
69+
4|Migrate to Cloud Run with Docker| [link](http://g.co/codelabs/pae-migrate-rundocker) | Module 2 [code](/mod2a-cloudndb) (2.x) & Module 3 [code](/mod3b-datastore) (3.x) | Module 4 [code](/mod4a-rundocker) (2.x) & [code](/mod4b-rundocker) (3.x)
70+
5|Migrate to Cloud Run with Buildpacks| [link](http://g.co/codelabs/pae-migrate-runbldpks) | Module 2 [code](/mod2b-cloudndb) (3.x) | Module 5 [code](/mod5-runbldpks) (3.x)
71+
6|Migrate to Cloud Firestore| [link](http://g.co/codelabs/pae-migrate-firestore) | Module 3 [code]() (3.x) | Module 6 [code](/mod6-firestore) (3.x)
72+
7|Add App Engine push tasks| [link](http://g.co/codelabs/pae-migrate-gaetasks) | Module 1 [code]() (2.x) | Module 7 [code](/mod7-gaetasks) (2.x)
73+
8|Migrate to Cloud Tasks| [link](http://g.co/codelabs/pae-migrate-cloudtasks) | Module 7 [code](/mod7-gaetasks) (2.x) | Module 8 [code](/mod8-cloudtasks) (2.x)
74+
9|Migrate to Python 3 (Cloud Datastore & Cloud Tasks v2)| [link](http://g.co/codelabs/pae-migrate-py3dstasks) | Module 8 [code](/mod8-cloudtasks) (2.x) | Module 9 [code](/mod9-py3clouddstasks) (3.x)
7575

7676

7777
### Table of contents
7878

7979
If there is a logical codelab to do immediately after completing one, they will be designated as NEXT. Other recommended codelabs will be listed as RECOMMENDED, and the more optional ones will be labeled as OTHERS (and usually in some kind of priority order).
8080

81-
- Module 1 codelab: **Migrate from `webapp2` to [Flask](https://flask.palletsprojects.com)**
81+
82+
- [Module 1 codelab](http://g.co/codelabs/pae-migrate-flask): **Migrate from `webapp2` to [Flask](https://flask.palletsprojects.com)**
8283
- **Required** migration (can also pick your own framework)
8384
- `webapp2` does not do routing thus unsupported by App Engine (even though a [3.x port exists](https://github.com/fili/webapp2-gae-python37))
8485
- Python 2 only
8586
- START: [Module 0 code - Baseline](/mod0-baseline) (2.x)
8687
- FINISH: [Module 1 code - Framework](/mod1-framework) (2.x)
8788
- NEXT: Module 2 codelab - migrate to Cloud NDB
8889

89-
- Module 2 codelab: **Migrate from App Engine `ndb` to [Cloud NDB](https://googleapis.dev/python/python-ndb/latest)**
90+
91+
- [Module 2 codelab](http://g.co/codelabs/pae-migrate-cloudndb): **Migrate from App Engine `ndb` to [Cloud NDB](https://googleapis.dev/python/python-ndb/latest)**
9092
- **Required** migration
9193
- Migration to Cloud NDB which is supported by Python 3 and the next-gen platform.
9294
- Python 2
@@ -97,18 +99,18 @@ If there is a logical codelab to do immediately after completing one, they will
9799
- RECOMMENDED:
98100
- Module 7 codelab - add App Engine (push) tasks
99101
- OTHERS (somewhat priority order):
100-
- Module 4 codelab - migrate to Cloud Run container with Docker
101102
- Module 5 codelab - migrate to Cloud Run container with Cloud Buildpacks
103+
- Module 4 codelab - migrate to Cloud Run container with Docker
102104
- Module 3 codelab - migrate to Cloud Datastore
103105

104-
- Module 7 codelab: **Add App Engine (push) Task Queues to App Engine `ndb` Flask app**
106+
- [Module 7 codelab](http://g.co/codelabs/pae-migrate-gaetasks): **Add App Engine (push) Task Queues to App Engine `ndb` Flask app**
105107
- **Not a migration**: add GAE Task Queues to prepare for migration to Cloud Tasks
106108
- Python 2
107109
- START: [Module 1 code - Framework](/mod1-framework) (2.x)
108110
- FINISH: [Module 7 code - GAE Task Queues](/mod7-gaetasks) (2.x)
109111
- NEXT: Module 8 codelab - migrate App Engine push tasks to Cloud Tasks
110112

111-
- Module 8 codelab: **Migrate from App Engine (push) Task Queues to [Cloud Tasks](http://cloud.google.com/tasks) v1**
113+
- [Module 8 codelab](http://g.co/codelabs/pae-migrate-cloudtasks): **Migrate from App Engine (push) Task Queues to [Cloud Tasks](http://cloud.google.com/tasks) v1**
112114
- **Required** migration
113115
- Migration to Cloud Tasks which is supported by Python 3 and the next-gen platform.
114116
- Note this is only push tasks... pull tasks will be handled in a different codelab.
@@ -117,20 +119,21 @@ If there is a logical codelab to do immediately after completing one, they will
117119
- FINISH: [Module 8 code - Cloud Tasks](/mod8-cloudtasks) (2.x)
118120
- NEXT: Module 9 codelab - migrate to Python 3
119121

120-
- Module 9 codelab: **Migrate a Python 2 Cloud NDB & Cloud Tasks app to a Python 3 Cloud Datastore app**
122+
- [Module 9 codelab](http://g.co/codelabs/pae-migrate-py3dstasks): **Migrate a Python 2 Cloud NDB & Cloud Tasks app to a Python 3 Cloud Datastore app**
121123
- **Mixed migration recommendation**
122124
- Migrating to Python 3 is required, but...
123125
- Migrating to Cloud Datastore is optional as Cloud NDB works on 3.x; it's to give you the experience of doing it
124-
- This codelab includes the migration in the [Module 3 codelab](), so skip it
126+
- This codelab includes the [Module 3 migration codelab](http://g.co/codelabs/pae-migrate-datastore), so skip if you complete this one
125127
- Python 2
126128
- START: [Module 8 code - Cloud Tasks](/mod8-cloudtasks) (2.x)
127129
- Python 3
128130
- FINISH: [Module 9 code - Cloud Datastore & Tasks](/mod9-py3clouddstasks) (3.x)
129131
- RECOMMENDED:
130-
- Module 4 codelab - migrate to Cloud Run container with Docker
131132
- Module 5 codelab - migrate to Cloud Run container with Cloud Buildpacks
133+
- Module 4 codelab - migrate to Cloud Run container with Docker
134+
- Module 6 codelab - migrate to Cloud Firestore
132135

133-
- Module 4 codelab: **Migrate from App Engine to [Cloud Run](http://cloud.google.com/run) with Docker**
136+
- [Module 4 codelab](http://g.co/codelabs/pae-migrate-rundocker): **Migrate from App Engine to [Cloud Run](http://cloud.google.com/run) with Docker**
134137
- **Optional** migration
135138
- "Containerize" your app (migrate your app to a container) with Docker
136139
- Python 2
@@ -141,16 +144,22 @@ If there is a logical codelab to do immediately after completing one, they will
141144
- FINISH: [Module 4 code - Cloud Run - Docker](/mod4b-rundocker) (3.x)
142145
- RECOMMENDED:
143146
- Module 5 codelab - migrate to Cloud Run container with Cloud Buildpacks
147+
- OTHER OPTIONS (in somewhat priority order):
148+
- Module 7 codelab - add App Engine (push) tasks
144149

145-
- Module 5 codelab: **Migrate from App Engine to [Cloud Run](http://cloud.google.com/run) with Cloud Buildpacks**
150+
- [Module 5 codelab](http://g.co/codelabs/pae-migrate-runbldpks): **Migrate from App Engine to [Cloud Run](http://cloud.google.com/run) with Cloud Buildpacks**
146151
- **Optional** migration
147152
- "Containerize" your app (migrate your app to a container) with...
148-
- [Cloud Buildpacks]() which lets you containerize your app without Dockerfiles
153+
- [Cloud Buildpacks]() which lets you containerize your app without `Dockerfile`s
149154
- Python 3 only
150155
- START: [Module 2 code - Cloud NDB](/mod2b-cloudndb) (3.x)
151156
- FINISH: [Module 5 code - Cloud Run - Buildpacks 3.x](/mod5-runbldpks) (3.x)
157+
- RECOMMENDED:
158+
- Module 4 codelab - migrate to Cloud Run container with Docker
159+
- OTHER OPTIONS (in somewhat priority order):
160+
- Module 7 codelab - add App Engine (push) tasks
152161

153-
- Module 3 codelab: **Migrate from Cloud NDB to Cloud Datastore**
162+
- [Module 3 codelab](http://g.co/codelabs/pae-migrate-datastore): **Migrate from Cloud NDB to Cloud Datastore**
154163
- **Optional** migration
155164
- Recommended only if using Cloud Datastore elsewhere (GAE *or* non-App Engine) apps
156165
- Helps w/code consistency & reusability, reduces maintenance costs
@@ -160,12 +169,13 @@ If there is a logical codelab to do immediately after completing one, they will
160169
- Python 3
161170
- START: [Module 2 code - Cloud NDB](/mod2b-cloudndb) (3.x)
162171
- FINISH: [Module 3 code - Cloud Datastore](/mod3b-datastore) (3.x)
163-
- OPTIONS (in somewhat priority order):
172+
- RECOMMENDED:
164173
- Module 7 codelab - add App Engine (push) tasks
165-
- Module 4 codelab - migrate to Cloud Run container with Docker
174+
- OTHER OPTIONS (in somewhat priority order):
175+
- Module 5 codelab - migrate to Cloud Run container with Cloud Buildpacks
166176
- Module 6 codelab - migrate to Cloud Firestore
167177

168-
- Module 6 codelab: **Migrate from Cloud Datastore to [Cloud Firestore](http://cloud.google.com/firestore)**
178+
- [Module 6 codelab](http://g.co/codelabs/pae-migrate-firestore): **Migrate from Cloud Datastore to [Cloud Firestore](http://cloud.google.com/firestore)**
169179
- **Highly optional** migration (WARNING: infrequent/uncommon & "expensive" migration)
170180
- Requires new project & Datastore has better write performance (currently)
171181
- If you **must have** Firestore's Firebase features
@@ -175,7 +185,7 @@ If there is a logical codelab to do immediately after completing one, they will
175185
- RECOMMENDED:
176186
- Module 7 codelab - add App Engine (push) tasks
177187
- OTHER OPTIONS (in somewhat priority order):
178-
- Module 4 codelab - migrate to Cloud Run container with Docker
188+
- Module 5 codelab - migrate to Cloud Run container with Cloud Buildpacks
179189

180190

181191
## Considerations for mobile developers

0 commit comments

Comments
 (0)