💭

フロントエンドエンジニアにもおすすめな Google Cloud サービス 3 選

2024/06/28に公開

こんにちは、クラウドエース株式会社、フロントエンドエンジニアのサンギです。

フロントエンドエンジニアが Web アプリケーションをデプロイするときにおすすめな Google Cloud サービスを 3 つ紹介します。
Cloud Run、App Engine、Firebase Hosting に的を絞って、それぞれの使い方を紹介します。

1. Cloud Run

Cloud Run は、コンテナ化されたステートレスなアプリケーションを実行できるサーバーレスプラットフォームです。

デプロイ方法

Google Cloud の設定

Google Cloud コンソールから Cloud Run のサービスを開き、「サービスを作成」をクリックします。

コンテナイメージ

alt

Cloud Run はコンテナベースのサービスを提供します。
Docker イメージを用意していないので、サンプルとして提供されているイメージを使って試します。

リージョン

任意のリージョンを選択してください。
今回は一番近いリージョンとして asia-northeast1(東京)を選択します。

その他

その他の設定はデフォルトのままにしておきます。
必要に応じて任意の値に変更してください。

デプロイの確認

「作成」をクリック後ステータスをチェックし、完了したら提供される URL にアクセスして、
ページがきちんと表示されればデプロイ成功です。

alt

Artifact Registry を使用した Docker イメージの管理

Artifact Registry を活用して Docker イメージを効果的に管理する方法を紹介します。
Google Cloud のサービスとして、イメージ管理、権限管理、価格の面で大きな利点があります。

リポジトリの作成

Google Cloud コンソールから Artifact Registry のサービスを開き、「リポジトリの作成」をクリックします。
任意の名前を入力、リージョンも任意のリージョンを選択し、残りはデフォルトを指定します。
「作成」をクリックしてリポジトリを作成します。

alt

docker build, push

リポジトリにイメージをプッシュするときは、特定の形式に従う必要があります。
[LOCATION]-docker.pkg.dev/[PROJECT-ID]/[REPOSITORY]/[IMAGE] 形式で push します。

リポジトリの詳細画面でパンくずリストの隣にあるコピーボタンを押すと、簡単に上記の形式をコピーすることができます。

alt

push したイメージから Cloud Run のデプロイ

サンプルイメージではなく、実際のプロジェクトに push したイメージからデプロイします。

Cloud Run のデプロイ

gcloud run deploy my-project --image [LOCATION]-docker.pkg.dev/[PROJECT-ID]/[REPOSITORY]/[IMAGE]:latest --region=[リージョン]

成功した場合、メッセージに URL が表示されるので、ブラウザで確認できれば成功です。

その他参考資料

2. App Engine

App Engine は、ステートレスなアプリケーションを実行できるサーバーレスプラットフォームです。

デプロイ方法

Google Cloud コンソールから App Engine のサービスを開き、「アプリケーションを作成」をクリックします。

alt

リージョンの選択

alt

任意のリージョンを選択して、「次へ」をクリックします。

app.yaml 構成ファイルを作成

Google Cloud SDK によるデプロイの案内が表示されるので、
指示に従ってコマンドを実行します。

gcloud init

実行後、任意の Web アプリと app.yaml ファイルを用意します。
ドキュメントを参考に、状況に合わせて変更していただければと思います。

app.yaml
runtime: nodejs22

instance_class: F2

env_variables:
  BUCKET_NAME: "example-gcs-bucket"

handlers:
- url: /stylesheets
  static_dir: stylesheets

- url: /.*
  secure: always
  redirect_http_response_code: 301
  script: auto

App Engine にデプロイ

web アプリの build 作業が終わったら、以下のコマンドでデプロイします。

gcloud app deploy

その後アプリケーション確認はこちらのコマンドで可能です。

gcloud app browse

参考資料

3. Firebase Hosting

Firebase Hosting は、ウェブアプリケーションの高速ホスティングに特化したサーバーレスプラットフォームです。

デプロイ方法

alt

Firebase が提供するホスティングを使用してアプリケーションをデプロイしましょう。

Firebase コンソールから Build > Hosting を選択します。

alt

「Firebase Tools」を自身の PC にインストールします。

以下の npm コマンドをコピーして実行します。

npm i -g firebase-tools

その後、Firebase にログインします。

firebase login

ログインしたら Firebase の初期設定を行うコマンドを実行します。

firebase init

実行すると以下のような表示が出るので、Hosting を選択します。

Which Firebase CLI features do you want to set up for this folder? Press Space to select features, then Enter to confirm your choices. (Press <space> to select, <a> to toggle all, <i> to invert selection) 
◯ Database: Deploy Firebase Realtime Database Rules 
◯ Firestore: Deploy rules and create indexes for Firestore 
◯ Functions: Configure and deploy Cloud Functions 
◯ Hosting: Configure and deploy Firebase Hosting sites 

次にホスティングを使用する Firebase プロジェクトを選択します。
プロジェクト自体は Firebase コンソールで作成済みなので Use an existing project を選択します。

? Please select an option: 
❯ Use an existing project 
  Create a new project 
  Add Firebase to an existing Google Cloud Platform project 
  Don't set up a default project

Firebase のコンソールで作成したプロジェクトが候補として表示されますので選択して次へ進みます。

アプリケーションのデプロイ

用意したコンテンツをデプロイしたい場合はローカルのプロジェクトディレクトリで以下コマンドを実行します。

firebase deploy

参考

おすすめのデプロイ先は?

クラウド初心者のフロントエンドエンジニアにおすすめなのは Firebase Hosting です。

  • ウェブに特化しているのでデプロイが簡単
  • CDN による高速化や SSL 化も可能
  • Nuxt、Remix、React などの SPA のデプロイにも向いている
  • 無料枠も広く、小規模から中規模のプロジェクトに最適

ただし、細かなサーバーの制御が必要になってきたら、Cloud Run や App Engine の出番です。

Cloud Run は、コンテナ化されたアプリを動かすのに最適です。

  • 言語に依存せず、柔軟なデプロイが可能
  • リクエスト数に応じた自動スケーリングでコスト最適化

App Engine は、言語ごとの標準ランタイムが使えます。

  • 言語に特化したサービスを簡単にデプロイ可能
  • Cron ジョブなどの機能も利用可能

アプリの要件に合わせて、適切なサービスを選択することをおすすめします。

  • シンプルな静的サイトなら Firebase Hosting
  • コンテナ化したアプリケーションなら Cloud Run
  • コンテナ不要で特定の言語のアプリケーションをデプロイするなら App Engine

といった具合に、アプリケーションのアーキテクチャや規模、要件に応じて最適なサービスを選ぶことが重要です。

クラウドサービスを活用することで、開発者はインフラ管理の手間から解放され、アプリケーション開発に集中できます。
ぜひ色々なサービスに触れて、自分に合ったサービスを見つけていってください!

Discussion