Firebase と Cloud Runでアプリケーション開発 #GoogleCloudNext
概要
「Building fast, scalable, and reliable apps with Firebase and Cloud Run」というタイトルのセッションに参加してきました。 アジェンダは以下の通りです。
45分間ぶっ続けで話を聞くため、要所を絞って印象に残った話を紹介し、なるべくFirebaseとCloud Runがわからない方向けに解説できたらなと思います。
また冒頭はCloud Runの機能をうまくまとめられていたため、試験や実務の取り入れなどの参考にできるよう、セッションの内容になぞらえて解説してみようかと思います。
Cloud Run
Cloud Runはコンテナをデプロイするだけで、その他のインフラ作業を行わなくてもアプリケーションがすぐに作成できてしまうサーバレス運用可能なインフラサービスになります。
実際のスライド写真を拝借して解説していきましょう。
3つの特徴
Sinple and Autmated
つまり言い換えると、必要最低限の労力(=Sinple and Autmated)でアプリケーションをデプロイすることができるのが最大の特徴です。
Cloud Runは、開発者が持っているコンテナを読み取り、自動的にデプロイしてアプリケーションを提供する形に整えてくれます。
URLもサービスごとに発行されるため、自身でDNS周りの設定をしなくても即時にサービスとしてお客様に提供できます。
No infra management
少し上と被りますが、コンテナをCloud Runに載せるだけで、Googleが残りのインフラで設定しなくてはならない部分を代行してくれます。
スケール設定も自動化できるため、まさにクラウドの良い機能を具現化したようなサービスです。
Developer velocity
Cloud Runはあらゆる開発者(Developer)へ、開発のスピード力を提供してくれます。
すこし言い回しが直接過ぎますが、エンジニアはコンテナを作成すれば、あとは自動化されたデプロイメントとマネージドインフラへ放り込むだけです。
トイルを取り除き、開発者がコードに集中できることにより、コードを書くスピードが高速化し、一方でインフラ管理に関する心配は消えるので、心理的な面でも開発者ライクなサービスと言えると思います。
2つの機能
Service
Serviceを簡単に説明すると、「HTTPリクエスト → レスポンス」のやり取りの際にコンテナインスタンスをグループ化し、1つのアプリケーションを管理する概念だと思っていただいて良いかと思います。(サービスごとにURLが発行されます)
例えば、webアプリケーションをホストしたり、APIエンドポイントとして動作する際にコンテナをまとめて管理するようなイメージです。
また、リビジョンという、いわゆるアプリのそれぞれのバージョンのようなものが内部では管理されているため、必要に応じてトラフィックを分割して、カナリアリリースなども可能にします。(新しいリビジョンをデプロイするたびに、古いリビジョンを保持することが可能で、状況によっては元のリビジョンにロールバックすることも可能になる)
またこのServiceがHTTPsなどのリクエストをトリガーにして、自動的にスケーリングしてくれます。
Jobs
一度きりのまたは非同期のタスクを実行するためのリソースとして活躍し、バッチのような処理をCloud Runで行いたい時に活用するのがJabsという機能です。
Jobsは成功または失敗するまで実行されるか、または設定したタイムアウトまで実行されます。ジョブ完了後、Cloud Runはデータ引き取りやエラー確認のための一時的なログを保持します。
Cloud Runの新機能
セッションの内容を日本語訳にして一部抜粋します。
Cloud Runインスタンスで複数のコンテナを実行する機能 (サイドカーとも呼ばれます) を数週間前に公開レビューを行いました。これは本当にエキサイティングです。ジョブと CPU もカバーする GA も行います。セキュリティ面では、Identity Aware Proxy の GA サポートが追加されました。また、ネットワークに関しては、さまざまな Google ロード バランサー テストや、実際にはスライドに登場しなかった非常にエキサイティングな機能など、多数の拡張サポートが用意されています。しかし、クラウド実行サービスからアウトバウンドの直接 VPC 接続のプレビューが開始されたため、プレビュー中のコネクタ機能をスピンアップする必要がなくなりました。
今まではサイドカーコンテナがデプロイできるかで、GKEとCloud Runを分ける理由になったりもしているようでしたし、Auth Aware Proxyも導入されたことにより、Cloud Runを選択する可能性が一気に広がりました。
英語を訳したものなのでわかりにくいですが、この言葉からも伝わってくることはCloud Runは次々と新機能がGAされる期待のあるサービスということではないでしょうか。(Google Cloudさん一押しのサービス!!)
Firebase
Firebaseについては、自分自身あまり知識がないのでセッションの言葉ベースで書いていきます。
(なるべくわかりやすいように工夫していますが、翻訳しているため言い回しが固い箇所やわかりにくいところがあるかもしれません)
概要
まずは、FirebaseとGoogle Cloudの関連性と、その中にある各機能との結びつきについて解説していきます。
前提として、Google Cloudの中でもFirestoreというサービスを管理できますが、またそれとは別にFirebaseというプラットフォームが単体で存在しております。(Googleが買収した過去があるため)
FirebaseとGoogle Cloudの連携
FirebaseとGoogle Cloudは、切り離せない2つの異なる製品です。
Firebaseは開発者向けのツールセットであり、Google Cloudは広範なテクノロジーを実行するためのプラットフォームです。Firebaseはユーザーが必要とする多くのことを実行するためのGoogle Cloudのサブセットとしての役割も併せ持っています。
Firebaseに存在する複数の製品
Firebaseの中には、3つの主要な領域にまたがるさまざまな製品が存在します。
下記にそれぞれの製品の特徴をまとめます。
- 構築
- Firebaseの構築領域には、データベースサービスであるCloud Firestoreなど、Google Cloudの製品を開発者向けに使いやすく提供している機能が含まれています。
- 品質
- Firebaseではクラッシュレポートを提供するCrashlyticsやテスト環境を提供するTest Labなど、品質向上を図るための製品が含まれています。
- 成長
- メッセージング、リモート設定など、Firebase上でのアプリケーションの成長をサポートする機能があります。
- Firebaseの意義と対象
- Firebaseは開発者がモバイルやウェブアプリケーションを簡単に作成できるようにするプラットフォームです。その使命は、ウェブ、モバイル、ゲームという3つの開発者の柱に重点を置いて、開発の簡易性を追求することです。
- Firebaseの適応注意点
-
- Firebaseは各製品が個別のサービス利用規約を持つ可能性があるため、詳細な調査と理解が必要です。実際にFirebaseを利用する際は、利用規約を確認し、それが自分のプロジェクトや組織のポリシーに適合したものであることを確認することが重要です。
Firebase Hosting
ここからはFirebase HostingというWebアプリを簡単にデプロイできるサービスについて解説していきます。
と言いつつも、概要は公式の説明がわかりやすかったので引用します。
本番環境レベルのウェブ コンテンツ ホスティングです。1 つのコマンドですばやくウェブアプリをデプロイすることができ、静的コンテンツと動的コンテンツの両方をグローバル CDN(コンテンツ配信ネットワーク)に配信できます。
魅力
こちらも先ほど解説したCloud Runと同様に、開発者が大きな労力を注ぐことなく、全世界にアプリを展開できる手段を提供するプラットフォームというのが最も魅力的な価値になります。
利便性
開発、デプロイ、展開などアプリケーションリリースに関わるすべてが一部のCLIコマンドさえ使えれば実現可能になります。
Firebase Hostingは開発者が簡単にグローバル展開することができるだけでなく、HTTPSの提供も容易に行うことができるのも魅力的な機能です。
Firebase HostingとグローバルCDN
Firebase HostingはグローバルCDNを活用することで、静的サイトを世界中に展開してくれます。
また、HTTPSとその証明書を開発者が自分で管理することなく提供してくれるため、インフラ設定のオーバーヘッドも軽減してくれるため、ここでもサーバレスのメリットの恩恵を受けることができます。(表現の仕方によりCloud Runと被るメリットは多々あります)
Firebase HostingとAPI
静的Webサイトに関して、Firebase HostingはAPIとの統合を容易にする仕組みがあり、例えば、Firebase HostingからCloud FunctionsやFirestoreなどのGCPのサービスを利用することができ、更に併用して高度な機能を組み込むことも可能になります。
バックエンド選択について
開発者は、バックエンドの選択にてCloud Functionsなどのさまざまなオプションから選択することが可能です。
(ただしそれぞれの選択肢にはメリットとデメリットがあります→今回は割愛)
今回の重要な点は、どちらの選択肢でも静的コンテンツとAPIパスを組み合わせることが容易であるという仕組みになります。
まとめ
今回は少しCloud RunとFirebase関連の機能の紹介のような感じになりましたが、実際のセッションではハンズオンのデモを通してより理解できるように工夫されていました。(下記に画像を添付してます)
やはり現地参加をすると、生の声でその製品の活用方法やメリットを聞けるのでより理解が進みます。
(英語なので編集に時間がかかるという意味でも理解が深まります、、笑)