Firebase hosting + Cloud Run の機能を試していくよ!!
Firebase hosting + Cloud Run で Microservices のL7ロードバランシングができるみたいだったので試してみました!!
勢いでMicroserviceのサンプルAPIを作る
goa とかでやるとパッとできるよ(趣味)
本編
ツールインストール
$ npm install -g firebase-tools $ firebase login
Hosting
Cloud Run を使用した動的コンテンツの配信とマイクロサービスのホスティング | Firebase
以下を参考にリライトする Hosting 動作を構成する | Firebase
firebase.json
の”rewrites”
を以下のように記述するとロードバランシングできます。
最低限のファイル
{ "hosting": { "public": "", "rewrites": [ { "source": "/get-hello**", "run": { "serviceId": "goa-microservice-sample", "region": "us-central1" } } ] } }
$ firebase deploy # hosting のみ選択
以下のように /get-hello
へアクセスすると goa-microservice-sample
の /get-hello
パスが呼び出される。
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" "https://<FIREBASE_DOMAIN>/get-hello?name=hoge"
ちなみに httpstat
で計測してみると…
$ httpstat "https://<FIREBASE_DOMAIN>/get-hello?name=hoge" -H "Authorization: Bearer $(gcloud auth print-identity-token)" ... DNS Lookup TCP Connection TLS Handshake Server Processing Content Transfer [ 5ms | 5ms | 20ms | 6ms | 1ms ] | | | | | namelookup:5ms | | | | connect:10ms | | | pretransfer:30ms | | starttransfer:36ms | total:37ms
※ キャッシュにヒットした際のレスポンスのサンプルなのでパフォーマンスの参考にはしないでください。
キャッシュの動作は確認していないので以下のドキュメンとを読む。
キャッシュ動作の管理 | Firebase HTTP キャッシュ | Web Fundamentals | Google Developers
まとめ
Firebase Hosting + Cloud Run で動的なコンテンツをホスティングできることが確認できた。 Firebase Hosting を利用することで 自動的に CDN が用いられる。(デフォルトでは動的コンテンツには適用されていないとドキュメントには記載されていたが、キャッシュされていた…) キャッシュや認証の仕様を確認していないので引き続き調査していきたい。