Google CloudのApp Engineバンドルサービスのサポート拡張と新ツール

Google Cloud App Engineのバンドルサービスのサポートが拡大

Google Cloud App Engineは、2008年に初めてリリースされ、多くのバンドルサービスを提供してきました。これにより、アプリケーションはデータベース(Datastore)、キャッシングサービス(Memcache)、タスク実行(Task Queue)、Google Sign-In認証(Users)、大規模な「blob」ストレージ(Blobstore)などに便利にアクセスできるようになっています。しかし、これらのバンドルサービスを利用するアプリは、App Engine上でのみ実行可能でした。

進化するApp Engine

Googleは、アプリの移植性を向上させ、市場で最もオープンなクラウドを実現するために、2018年にApp Engineの第2世代サービスを開始しました。この新しいプラットフォームでは、開発者が最新の言語ランタイムにアプリをアップグレードできるようになりました。例えば、Python 2から3への移行や、Java 8から11、さらにはJava 17へのアップグレードが可能です。

第1世代のランタイムは、カスタマイズされており、所有権があり、使用できるものやできないものに制限がありました。これに対して、第二世代プラットフォームはオープンソースのランタイムを使用しているため、標準の開発慣行に従ったり、一般的なアイディオムを使用したり、サードパーティライブラリに対する制限が少なくなったりします。

しかし、これらの新しいランタイムを使用するには、App Engineサービスからの移行が必要でした。したがって、アプリが動作しなくなったり、完全に書き直す必要が生じたりするため、多くのユーザーにとって大きな障壁となっていました。そこで、App Engineチームは2021年秋に人気のあるサービスのほとんどへのアクセスを復活させました。

Python 3開発者のためのバンドルサービスの利用方法

App Engineを利用しているユーザーがPython 3でバンドルサービスを使用する方法を示すために、「Serverless Migration Station」という動画が公開されています。この移行プロセスは、以下の段階に分かれています。

  • ステップ1:Python 2からFlaskなどの標準的なPythonウェブフレームワークに移行します。
  • ステップ2:ブンドルサービスを保ちながらアプリをPython 3にアップグレードします。
  • ステップ3:必要に応じて、バンドルサービスを移行します。

最初のステップでは、webapp2フレームワークからFlaskなどの標準フレームワークに移行します。そして、アプリがバンドルサービスを使用する場合でも、Python 3にアップグレードすることができます。全体の移行プロセスで重要な変更点は太字にされており、NDBコードは影響を受けないことが確認できます。

移行の選択肢と次のステップ

バンドルサービスを移行することを決定した場合、そのタイミングは自分で選べます。例えば、Cloud FunctionsやCloud Runなどの現代的なサーバーレスプラットフォームへの移行を検討したり、GKE(管理されたKubernetesサービス)やCompute Engine VMsなどの低レベルのプラットフォームに移行したりすることが考えられます。

  • App Engine NDBからCloud NDBへの移行(モジュール2)
  • App Engine Task QueueのプッシュタスクをCloud Tasksに移行(モジュール7-9)
  • App Engine Task QueueのプルタスクをCloud Pub/Subに移行(モジュール18-19)
  • App Engine MemcacheからCloud Memorystoreに移行(モジュール12-13)
  • App Engine BlobstoreからCloud Storageに移行(モジュール15-16)

まとめ

初期のApp Engineユーザーは、その便利さのためにバンドルサービスを高く評価しています。ユーザーからのフィードバックを受けて、第二世代ランタイムへのサービスの追加は、開発者がアプリを現代化する手助けとなるでしょう。新しい言語ランタイムへのアップグレード、Cloud のスタンドアロン製品への移行、その他のサーバーレスプラットフォームへの移行がスムーズに行えるよう、Google Cloudチームは必要なツールを提供していきます。

全てのServerless Migration Stationコンテンツ(コーディングラボ、動画、ソースコードなど)は、オープンソースのリポジトリでアクセス可能です。また、将来的には他の言語のランタイムについてもカバーする予定ですので、最新情報を楽しみにしていてください。