Google CloudのサーバーレスアプリをApp EngineやCloud Functionsで展開する方法

Google Cloudのサーバーレスアプリケーションを探る

Google Cloudには、サーバーレスでコードやアプリケーションを実行するための3つの異なる方法があります。これらはそれぞれ異なるユースケースに対応しており、開発者にとって非常に便利です。この記事では、Google App EngineGoogle Cloud Functions、およびGoogle Cloud Runの特徴と、それらをどう使い分けるかを解説します。

Google Cloudのサーバーレスコンセプト

サーバーレスとは、ユーザーがサーバーの管理を気にせずにアプリケーションを開発・デプロイできることを意味します。Googleが提供するこれらのサービスはそれぞれ、異なるユースケースに最適化されており、開発者は目的に応じて選ぶことができます。

  • Google App Engine: ユーザーがウェブアプリケーションやモバイルバックエンドを直接クラウドにデプロイできるプラットフォームです。サーバーやスケーリングのことを考える必要がないため、開発に集中できます。
  • Google Cloud Functions: イベント駆動型のマイクロサービスやユーティリティ関数を構築するためのプラットフォームです。小さなコードを実行するのに最適です。
  • Google Cloud Run: コンテナを利用してサーバーレスアプリケーションを管理できるプラットフォームで、最新のフルマネージドなサービスです。

アプリケーションの概要

ここでは、簡単な翻訳アプリケーションを例に、これらのプラットフォームでの実装方法を解説します。このアプリは、英語からスペイン語に翻訳する簡単なウェブページで構成されています。次のように多様なデプロイメント方法があります:

  • ローカルFlaskサーバー(Python 2およびPython 3)
  • Google App Engine(Python 2およびPython 3)
  • Google Cloud Functions(Python 3)
  • Google Cloud Run(Python 2およびPython 3、Dockerを介して)
  • Google Cloud Run(Cloud Buildpacksを介して)

翻訳機能の実装

アプリケーションのコア機能は簡単な翻訳を行うもので、ユーザーが英語のフレーズを入力し、それをスペイン語に翻訳する機能を提供します。以下のコードがその一部です:

@app.route('/', methods=['GET', 'POST'])
def translate(gcf_request=None):
    local_request = gcf_request if gcf_request else request
    text = translated = None
    if local_request.method == 'POST':
        text = local_request.form['text'].strip()
        if text:
            data = {
                'contents': [text],
                'parent': PARENT,
                'target_language_code': TARGET[0],
            }
            rsp = TRANSLATE.translate_text(request=data)
            translated = rsp.translations[0].translated_text
            context = {
                'orig': {'text': text, 'lc': SOURCE},
                'trans': {'text': translated, 'lc': TARGET},
            }
            return render_template('index.html', **context)

このコードは、初回リクエスト時にHTMLテンプレートを表示し、ユーザーからの入力を受け取ります。翻訳の結果と元のフレーズが表示され、必要に応じて新しい翻訳のためのフォームが提供されます。

それぞれのプラットフォームの設定

各プラットフォームには、特定の設定ファイルが必要です。例えば:

  • App Engine: app.yamlおよびappengine_config.py
  • Cloud Run: DockerfileまたはProcfile(Cloud Buildpacks)
  • Cloud Functions: requirements.txtなどのパッケージ要件ファイルのみが必要です。

これにより、各サービスに必要なライブラリをインストールし、アプリケーションを設定できます。

次のステップ

このサンプルアプリケーションを通じて、各プラットフォームの違いや切り替え方を理解することができました。組織がコンテナ化を取り入れる場合は、App EngineからCloud Runへ移行することができます。また、プロトタイプ段階では、デフォルトのサービスアカウントを使用して迅速に開発が進められます。

最後に、コードやチュートリアルが公開されているオープンソースリポジトリをチェックして、実際にデプロイしてみましょう。Google Cloudの各サーバーレスプラットフォームを試す際、Google Cloudの請求アカウントが必要ですが、デプロイしただけでは料金は発生しません。

このサンプルアプリが、Google Cloudのサーバーレスプラットフォームの理解を深める手助けとなれば幸いです。また、他の関連コンテンツもぜひご覧ください!