社内でGAE/SEのpy27(SEの1gen)のサービスが多くあり、py37(SE 2gen)への移行のために、軽いノリで整理した記事を書いたので、qiita用に整理し直しました。
少し古い情報や間違いもあるかもしれないので、ご指摘いただければと思います。
Python2.7は2020年1月に死亡
それまでに移行する必要があります。
python2からpython3へのアップデート!
- 2to3
- Python 2.7.x と 3.x の決定的な違いを例とともに
- Python2からPython3.0での変更点
- (その他多くの参考記事があると思います)
AppEngine SDKやpython2.7に依存した人の移行案
基本的にAppEngine SDKは完全廃止です !
もう google.appengine
パッケージとは別れを告げよう!
代替サービスが無い・開発される予定のないものを使っている人は、一緒に辛い道のりを歩もう!
公式の違い解説: Understanding differences between Python 2 and Python 3 on the App Engine standard environment
SE 2nd genには、1st genと比べて、
- プロプライエタリな仕様からの脱却
- AppEngine専用SDKの廃止
- 動く環境もGAEの内側でなく、外と同じ感じになる?
- 自由だけど飼い慣らされた環境じゃない
- 環境依存の脱却
- 普通のDockerぽくなる。(gVisor?)
- テスト等も共通化できる
のような特徴があると感じました。
TaskQueueのPush Queueで非同期処理
Cloud Tasks, AppEngine Queueがβです!
- 有料化したけど、無料範囲が十分大きいので安心!
- Pull Queueの場合やGAEのサービス間通信の場合はpub/subなども使えます。
App Engine Cronで定期実行
- 有料化 されましたが、だいぶ安いので問題なさそうです。
- まだβなのでバグはある?
Memcache最高
- 廃止?
- 検討中ではある?:
Stay tuned for updates as we're continuing to look into opening up Memcache to the rest of GCP.
- 検討中ではある?:
- ないと困る場合はCloud Memorystore(Redis)に課金すべき?
- GAEからアクセスできないらしい。
login: admin
で管理画面
廃止予定
-
IAPへ移行しよう
- Users API自体が廃止なので、Googleアカウントでの認証も移行する必要がある。
-
Google Identity Platform
- GoogleのOAuth
-
Firebase Authentication
- Facebook, Twitter, Email等の、その他ログインも使うならこっち。
Mail APIでお手軽にメール送るっしょ
廃止
- SendGrid, Mailgun, Mailjet等を使いましょう。
Datastoreのpython用ラッパーndbを使っていた
- 移行検討・開発中
- コメント:
We're currently actively exploring bringing ndb to Python 3. Note that this would be close to, but not 100%, API-compatible but would bring the magic of a good ORM to Datastore.
- コメント:
- 待てないならGoogle Cloud Python client libraries を使うのが早い。
画像キャッシュ最強のImages API :framed_picture:
廃止
- 自分でGCSとPillowで頑張る
Search APIで検索システム作ってた
検討中、おそらく廃止?
- GCEにElasticsearchたてる?
dev_appserver.pyのDatastoreエミュレータでテストしていた
廃止
- Cloud Datastore Emulatorを起動するタイプにして書き直しましょう。
- もしくはモック。
GAE/SEのLogはやっぱ見やすくて最高
そのままLoggingしても勝手にまとめてくれません!
自分で集めるようにしましょう。。
その他廃止 :rhinoceros:
個人的に使っていないものですが、使っていた方は注意してください。
- Blobstore
- バイナリが保存できるやつ
- そもそもGCSに移行していると思います。。
- Capabilities
- http://localhost:8888/_ah/admin で使えるやつ。
- Modules API
- AppEngineのサービス(旧モジュール)を取得するAPI。
- 複数サービスで同じコードを使ってたり、自サービスや他サービスと連携する場合は使っていた?
- AppEngine Admin APIや環境変数で対応可。
- URL Fetch
- 特に気にせず普通にアクセスできるようになる。
- Requestsでいい。
- appcfg.py
- そもそも現時点でも非推奨になって久しいので気にしなくていい?。
いいところもいっぱいあるので頑張ろう!
- Third partyライブラリが完全に使える
- C Nativeなライブラリでも自由自在! scikit-learn等も!
- メモリとかマシンリソースは制限あるけど。。
- 無料枠がある!
- C Nativeなライブラリでも自由自在! scikit-learn等も!
- Fileアクセス可能!
- バックグラウンドスレッドでも殺されない!
- 今までもできたはできたけど。。
- Cloud Client Library使える!
-
今までも使えたけどAppEngine SDKとぶつかって面倒だった。
-
- dev_appserver.pyは引き続き使える!
- ただし、使うにはpython2が必要 (そのうち解消するはず。。)