コンテンツへスキップ

【GCP】App Engineを絶対に無料枠で使いたい人のための設定と注意点

  • 未分類

GCPのサービスの一つであるApp Engineは、WEBサイトやアプリケーションを公開できるクラウドサーバです。

レンタルサーバでは利用できないNode.jsを利用できたり、アクセス規模に合わせたオートスケーリングの機能が備わっていたりと、モダンWEB開発の環境としては非常に扱いやすいものとなっています。

さらにApp Engineには無料枠が設けられており、アクセスが集まるまではサーバに費用を掛けずに運用することも可能になるのも魅力的です。

ただ、App Engineに限らずクラウドサーバは設定を誤ると、想定外の費用請求を受けることとなります。

今回は、App Engineを絶対に無料枠で使いたいという方のために、気を付けるべき設定について説明していきたいと思います。

App Engineの無料枠について

App Engineには大きく分けてStandardとFlexibleのインスタンスを立てることができます。

ざっくりとそれぞれの違いを説明すると以下のようになります。

  • Standard:サーバの独自カスタマイズの制限がある
  • Flexible:比較的自由にサーバのカスタマイズができる

上記の図で示した通り、無料枠を利用できるのはStandardのみになります。
なので、とりあえず最初はApp Engineを無料で使いたいという方はFlexibleは選択肢から除外してしまって問題ないです。

App Engineはインスタンスの起動時間に対して課金が発生するのですが、Standardでインスタンスを起動した場合、1日28時間分の無料枠が自動的に適用されます。

注意1:インスタンスの稼働時間は管理する全てのプロジェクトで合算する

1アカウントがもつ無料枠の28時間は、管理するすべてのプロジェクトのインスタンスの稼働時間の合計で計算されます。

なので、上記のように一つのプロジェクトのインスタンス自体は無料枠の時間を超えていなかったとしても、他のプロジェクトのインスタンスの稼働時間と合算して28時間を超えた場合は、超過分から課金対象となります。

なので、無料枠内でApp Engineを利用する場合は、全体でインスタンス1台のみで運用することになります。

注意2:インスタンスクラスの選択に注意

StandardのインスタンスにはFから始まる上記の4つのクラスが存在します。
簡単に言うとサーバのスペックによる違いがあると思ってもらえれば大丈夫です。

Standardであれば、どのインスタンスでも1日1インスタンス分は無料で使えると認識すると痛い目を見ます。

Standard F1(インスタンス数 1)- 無料

Standard F2(インスタンス数 1)- 料金発生

GCPの見積機能を使ってF1とF2をそれぞれ1インスタンスずつ稼働させてときの費用を算出しました。
黄色のマーカーを付けた箇所がそれぞれの月間インスタンス稼働時間になります。

これを見てもわかるように、同じ1インスタンスでもF2はF1の2倍換算のインスタンス稼働時間を計算されます。

StandardのインスタンスだからとF1以外を選んで稼働させていると、思いもしない費用が発生してしまうので注意してください。

App Engineの無料枠は月間で840hほどになるので、App Engineを無料で使うことを目的とした場合、自ずとStandard F1インスタンスを1台で稼働させることになると言えます。

注意3:インスタンスの稼働しすぎに注意

App Engineでインスタンスを起動させる設定はapp.yamlファイルに記述しますが、この設定を誤るとインスタンスが立ち上がりすぎてしまい、すぐに無料枠を超えて料金が発生してしまうことになります。

runtime: nodejs18

instance_class: F1 # インスタンスクラス(標準のデフォルト)

automatic_scaling:
  min_instances: 1 # 最小インスタンス数
  max_instances: 2 # 最大インスタンス数
  max_concurrent_requests: 100 # 新しいインスタンス立ち上げの同時リクエスト数

entrypoint: npm start

注目してほしいのは、automatic_scalingの項目です。

min_instancesは、最小インスタンス数の設定で、常時立ち上げておくインスタンス数になりますので、1で問題ないと思います。

max_instancesは、アクセス集中してインスタンスの増設が必要になったとき、オートスケーリングが実行されるんですが、オートスケーリングで増設される最大のインスタンス数の設定になります。
この設定をしておくことで、インスタンスの増加に上限を設けることができます。

max_concurrent_requestsは、同時間帯にアクセスが集まったとき何リクエストで次のインスタンスを立ち上げるかの設定です。
ここについては、低すぎない数字を設定してあげればいいと思います。

その他の料金が発生する可能性があるもの

App Engineは基本的にインスタンスの合計稼働時間で料金が発生しますが、それ以外にも料金が発生する可能性があるものがありますので紹介しておきます。

Cloud Storage

App Engineを利用すると、一緒にCloud Storageを利用することになります。

Cloud StorageはGCPのサービスの一つで、その名の通りクラウドストレージサービスです。
App Engineは、デプロイしたソースファイルをバージョン管理するため、Cloud Storageに古いバージョンのソースファイルを保存していきます。

そのためCloud Storageの使用容量が知らぬ間に増えていき、無料枠である5GBを超える可能性があります。

ただ、その場合でも数十円の料金に過ぎないので微々たるものだと思います。

外部トラフィック

App EngineはGCP内の他のサービスについてのトラフィックは料金が発生しないのですが、外部のAPIなどにリクエストする(外部トラフィックが発生する)場合は、料金が加算される場合があります。

この点もGCPの見積機能で計算できます。

Outgoing Network Trafficが外部トラフィックの項目になります。
送信・受信トラフィックの合算で20GB / 月でも課金されないので、実際の取り扱いデータによりますが概ね無料の範囲内で使うことができそうです。

まとめ

ということで今回はApp Engineを絶対に無料枠で使いたい人のための設定や注意点についてまとめました。

Standardのインスタンスクラス F1を1台で運用することがマストの設定になります。

正しくapp.yamlファイルの設定で、オートスケーリングによるインスタンスの予期せぬ増加を防ぎ、課金の発生をできるだけ抑えるにようにしましょう。

さらにダメ押しで他の要素で課金が発生することを検知するため、予算とアラートの設定を行っておくといいと思います。