複合テンプレートを設計する

再利用可能な小さなビルディング ブロックから複雑なアプリケーションを構築する場合は、複合テンプレートを作成します。たとえば、複数の接続されたアプリケーション テンプレートを含む複合テンプレートを作成できます。

複合テンプレートを作成して、App Lifecycle Manager でデプロイする SaaS サービスのデプロイ単位をモデル化してパッケージ化することもできます。詳細については、モデルとパッケージのデプロイ単位をご覧ください。

標準アプリケーション テンプレートと個々のコンポーネントを追加して接続することで、複合テンプレートを設計します。このモジュール式のアプローチは、次のことを実現するのに役立ちます。

  • 開発の加速: 小さな構成要素から複雑なアプリを組み立てます。各標準アプリケーション テンプレートは、複数の複合テンプレートで再利用できます。
  • 並行開発を有効にする: モジュール型チームが特定のビルディング ブロックに特化できるようにします。たとえば、データベース チームは、アプリケーション ロジック チームへの依存を最小限に抑えながら、データ ストレージと分析に対応できます。
  • 脆弱性の影響を軽減する: デベロッパーは、アプリケーション全体を再デプロイせずに、ビルディング ブロックを更新または修正できます。
  • セキュリティ ポスチャーを改善する: 各構成要素をデプロイする個別のサービス アカウントを作成して、アクセスを制限します。各チームが、構成するビルディング ブロックに対する権限のみを持つようにします。

このドキュメントでは、複合テンプレートを設計、検証、共有する方法について説明します。

始める前に

アプリ対応フォルダまたは管理プロジェクトに、次のいずれかのロールが必要です。

  • App Design Center 管理者(roles/designcenter.admin
  • App Design Center ユーザー(roles/designcenter.user

独自の標準アプリケーション テンプレートを構成要素として使用するには、入力変数と出力変数を設定して構成可能な変数を確立し、アプリケーション テンプレート間の接続を作成します。詳しくは以下をご覧ください。

複合アプリケーション テンプレートを作成する

複雑なアプリケーションを設計して共有する場合は、複合テンプレートを作成します。テンプレートのデザインでは、次のものを追加して接続できます。

テンプレートの詳細を指定する

テンプレートの詳細を指定すると、テンプレートを分類したり、デベロッパーがテンプレートを使用するかどうかを判断したりするのに役立ちます。

テンプレートの詳細を入力する手順は次のとおりです。

デザイン キャンバス

  1. ナビゲーション メニューで [テンプレート] をクリックします。

    [テンプレート] に移動

  2. [テンプレートの作成] リストから、[複合テンプレート] を選択します。

  3. [テンプレート ID] フィールドには、自動的に値が入力されます。または、テンプレートの一意の識別子を入力します。このフィールドは必須です。

  4. [テンプレート名] フィールドに、 Google Cloud コンソールに表示する人間が読める識別子を入力します。

    名前を指定しない場合、テンプレート ID がこのフィールドにコピーされます。

  5. [説明] フィールドに、アプリの目的の簡単な説明を入力します。

  6. [テンプレートを作成] をクリックします。デザイン キャンバスが表示されます。

gcloud CLI

新しい複合アプリケーション テンプレートを作成します。

gcloud design-center spaces application-templates create APPLICATION_TEMPLATE \
--project=PROJECT \
--location=LOCATION \
--space=SPACE \
--display-name=DISPLAY_NAME \
--description=DESCRIPTION \
--composition-type=COMPOSITE

次のように置き換えます。

  • APPLICATION_TEMPLATE: 作成するアプリケーション テンプレートのテンプレート ID。
  • PROJECT: 管理プロジェクト ID。
  • LOCATION: アプリケーション テンプレートのリージョン。
  • SPACE: スペース ID。
  • DISPLAY_NAME: Google Cloud コンソールに表示する名前。
  • DESCRIPTION: 簡単な説明。

詳細については、gcloud design-center spaces application-templates create をご覧ください。

テンプレートを設計する

次の開始点に標準のアプリケーション テンプレートとコンポーネントを追加して接続し、複合テンプレートを設計します。

テンプレートを設計すると、App Design Center は設計と構成の詳細を反映する Terraform コードを生成します。

テンプレートを設計する手順は次のとおりです。

デザイン キャンバス

  1. デザイン キャンバスで [デザイン] を選択して、キャンバスを表示します。

  2. 始めるには、次のいずれかの操作を行います。

    • Google 提供のテンプレートから開始するには、キャンバスの [スタートガイド] 領域でテンプレート名をクリックします。

    • 空白のキャンバスから始めるには、次の手順に進みます。

  3. 標準アプリ テンプレートをキャンバスに追加する手順は次のとおりです。

    1. [コンポーネント] 領域で、[テンプレートを埋め込む] をクリックします。

    2. 既存のテンプレートを追加するには、次のいずれかのリストでテンプレートをクリックします。

      • テンプレート: スペースのカタログにあるか、スペースと共有されている標準のアプリケーション テンプレート。
      • Google テンプレート: Google が作成し、Google カタログに追加した標準のアプリケーション テンプレート。
    3. 選択したテンプレートをキャンバスに追加するには、[選択] をクリックします。

  4. 新しい標準アプリケーション テンプレートを作成するには、[新しいテンプレートを作成] をクリックします。[新しいテンプレートを作成] ページが開きます。

    詳細については、標準アプリケーション テンプレートを設計するをご覧ください。

  5. コンポーネントをキャンバスに追加するには、[コンポーネント] 領域でコンポーネントをクリックします。

  6. テンプレートとコンポーネントの間に通信チャネルを作成するには、次のいずれかを行います。

    • 1 つの構成要素の青い点から別の構成要素の青い点までドラッグします。

    • 接続されたコンポーネントを既存のコンポーネントに追加するには、 [追加] をクリックして、追加するコンポーネントを選択します。

    接続の詳細については、各サポートされているリソースの構成ドキュメントをご覧ください。

  7. 構成要素または接続を削除する手順は次のとおりです。

    1. キャンバスで、構成要素または接続をクリックします。

    2. [構成] 領域で、[削除] をクリックします。

    3. フィールドに「delete」と入力します。

    4. [削除] をクリックします。

gcloud CLI

  1. スペースのカタログにある構成要素のテンプレート リビジョン URI を特定します。

    gcloud design-center spaces shared-templates list \
    --project=PROJECT \
    --location=LOCATION \
    --space=SPACE
    

    次のように置き換えます。

    • PROJECT: 管理プロジェクト ID。
    • LOCATION: アプリケーション テンプレートのリージョン。
    • SPACE: スペース ID。

    詳細については、gcloud design-center spaces shared-templates list をご覧ください。

  2. テンプレートに追加する Google カタログの構成要素のテンプレート リビジョン URI を特定します。

    gcloud design-center spaces shared-templates list \
    --google-catalog \
    --location=us-central1
    

    詳細については、gcloud design-center spaces shared-templates list をご覧ください。

  3. 複合テンプレートに標準のアプリケーション テンプレートまたはコンポーネントを追加します。

    gcloud design-center spaces application-templates components create COMPONENT \
    --project=PROJECT \
    --location=LOCATION \
    --space=SPACE \
    --application-template=APPLICATION_TEMPLATE \
    --shared-template-revision-uri=SHARED_TEMPLATE_URI
    

    次のように置き換えます。

    • COMPONENT: テンプレートに追加する標準のアプリケーション テンプレートまたはコンポーネントの ID。
    • PROJECT: 管理プロジェクト ID。
    • LOCATION: アプリケーション テンプレートのリージョン。
    • SPACE: スペース ID。
    • APPLICATION_TEMPLATE: 標準アプリケーション テンプレートまたはコンポーネントを追加する複合アプリケーション テンプレートのテンプレート ID。
    • SHARED_TEMPLATE_URI: 標準アプリケーション テンプレートまたはコンポーネント共有済みテンプレートの URI。例: projects/my-project/locations/us-central1/spaces/my-space/sharedTemplates/my-shared-template/revisions/rev1

    詳細については、gcloud design-center spaces application-templates components create をご覧ください。

  4. テンプレートに 2 つ目の標準アプリケーション テンプレートまたはコンポーネントを追加します。

    gcloud design-center spaces application-templates components create COMPONENT_2 \
    --project=PROJECT \
    --location=LOCATION \
    --space=SPACE \
    --application-template=APPLICATION_TEMPLATE \
    --shared-template-revision-uri=SHARED_TEMPLATE_URI_2
    

    次のように置き換えます。

    • COMPONENT_2: テンプレートに追加する 2 番目の標準アプリケーション テンプレートまたはコンポーネントの ID。
    • PROJECT: 管理プロジェクト ID。
    • LOCATION: アプリケーション テンプレートのリージョン。
    • SPACE: スペース ID。
    • APPLICATION_TEMPLATE: 標準アプリケーション テンプレートまたはコンポーネントを追加する複合テンプレートのテンプレート ID。
    • SHARED_TEMPLATE_URI_2: 2 番目の標準アプリケーション テンプレートまたはコンポーネント共有テンプレートの URI。例: projects/my-project/locations/us-central1/spaces/my-space/sharedTemplates/my-shared-template/revisions/rev1

    詳細については、gcloud design-center spaces application-templates components create をご覧ください。

  5. 標準のアプリケーション テンプレートまたはコンポーネント間の接続を作成します。

    gcloud design-center spaces application-templates components connections create CONNECTION \
    --project=PROJECT \
    --location=LOCATION \
    --space=SPACE \
    --application-template=APPLICATION_TEMPLATE \
    --component=COMPONENT \
    --destination-component-uri=COMPONENT_2
    

    次のように置き換えます。

    • CONNECTION: テンプレートに追加する接続の接続 ID。
    • PROJECT: 管理プロジェクト ID。
    • LOCATION: アプリケーション テンプレートのリージョン。
    • SPACE: スペース ID。
    • APPLICATION_TEMPLATE: 接続を追加するアプリケーション テンプレートのテンプレート ID。
    • COMPONENT: ソースの標準アプリケーション テンプレートまたはコンポーネント ID。
    • COMPONENT_2: 宛先の標準アプリケーション テンプレートまたはコンポーネント ID。

    詳細については、gcloud design-center spaces application-templates components connections create をご覧ください。

コンポーネントのデフォルト値を構成する

テンプレートに追加するコンポーネントごとに、リソースのプロジェクトやデプロイ場所などのデフォルトの構成の詳細を指定できます。App Design Center は、このテンプレートからアプリケーションが作成されるときに、これらのデフォルトを適用します。

アプリケーション デベロッパーは、デフォルト構成が要件を満たしていない場合に、接続の詳細を変更することもできます。たとえば、アプリケーションの作成時に、環境変数キー名を変更したり、接続ポートを変更したり、サービス アカウントに追加のロールを追加したりできます。

デベロッパーは、アプリケーションをデプロイする前に、テンプレートで構成したデフォルト値を表示して変更できます。デベロッパーは、サポートされているリソースごとに必要な詳細情報を構成する必要があります。

コンポーネントと接続を構成する手順は次のとおりです。

デザイン キャンバス

  1. デザイン キャンバスで、コンポーネントをクリックします。

  2. [構成] 領域の [プロジェクト ID] リストで、リソースをデプロイするプロジェクトを選択します。次の条件を満たすプロジェクトを選択します。

  3. リソースの追加設定を構成します。たとえば、Cloud SQL の場合は次のように構成できます。

    • 地域
    • バックアップ構成
    • データベース フラグ
    • IP 構成

    各コンポーネントの構成ドキュメントへのリンクについては、サポートされているリソースをご覧ください。

  4. デザイン キャンバスでコンポーネントを接続すると、デフォルトの構成値を使用して接続が作成されます。接続の詳細を追加または変更する手順は次のとおりです。

    1. デザイン キャンバスで、2 つのコンポーネント間の接続をクリックします。[接続] パネルが開き、接続パラメータが表示されます。

    2. 次のいずれかを行います。

      • 既存の接続パラメータを変更するには、[編集] をクリックします。

      • 新しい接続パラメータを追加するには、[パラメータを追加] をクリックします。

    3. [キー] フィールドと [] フィールドを更新します。たとえば、次の詳細を変更できます。

      • アプリケーションの要件に沿った環境変数キー名。
      • 接続ポートの値。
      • サービス アカウントに追加されたロール。
  5. [保存] をクリックします。

gcloud CLI

  1. アプリケーション テンプレートの各コンポーネントの説明を表示して、コンポーネント パラメータを表示します。

    gcloud design-center spaces application-templates components describe COMPONENT \
    --project=PROJECT \
    --location=LOCATION \
    --space=SPACE \
    --application-template=APPLICATION_TEMPLATE
    

    次のように置き換えます。

    • COMPONENT: 説明を取得するコンポーネントのコンポーネント ID。
    • PROJECT: 管理プロジェクト ID。
    • LOCATION: アプリケーション テンプレートのリージョン。
    • SPACE: スペース ID。
    • APPLICATION_TEMPLATE: アプリケーション テンプレートのテンプレート ID。

    詳細については、gcloud design-center spaces application-templates components describe をご覧ください。

  2. 変更するコンポーネントごとに、パラメータ値を含む JSON ファイルをホーム ディレクトリに作成します。

    たとえば、Cloud Run コンポーネント用に次のファイルを作成できます。

      [
          {
            "key": "service_name",
            "value": "frontend-service"
          },
          {
            "key": "project_id",
            "value": "DEPLOYMENT_PROJECT"
          }
      ]
    
  3. アプリケーション テンプレートの各コンポーネントを更新して、必要なパラメータを構成します。

    gcloud design-center spaces application-templates components update COMPONENT \
    --project=PROJECT \
    --location=LOCATION \
    --space=SPACE \
    --parameters=PARAMETERS_FILE_PATH \
    --application-template=APPLICATION_TEMPLATE
    

    次のように置き換えます。

    • COMPONENT: 更新するコンポーネントのコンポーネント ID。
    • PROJECT: 管理プロジェクト ID。
    • LOCATION: アプリケーション テンプレートのリージョン。
    • SPACE: スペース ID。
    • PARAMETERS_FILE_PATH: コンポーネント パラメータを含む JSON ファイル。
    • APPLICATION_TEMPLATE: アプリケーション テンプレートのテンプレート ID。

    詳細については、gcloud design-center spaces application-templates components update をご覧ください。

  4. コンポーネントの接続を説明します。

    gcloud design-center spaces application-templates components connections describe CONNECTION \
    --component=COMPONENT \
    --application-template=APPLICATION_TEMPLATE \
    --project=PROJECT \
    --location=LOCATION \
    --space=SPACE
    

    次のように置き換えます。

    • CONNECTION: 接続 ID。
    • COMPONENT: コンポーネント ID。
    • APPLICATION_TEMPLATE: テンプレート ID。
    • PROJECT: 管理プロジェクト ID。
    • LOCATION: アプリケーション テンプレートのリージョン。
    • SPACE: スペース ID。

    詳細については、gcloud design-center spaces application-templates components connections describe をご覧ください。

  5. コンポーネント接続パラメータを編集します。

    gcloud design-center spaces application-templates components connections update CONNECTION \
    --component=COMPONENT \
    --application-template=APPLICATION_TEMPLATE \
    --project=PROJECT \
    --location=LOCATION \
    --space=SPACE \
    --source-component-parameters='[{"key": SOURCE_KEY, "value": SOURCE_VALUE}]'
    

    次のように置き換えます。

    • CONNECTION: 接続 ID。
    • COMPONENT: コンポーネント ID。
    • APPLICATION_TEMPLATE: テンプレート ID。
    • PROJECT: 管理プロジェクト ID。
    • LOCATION: アプリケーション テンプレートのリージョン。
    • SPACE: スペース ID。
    • SOURCE_KEY: 新しいパラメータ キー。
    • SOURCE_VALUE: 新しいパラメータ値。

    詳細については、gcloud design-center spaces application-templates components connections update をご覧ください。

標準アプリケーション テンプレートを構成する

デベロッパーが複合テンプレートをアプリケーションとしてデプロイすると、次のそれぞれに対してアプリケーションが作成されます。

  • 標準アプリケーション テンプレートの各グループ。
  • コンポーネントの各グループ。

各グループにデフォルト値を指定できます。たとえば、デプロイ プロジェクト、リージョン、オーナーを含めることができます。デベロッパーは、App Design Center でアプリケーションをデプロイするときに、デフォルト値を使用するか、アプリケーションごとに独自の詳細を指定できます。

グループごとにデフォルトのアプリケーションの詳細を指定するには、次の操作を行います。

デザイン キャンバス

  1. デザイン キャンバスで、標準アプリケーション テンプレートをクリックします。

    [埋め込みテンプレート] パネルが開きます。

  2. [構成] 領域に、アプリケーションの詳細を入力します。

    詳細については、アプリケーションのドラフトを作成するをご覧ください。

gcloud CLI

詳細については、テンプレートを設計するをご覧ください。

テンプレートを確認する

複合テンプレートをデベロッパーと共有する前に、App Design Center でテンプレートをデプロイして検証します。この手順では、複数のマシンでのスケールアウト デプロイの前に機能を確認できます。

テンプレートを確認する手順は次のとおりです。

  1. デザイン キャンバスで、[続行] をクリックし、[デプロイするアプリケーションを作成] を選択します。

    [アプリケーションの作成] パネルが開きます。

  2. [複合アプリケーションの詳細] 領域に、アプリケーションの詳細を入力します。

    詳細については、アプリケーションのドラフトを作成するをご覧ください。

  3. [次へ] をクリックします。

  4. 複合テンプレートに追加した構成要素ごとに、デプロイ時にアプリケーションが作成されます。各アプリケーションを構成し、[次へ] をクリックします。

    詳細については、アプリケーションのドラフトを作成するをご覧ください。

  5. デプロイしたアプリケーションをテストして、要件を満たしていることを確認します。

  6. 繰り返し費用が発生しないようにするには、テスト デプロイを削除します。

スケーリングされたデプロイを作成する

複合テンプレートの複数のインスタンスをデプロイして管理するには、App Lifecycle Manager を使用します。

  1. App Design Center でテンプレートを確認します。

  2. デザイン キャンバスで、[続行] をクリックし、[App Lifecycle Manager を使用して大規模にデプロイ] を選択します。

    [App Lifecycle Manager ユニット] ページが開きます。

  3. デプロイの手順については、SaaS サービスをデプロイするをご覧ください。

テンプレートを共有する

テンプレートをデベロッパーが利用できるようにするには、テンプレートをカタログに追加して共有します。テンプレートをカタログに追加すると、そのテンプレートはカタログが共有されているスペースでアプリケーション ソースとして使用できるようになります。

テンプレートを共有する手順は次のとおりです。

  1. デザイン キャンバスで、[カタログに追加] をクリックします。

  2. カタログが共有されているスペースを管理するには、カタログを管理するをご覧ください。

テンプレートを修正して再共有する

アプリケーションの経験を積み、ビジネスニーズが変化するにつれて、テンプレートの更新が必要になることがあります。たとえば、キャッシュ保存用の Memorystore サービスを追加して、バックエンド サービスのパフォーマンスを向上させる場合があります。

テンプレートを変更すると、テンプレート リビジョンが作成されます。既存のアプリケーションに変更を適用するには、デベロッパーがリビジョンを使用してアプリケーションをデプロイする必要があります。

App Design Center では、テンプレート リビジョンがカタログに自動的に公開されることはありません。最新のリビジョンを共有するには、テンプレートをカタログに再度公開します。

新しいリビジョンを作成する手順は次のとおりです。

  1. ナビゲーション メニューで [テンプレート] をクリックします。

    [テンプレート] に移動

  2. 修正するアプリケーション テンプレートを選択します。キャンバスが開きます。

  3. 新しい要件に合わせてテンプレートを変更します。たとえば、新しいコンポーネントを追加して構成します。

  4. 最新のリビジョンを他のスペースと共有するには、テンプレートをカタログに再度追加します。

テンプレートを削除する

不要になったテンプレートは削除できます。

デザイン キャンバス

  1. デザイン キャンバスで、 [アクション] をクリックします。
  2. [削除] をクリックします。

gcloud CLI

アプリケーション テンプレートを削除します。

```sh
gcloud design-center spaces application-templates delete APPLICATION_TEMPLATE \
--project=PROJECT \
--location=LOCATION \
--space=SPACE
```

次のように置き換えます。

  • APPLICATION_TEMPLATE: 削除するアプリケーション テンプレートのテンプレート ID。
  • PROJECT: 管理プロジェクト ID。
  • LOCATION: アプリケーション テンプレートのリージョン。
  • SPACE: スペース ID。

詳細については、gcloud design-center spaces application-templates delete をご覧ください。

次のステップ