Gemini for Google Cloud アシスタンスを使用して多層アプリを設計する

このチュートリアルでは、Google Cloud の AI を活用したコラボレーターである Gemini for Google Cloud を使用して、可能な場合にフルマネージド サービスを使用して多層ウェブ アプリケーションを設計する方法について説明します。

目標

  • 公共のインターネット経由でトラフィックを処理するために使用できるさまざまな Google サービスを探索します。
  • 高速に取得するためにデータのキャッシュに使用できるさまざまな Google サービスを探索します。
  • ステートフル データの永続化に使用できるさまざまな Google サービスを探索します。
  • さまざまな Google サービスを相互運用する方法を設計します。

使用する Google Cloud プロダクト

  • Cloud Run。Cloud Run は、Google のスケーラブルなインフラストラクチャ上でコンテナを直接実行できるマネージド コンピューティング プラットフォームです。コンテナ イメージをビルドできるものであれば、任意のプログラミング言語で記述されたコードを Cloud Run にデプロイできます。
  • Cloud Memorystore。Cloud Memorystore は、Redis と Memcached 向けのフルマネージド インメモリ データストア サービスです。ミリ秒未満のデータアクセスを実現するアプリケーション キャッシュを構築します。
  • Cloud SQL。Cloud SQL は、クラウドでフルマネージドのリレーショナル データベースを提供するサービスです。MySQL、PostgreSQL、SQL Server のデータベース エンジンを採用しています。

始める前に

  1. Gemini が Google Cloud ユーザー アカウントとプロジェクト用に設定されていることを確認します。

Google Cloud のウェブサービスを探索する

次の例では、あなたは、Google Cloud でウェブアプリを迅速に構築しようとしているデベロッパー向けに、全組織的なゴールデン パスを決定することを Gemini を使用して支援してほしいと考えているアーキテクトだとします。あなたの目的は、Geminiアシスタンスを使用して、自由に利用できるオプション、その特性、相互運用性を理解することです。

Google Cloud コンソールでは、Gemini とチャットしてヘルプを受けることができます。[Gemini] ペインを使用してプロンプトを入力します。プロンプトは、必要なヘルプを説明する質問やステートメントです。Gemini によってレスポンスが返されます。

まず、ウェブサービスを実行するコンピューティング階層に関する意思決定を行うのを Gemini に支援するよう依頼します。手順は次のとおりです。

  1. Google Cloud コンソールのツールバーで、[Gemini を開く] をクリックします。

  2. [Gemini] ペインで、要件と設定に基づいて次のプロンプトを入力してから、[送信] をクリックします。

    I am designing a multi-tier web app in Google Cloud. First, I would
    like help on deciding what to use for the compute tier. What are my
    options for running an app to serve traffic over the public internet?
    I would like to prioritize fully-managed services.
    

    Gemini のレスポンスは次のようになります。

    Google Cloud で公共のインターネット経由でトラフィックを処理するアプリを実行する方法はいくつかあります。Cloud Run、App Engine、Compute Engine を使用できます。
    Cloud Run はフルマネージドのサーバーレス プラットフォームで、HTTP リクエストを使用して呼び出すことができるステートレス コンテナを実行できます。App Engine は、ウェブ アプリケーションを開発および実行するためのプログラミング環境を提供する、フルマネージド プラットフォームです。Compute Engine は、仮想マシンを作成および管理できる仮想マシン(VM)サービスです。
    最適なオプションを決定するには、次の要素を考慮する必要があります。
    アプリのサイズと複雑さ
    予想される受信トラフィック量
    アプリに必要な制御レベル
    費用
    少量のトラフィックを受信することが想定される小規模でシンプルなアプリがある場合は、Cloud Run が適しています。大量のトラフィックを受信することが想定される大規模で複雑なアプリがある場合は、App Engine または Compute Engine の方が適している可能性があります。アプリを細かく制御する必要がある場合は、Compute Engine が適しています。予算が限られている場合は、Cloud Run が適しています。

  3. 小規模なウェブアプリを組織内で実行するための最速のパスを設計していることを考慮すると、Gemini の Cloud Run の説明が要件に最も適しているように見えます。ただし、まずはプラットフォームの特性をいくつか確認する必要があります。 次のプロンプトを入力してから、[送信] をクリックします。

    Okay, I think I will move forward with Cloud Run. What metric does
    Cloud Run use to perform autoscaling?
    

    Gemini のレスポンスは次のようになります。

    Cloud Run は、受信リクエストまたはイベントの数を使用して自動スケーリングを実行します。リビジョンがトラフィックを受信しない場合、デフォルトでは、インスタンスの数がゼロにスケーリングされます。質問に対する詳しい情報は、以下をご覧ください。 インスタンスの自動スケーリング

  4. 受信リクエストに基づいて Cloud Run の自動スケーリングを行うため、あなたは、ホストされているアプリケーションにトラフィックを受け入れる仕組みを理解したいと思っています。次のプロンプトを入力します。

    How is a Cloud Run application exposed to users over the internet?
    

    Gemini のレスポンスは次のようになります。

    Cloud Run は、次のソースからの受信上り(内向き)トラフィックを受け入れます。
    公共のインターネット: リクエストは、公開ソースから Cloud Run サービスに直接ルーティングされます。外部 HTTP ロードバランサを介してトラフィックをルーティングするオプションがあります。
    Google API とサービス: Google API とサービスからのリクエストは、外部 HTTP(S) ロードバランサを必要とせずに Cloud Run サービスに転送されます。
    VPC ネットワーク: VPC ネットワークからのリクエストは、VPC コネクタ経由で Cloud Run サービスに転送されます。
    上り(内向き)の設定を使用して、Cloud Run サービスのユーザーへの公開方法を制御できます。

  5. このクラスのアプリケーションには、外部のパブリック ロードバランサで問題ありませんが、あなたは、プラットフォームが、適切な権限のある認証済みユーザーのみに対してこのアプリケーションを公開できるかどうかを理解するのに、Gemini に支援してほしいと思っています。次のプロンプトを入力します。

    Is there an easy mechanism in Cloud Run that allows only
    authenticated users to access an application?
    

    Gemini のレスポンスは次のようになります。

    はい。認証されたユーザーのみが Cloud Run アプリケーションにアクセスできるようにするためのメカニズムがあります。これを行うには、サービスをデプロイするときに no-allow-unauthenticated オプションを指定します。これにより、サービスは未認証のリクエストを HTTP 403 Forbidden エラーで拒否するようになります。質問に対する詳しい情報は、以下をご覧ください。 公開(未認証)アクセスを許可する

  6. 最後に、組織内のデベロッパー向けにこれを設定するために、Dockerfile などインフラストラクチャに関連する構成をデベロッパーが書き込まないような設定を行います。

    We have standardized on using Django as a web framework. Can I deploy
    a Python app to Cloud Run directly from source code? Or do we need to
    implement a way to containerize this ourselves?
    

    Gemini のレスポンスは次のようになります。

    はい。Python アプリをソースコードから直接 Cloud Run にデプロイできます。Cloud Run Python ビルドパックを使用して、Python アプリをビルド、デプロイできます。質問に対する詳しい情報は、以下をご覧ください。 ソースコードからデプロイする

Google Cloud のキャッシュを探索する

次に、次の階層であるキャッシュ サービスの選択に進みます。チームのこのレイヤに対する一般的なニーズのために、この分野で Google Cloud が提供するプロダクトを理解するのを支援するよう Gemini に指示します。次の手順を行って、Gemini にアシスタンスを依頼します。

  1. Google Cloud コンソールのツールバーで、[Gemini を開く] をクリックします。

  2. 次のプロンプトを入力して [送信] をクリックします。

    Okay! Thank you. Now let's move on to the caching tier. How can I
    introduce a caching layer to my web app? I would like to prioritize
    fully-managed services.
    

    Gemini のレスポンスは次のようになります。

    ウェブアプリにキャッシュ レイヤを導入する方法はいくつかあります。1 つの選択肢は、Cloud Memorystore のようなフルマネージド サービスを使用することです。 Cloud Memorystore は、Redis 用のフルマネージド インメモリ データストア サービスです。高性能でスケーラブルかつ信頼性の高いキャッシュ ソリューションにより、ウェブアプリのパフォーマンスを改善できます。また、Cloud Memorystore を使用して、画像や JavaScript ファイルなどの静的コンテンツをキャッシュに保存することもできます。質問に対する詳しい情報は、以下をご覧ください。 Memorystore の概要: Redis 用のフルマネージド インメモリ データストア サービス

  3. Cloud Memorystore for Redis の使用を始める前に、Cloud Run と Cloud Memorystore 間の通信が非公開であることを確認します。次のプロンプトを入力します。

    If I were to use Cloud Memorystore, how do I ensure the communication
    between Cloud Run and Cloud Memorystore is private?
    

    Gemini のレスポンスは次のようになります。

    Cloud Run と Cloud Memorystore 間の通信が非公開になるようにするには、サーバーレス VPC アクセス コネクタを作成する必要があります。これにより、Cloud Run と Memorystore インスタンスが存在する VPC 間の接続が許可されます。質問に対する詳しい情報は、以下をご覧ください。 Django アプリケーションのキャッシュ保存先として Memorystore for Redis を使用する

Google Cloud のリレーショナル データベースを探索する

最後に、リレーショナル データベース ストアに合わせます。オプションをナビゲートするのを Gemini が支援するよう指示します。

  1. 次のプロンプトを入力します。

    And for the relational database tier, where do you recommend I
    persist data? Please keep in mind that I would like to continue to
    prioritize fully-managed services.
    

    Gemini から次のようなレスポンスが返されます。

    フルマネージド サービスにデータを保持する方法はいくつかあります。 1 つの選択肢は、Cloud SQL を使用することです。Cloud SQL は、Google Cloud 上で SQL Server、MySQL、PostgreSQL のワークロードを実行するためのシンプルで信頼性の高い安全なプラットフォームを提供する、フルマネージド リレーショナル データベース サービスです。これは、Database Migration Service を使用してサーバーレスの移行を迅速に開始できるように設計されています。Cloud SQL for SQL Server が、SQL Server データベースの信頼性、安全性、スケーラビリティを自動的に確保してくれるため、中断されることなくビジネスを継続できます。質問に対する詳しい情報は、以下をご覧ください。 Cloud SQL の概要

サンプル アーキテクチャをデプロイする

最後に、リレーショナル データベース ストアに合わせます。オプションをナビゲートするのを Gemini が支援するよう指示します。

Okay, we have landed on using Cloud Run, Cloud Memorystore, and Cloud
SQL together. Is there a solution I can use that is available from
Google that uses these three technologies for a web application?

Gemini から次のようなレスポンスが返されます。

了解しました。Cloud Run、Cloud Memorystore、Cloud SQL をウェブ アプリケーションと一緒に使用するソリューションを以下に示します。
ジャンプ スタート ソリューション: 3 層ウェブアプリ
このソリューションは、Cloud Run、Cloud Memorystore for Redis、Cloud SQL for PostgreSQL を使用する 3 層ウェブ アプリケーションです。アプリケーションは、Cloud Memorystore を使用してデータをキャッシュし、Cloud SQL を使用して永続データを保存します。

新しいアーキテクチャをテストするために、あなたは、指定されたウェブページの手順に沿ってサンプル ソリューションをデプロイしようと考えています。これにより、ゴールデン パスのアーキテクチャをテストして検査できます。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、このチュートリアルで作成した Google Cloud プロジェクトを削除します。また、リソースを個別に削除することもできます。

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

次のステップ