App Engineは、Google Cloud Platform (GCP) が提供するフルマネージドのPaaS(Platform as a Service)サービスです。インフラストラクチャの管理なしに、高いスケーラビリティを持つWebアプリケーションやバックエンドサービスを開発・デプロイ・実行できます。App Engineは、自動スケーリング、高可用性、バージョン管理、トラフィック分割などの機能を提供し、開発者がアプリケーションのコードに集中できる環境を実現します。
App Engineは、2つの異なる環境を提供しています:
環境 | 特徴 | 最適な用途 |
---|---|---|
スタンダード環境 |
|
シンプルなWebアプリケーション、APIサーバー、小規模なバックエンド |
フレキシブル環境 |
|
カスタムランタイム、長時間実行プロセス、メモリ集約型アプリケーション |
App Engineは以下の主要コンポーネントで構成されています:
コンポーネント | 説明 |
---|---|
アプリケーションインスタンス | アプリケーションコードを実行するコンテナインスタンス。トラフィックに応じて自動的に作成・削除される |
フロントエンド | HTTPリクエストを受け取り、適切なアプリケーションインスタンスにルーティングする |
ロードバランサー | トラフィックを複数のインスタンスに分散する |
バージョン管理 | アプリケーションの複数のバージョンを管理し、トラフィックを制御する |
組み込みサービス | Memcache、Task Queue、Cron Jobsなどのサービス |
Google Cloudには他のコンピューティングサービスもありますが、以下のような違いがあります:
App Engineは、Google Cloud Console、gcloud CLIツール、またはCloud Build/Cloud DeployなどのCI/CDツールを使用してデプロイできます。
App Engineアプリケーションは、以下の要素で構成されます:
runtime: python39
service: default
instance_class: F2
automatic_scaling:
min_instances: 1
max_instances: 10
target_cpu_utilization: 0.65
target_throughput_utilization: 0.65
max_concurrent_requests: 50
env_variables:
DEBUG: 'False'
DATABASE_URL: 'postgresql://user:password@host:port/database'
handlers:
- url: /static
static_dir: static
- url: /.*
script: auto
runtime: nodejs14
service: api
instance_class: F2
automatic_scaling:
min_instances: 1
max_instances: 15
target_cpu_utilization: 0.7
env_variables:
NODE_ENV: 'production'
API_KEY: 'your-api-key'
# アプリケーションのディレクトリに移動
cd my-app
# アプリケーションのデプロイ
gcloud app deploy
# 特定のバージョンとしてデプロイ
gcloud app deploy --version=v1
# トラフィックを分割してデプロイ
gcloud app deploy --version=v2 --no-promote
# 特定のサービスのデプロイ
gcloud app deploy services/api/app.yaml
複数のバージョン間でトラフィックを分割して、A/Bテストやカナリアリリースを実現できます:
# トラフィックの分割
gcloud app services set-traffic default --splits=v1=0.9,v2=0.1
# IPベースの分割
gcloud app services set-traffic default --splits=v1=0.9,v2=0.1 --split-by=ip
# Cookieベースの分割
gcloud app services set-traffic default --splits=v1=0.9,v2=0.1 --split-by=cookie
App Engineアプリケーションにカスタムドメインを設定できます:
# カスタムドメインの追加
gcloud app domain-mappings create example.com
# SSLサーティフィケートの管理
gcloud app ssl-certificates create --display-name="My Certificate" \
--certificate=cert.pem --private-key=key.pem
定期的なタスクを実行するためのCron Jobsを設定できます:
cron:
- description: "Daily backup job"
url: /tasks/backup
schedule: every 24 hours
timezone: Asia/Tokyo
- description: "Weekly report generation"
url: /tasks/generate-report
schedule: every monday 09:00
timezone: Asia/Tokyo
gcloud app deploy cron.yaml
App Engineは、アプリケーションのセキュリティを確保するための様々な機能を提供しています:
IAMを使用して、App Engineリソースへのアクセスを制御できます:
# App Engine管理者ロールの付与
gcloud projects add-iam-policy-binding my-project \
--member=user:user@example.com \
--role=roles/appengine.appAdmin
# App Engine閲覧者ロールの付与
gcloud projects add-iam-policy-binding my-project \
--member=user:user@example.com \
--role=roles/appengine.viewer
App Engineファイアウォールルールを使用して、アプリケーションへのアクセスを制限できます:
# 特定のIPアドレスからのアクセスを許可
gcloud app firewall-rules create --action=allow --source-range=192.168.1.0/24 --description="Allow office IPs"
# 特定のIPアドレスからのアクセスを拒否
gcloud app firewall-rules create --action=deny --source-range=1.2.3.4/32 --description="Block suspicious IP"
Secret Managerと統合して、機密情報を安全に管理できます:
# Secret Managerからシークレットを取得するコード例(Python)
from google.cloud import secretmanager
def access_secret(project_id, secret_id, version_id="latest"):
client = secretmanager.SecretManagerServiceClient()
name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}"
response = client.access_secret_version(request={"name": name})
return response.payload.data.decode("UTF-8")
App EngineはGoogle Cloud Monitoringおよびロギングと統合されており、アプリケーションの健全性とパフォーマンスを監視できます:
アプリケーション内でログを出力するには、言語に応じた標準的なロギング方法を使用します:
import logging
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
console.log('This is a log message'); // 標準ログ
console.info('This is an info message'); // 情報ログ
console.warn('This is a warning message'); // 警告ログ
console.error('This is an error message'); // エラーログ
App Engineのコストを最適化するためのベストプラクティス:
App Engineのコストは主に以下の要素で構成されています:
App Engineは以下のようなユースケースに適しています:
App Engineは他のGoogle Cloudサービスと統合して、より強力なソリューションを構築できます:
サービス | 統合の利点 |
---|---|
Cloud SQL | アプリケーションのデータを保存するためのマネージドリレーショナルデータベース |
Cloud Storage | 静的コンテンツやユーザーアップロードファイルの保存 |
Cloud CDN | 静的コンテンツの高速配信 |
Cloud Tasks | 非同期タスクの実行と管理 |
Pub/Sub | イベント駆動型アーキテクチャの実装 |
Cloud Build | 継続的インテグレーションと継続的デリバリー(CI/CD) |
Cloud Monitoring | アプリケーションのパフォーマンスと健全性の監視 |
App Engine は、Google Cloud Platform上でのWebアプリケーションとバックエンドサービスの開発・デプロイ・実行を簡素化するフルマネージドのPaaSサービスです。インフラストラクチャの管理なしに、高いスケーラビリティと可用性を持つアプリケーションを構築できます。
App Engineの主な利点は以下の通りです:
App Engineを効果的に活用するには、アプリケーションの要件に基づいて適切な環境(スタンダードまたはフレキシブル)を選択し、自動スケーリングの設定を最適化し、組み込みサービスを活用することが重要です。また、他のGCPサービスと組み合わせることで、より強力なクラウドネイティブアプリケーションを構築することができます。