GAEのサービス
GAEには「サービス」という概念があって、アプリをデプロイする際にサービス名を指定することで、複数のアプリを1つのプロジェクトで同時に立ち上げることができます。
また、各サービスにドメインを割り当てることもできるので、複数のアプリにそれぞれ異なった複数のドメインを割り当てることも可能です。
app.yamlでサービスを設定する
最初に、アプリごと別のサービスとして立ち上げるためにはapp.yamlにサービス名を指定する必要があります。
app.yaml
service: SERVICE_NAME
runtime: nodejs10
# ...
これをデプロイすればGAEにサービスが立ち上がります。(コンソールのGAE⇨サービスで確認可能)
dispatch.yamlでルーティングルールを変更する
ここからようやく本題ですが、
dispatch.yamlを使ってドメインんとサービスを紐づけます。
dispatch.yaml
dispatch:
- url: "*www.example.com/*"
service: default # ターゲットとなるサービス名
- url: "*app.example.com/*"
service: backend # ターゲットとなるサービス名
この設定は1つのプロジェクト内で共通の設定とされるため、この場合だと、defaultかbackendどちらか1つのディレクトリからデプロイしておけば正しく動作します。
あとは、DNSでそれぞれのドメインをGAEサーバに向ければ完了です。
デメリット
GAEで複数のサービスを立ち上げるのはとても便利ですが、その分注意しなければならないデメリットもあります。
コストの最適化のためにも以下の点に注意して適宜Cloud Functionを利用するなり他の選択肢を取ることも考慮すべきです。
- サービスの分だけインスタンスが立ち上がる。
- 価格が高くなりがち