Querier

Google App Engineを徹底解説 | 使い方、料金、Cronの設定、Cloud Runとの比較まで

2023.07.10に公開 | 2023.07.10に更新

Querier運営

@querier_io@querierinc

「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。

管理画面の構築もWeb上で完結
エンジニアのためのローコードツール

Querierについて詳しく見る

クラウド技術の発展に伴い、開発者は従来のオンプレミスのサーバーからクラウドサーバーへと移行しています。特に、Google Cloud Platform(GCP)はその豊富なサービスと強力なスケーラビリティで世界中のエンジニアから信頼を得ています。

GCPの中でも、特に強力なツールの1つがApp Engineです。この記事では、このApp Engineの詳細について解説します。その特性、使い方、料金体系、そしてセキュリティに関する注意点まで、幅広くカバーします。

この記事が、あなたがApp Engineを効果的に利用するための一助となれば幸いです。では、まずApp Engineの特性について見ていきましょう。

App Engineとは

特徴

App Engine(GAE)は、Googleが提供するフルマネージドのPaaS(Platform as a Service)です。これは、開発者がスケーラブルなウェブアプリケーションやモバイルアプリケーションのバックエンドを簡単に作成、デプロイ、スケーリングすることができるプラットフォームを意味します。

App Engineは2つの環境、すなわちStandard EnvironmentとFlexible Environmentを提供しています。

Standard Environmentは、Googleが全てのインフラを管理する環境で、事前に定義されたランタイムを使用します。

一方、Flexible Environmentでは、よりカスタマイズ可能で、カスタムランタイムや任意のコンテナを使用することが可能です。

また、App Engineは高度なセキュリティ、ネットワーキング、そしてアプリケーションサービスを提供します。

これらのサービスはGoogleの他のクラウドプラットフォームとシームレスに連携し、開発者が複雑なインフラ構築や管理から解放され、アプリケーション開発に専念することができます。

メリット・デメリット

メリット

App Engineのメリットは多数ありますが、以下に主要なものを挙げます。

  1. フルマネージド: サーバーやインフラの管理をGoogleが行い、開発者はアプリケーションの開発に専念できます。
  2. 自動スケーリング: トラフィックの増減に応じて、App Engineは自動的にリソースをスケーリングします。トラフィックがない時にはインスタンスを0まで落とすことも可能です。
  3. 複数言語対応: Java, Python, PHP, Go, Node.js, .NET, Rubyなど、多種多様なプログラミング言語が利用可能です。
  4. 高度なセキュリティ: Googleの強固なセキュリティモデルが適用されており、SSL/TLSによる通信やGoogle Cloud ArmorによるDDoS防御などが利用可能です。

デメリット

一方で、App Engineのデメリットも理解しておくことが重要です。

  1. フレキシビリティの欠如: フルマネージドなサービスであるため、細かいカスタマイズが難しいことがあります。また、Standard Environmentでは使用できるランタイムが限定されています。
  2. 料金: 大規模なアプリケーションになると料金が高くなることがあります。自動スケーリングの性質上、コスト管理が難しくなることもあります。
  3. 移植性: App Engine特有のAPIやサービスを利用すると、他のプラットフォームへの移行が難しくなる可能性があります。

App Engineの料金、無料枠はある?

App Engineの料金は、使用したリソースの量によって異なります。具体的には、以下の要素が料金を決定します。

  1. 使用したインスタンスの時間: App Engineでは、アプリケーションの規模やトラフィックによって自動的にスケーリングされるインスタンスが利用されます。そのため、そのインスタンスが動作している時間に対して料金が発生します。
  2. アウトバウンドネットワークトラフィック: App Engineから送信されるデータ量に対しても料金が発生します。ただし、App Engineと同一のGCPリージョン内でのネットワーク通信は無料です。
  3. Cloud Firestore、Cloud Storageなど他のGCPサービスの利用: App Engineアプリケーションから他のGCPサービスを利用した場合、その利用料も発生します。

無料枠について

App Engineは、毎日一定の利用量まで無料で提供されています。具体的には以下のリソースが無料枠に含まれます。

  • B1、B2、B4、B8のインスタンスに対する使用時間
  • インバウンドネットワークトラフィック
  • インスタンスのアイドル時間
  • App EngineのAPI呼び出し

しかし、無料枠を超えると通常の料金が発生しますので、注意が必要です。

また、無料枠は一部のリージョンでのみ利用可能で、全てのリージョンで提供されているわけではありません。現在の無料枠についての詳細や、利用可能なリージョンについては、公式のApp Engineの料金ページを参照してください。

これらの情報を把握することで、App Engineをより効果的に、かつコスト効率よく利用することが可能となります。

App EngineでのCronの設定方法

App Engineは、一定のスケジュールでタスクを実行するためのCronジョブをサポートしています。これにより、定期的にデータベースのバックアップを取る、特定の時間にメールを送信するといった処理を自動化することが可能になります。

Cronジョブの設定は、主にcron.yamlという設定ファイルによって行われます。以下に基本的なcron.yamlの例を示します。

cron:
- description: "daily summary job"
  url: /tasks/summary
  schedule: every 24 hours
- description: "monday morning mailout"
  url: /mail/send
  schedule: every monday 09:00
  target: v1

この設定ファイルでは、各Cronジョブについて以下の情報を定義します。

  • description: Cronジョブの説明。これはオプションで、ジョブの内容を人間が理解できる形で記述します。
  • url: CronジョブがヒットするURL。このURLに対するリクエストがCronジョブの実行を引き起こします。
  • schedule: ジョブのスケジュール。このフィールドでジョブの実行頻度を定義します。
  • target: ジョブがヒットするサービスのバージョン。これもオプションで、指定しない場合はデフォルトのバージョンが使用されます。

このcron.yamlファイルを作成したら、次のコマンドを使用してそれをデプロイします。

gcloud app deploy cron.yaml

このコマンドを実行すると、定義したCronジョブが有効化され、指定したスケジュールで実行されるようになります。

Cloud Runとの比較、メリット・デメリット

App EngineとCloud Runは、Google Cloud Platformが提供する2つの主要なサーバーレスプラットフォームです。

どちらもスケーラブルなアプリケーションを容易にデプロイできる機能を提供していますが、いくつかの重要な違いがあります。これらの違いを理解することで、あなたの特定のプロジェクトやユースケースに最適なプラットフォームを選択することができます。

App Engineのメリットとデメリット

App Engineは、Webアプリケーションのホスティングとスケーリングを自動的に管理するフルマネージド型のプラットフォームです。

メリット

  • 自動管理: App Engineはインフラストラクチャの管理を自動化します。これにより、開発者はアプリケーションのコードに集中することができます。
  • スケーラビリティ: App Engineはトラフィックの増減に応じて自動的にスケーリングします。これにより、予測不能なトラフィックの変動に迅速に対応することが可能です。

デメリット

  • ランタイム制限: App Engineは一部の言語とランタイムのみをサポートしています。これにより、特定の技術スタックに制約がある場合があります。

Cloud Runのメリットとデメリット

一方、Cloud Runは任意のDockerコンテナを自動的にスケーリングして実行するプラットフォームです。

メリット

  • フレキシビリティ: Cloud Runは任意の言語、ライブラリ、フレームワークで作成されたアプリケーションをホストすることができます。これにより、既存のコードベースや特定の技術スタックに依存するアプリケーションに対して高いフレキシビリティを提供します。
  • スケーラビリティ: App Engineと同様に、Cloud Runもトラフィックの増減に応じて自動的にスケーリングします。

デメリット

  • コンテナ管理の必要性: Cloud RunはDockerコンテナの知識が必要です。開発者は自身のアプリケーションをコンテナ化し、Dockerfileを作成・管理する必要があります。

利用シーンと推奨

App Engine

  1. ウェブアプリケーション: App Engineは、その自動管理とスケーラビリティにより、ウェブアプリケーションのホスティングに適しています。また、バージョニングとトラフィックスプリッティング機能を活用することで、新機能のローリングアウトやA/Bテストを行うことが容易になります。

Cloud Run

  1. マイクロサービス: Cloud Runは、独立したコンテナとして実行されるマイクロサービスのデプロイに適しています。各マイクロサービスを個別のコンテナとしてパッケージ化し、管理することができます。
  2. 既存のコードベースの移行: Dockerを用いて既存のアプリケーションをコンテナ化することで、Cloud Runに移行することができます。これにより、リソースを効率的に利用し、運用コストを抑えることが可能となります。

総じて、特定のランタイム制限を受け入れることができ、ウェブアプリケーションのホスティングが必要な場合は、App Engineが最適な選択となるでしょう。

一方、より高いフレキシビリティが求められる、または既存のアプリケーションの移行が必要な場合には、Cloud Runがより適したプラットフォームとなります。

App Engineのセキュリティ上の注意点

Google Cloud Platform (GCP) は、一般的なセキュリティ対策を提供していますが、それぞれのサービスの特性を理解し、適切なセキュリティ設定を行うことが重要です。App Engineも例外ではありません。

1. 機密情報の保護

App Engineのアプリケーションでは、データベースの資格情報やAPIキーなどの機密情報を取り扱うことがあります。

これらの情報をソースコード内に直接記載すると、リポジトリが不適切に公開されたときなどに機密情報が漏洩するリスクがあります。そのため、Secret Managerなどを使用して、安全に機密情報を管理しましょう。

2. Identity-Aware Proxy (IAP)

App Engineアプリケーションへの不適切なアクセスを防ぐために、Identity-Aware Proxy (IAP) を使用することを検討してみてください。

IAPは、アプリケーションへのアクセスを認証ユーザーに限定することで、公開Webアプリケーションの安全性を高めます。

3. SSL/TLS

すべてのApp EngineアプリケーションはデフォルトでHTTPSを使用しています。

これにより、ユーザーのデータがサーバーとブラウザ間で暗号化され、横取りされるリスクが軽減されます。App Engineでは、証明書の管理と更新も自動的に行われるため、HTTPSの利用は非常に簡単です。

4. App Engine Firewall

App Engine Firewallを使用して、特定のIPアドレスからのリクエストを許可または拒否することができます。

不審なトラフィックのソースを特定し、そのIPアドレスをブロックすることで、アプリケーションのセキュリティを強化できます。

以上が、App Engineのセキュリティ上の注意点です。

これらのポイントを理解し、適切なセキュリティ対策を講じることで、安全なアプリケーション開発が可能となります。

セキュリティは、システム全体の安全性を確保するために、常に重要な観点となります。

さいごに

以上がApp Engineの詳しい解説となります。

App Engineを使用することで、開発者はアプリケーションの開発に集中し、高い生産性を維持することが可能です。

しかし、それらの利点を最大限に活用するためには、その特性や使い方を理解しておくことが重要です。

「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。

最新の記事

【告知】値の参照時の仕様変更のお知らせ

このたび2024年11月11日に値の参照に関する仕様変更を予定しておりますので詳細について報告いたします。

more

管理画面の構築もWeb上で完結
エンジニアのためのローコードツール

Querierについて詳しく見る