Node.jsでApp Engine Flexible環境の料金を500ドル削減! 経験から学んだ教訓
プログラミング: Google App Engine Flexible 環境の料金体系:500 ドルで学んだ教訓
前提条件
このチュートリアルを理解するには、以下の知識が必要です。
- Node.js: JavaScript ランタイム環境
- Google Cloud Platform (GCP): クラウド コンピューティング プラットフォーム
- Google App Engine: GCP 上でアプリケーションをデプロイするためのプラットフォーム
状況
私は、Node.js で構築された Web アプリケーション を App Engine Flexible 環境 にデプロイしました。当初、無料枠 を利用していましたが、アプリケーションのトラフィックが増加するにつれて、料金が急増 しました。最終的に、500 ドル の請求書を受け取りました。
問題点
請求書を分析すると、以下の問題点が浮き彫りになりました。
- インスタンス料金: アプリケーションのトラフィックが増加するにつれて、インスタンス の数が自動的にスケールアップされました。その結果、未使用のインスタンス に対しても料金が発生しました。
- ネットワーク帯域幅: アプリケーションが大量のデータを送受信するため、ネットワーク帯域幅 の料金が高額になりました。
- データベース: アプリケーションは Cloud SQL を使用しており、データベース使用量 に対しても料金が発生しました。
解決策
これらの問題を解決するために、以下の対策を講じました。
- 自動スケーリング: アプリケーションのトラフィックに応じて インスタンス の数を自動的にスケーリングするように設定しました。これにより、未使用のインスタンスに支払う料金を削減できました。
- 静的コンテンツのキャッシュ: アプリケーションで頻繁にアクセスされる静的コンテンツを キャッシュ するように設定しました。これにより、ネットワーク帯域幅の使用量と料金を削減できました。
- データベースの最適化: データベースクエリを最適化し、インデックス を追加することで、データベース使用量と料金を削減できました。
教訓
この経験から、以下の教訓を学びました。
- App Engine Flexible 環境 の料金体系を理解することが重要です。
- 自動スケーリング を活用して、コストを削減 することができます。
- 静的コンテンツ と データベース を最適化することで、パフォーマンス と コスト を向上させることができます。
まとめ
手順
- プロジェクトを作成する
gcloud projects create my-project
- App Engine サービスを作成する
gcloud app create my-app --runtime nodejs
- コードをデプロイする
cd my-app
npm install express
Create a file named app.js
and add the following code:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, world!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
gcloud app deploy
- アプリケーションにアクセスする
gcloud app browse my-app
このコマンドを実行すると、ブラウザでアプリケーションが開きます。
コードの説明
このコードは、Express フレームワークを使用してシンプルな Web アプリケーション を作成します。アプリケーションは、ルートパス (/
) に対する GET
リクエストを処理し、"Hello, world!"
というメッセージを返します。
App Engine Flexible 環境へのデプロイ
gcloud app deploy
コマンドを使用して、アプリケーションを App Engine Flexible 環境 にデプロイします。このコマンドは、アプリケーションコードを App Engine サーバーにアップロードし、アプリケーションを起動します。
gcloud app browse my-app
コマンドを使用して、デプロイされたアプリケーションにアクセスできます。このコマンドは、ブラウザでアプリケーションの URL を開きます。
このサンプルコードは、App Engine Flexible 環境 に Node.js アプリケーションをデプロイする方法を理解するための出発点として役立ちます。
- インスタンスの自動スケーリングを使用する
App Engine Flexible 環境は、自動スケーリング をサポートしています。これにより、トラフィック量に応じてアプリケーションインスタンスの数を自動的に増減できます。これにより、未使用のインスタンスに料金を支払うのを回避できます。
自動スケーリングを設定するには、App Engine コンソールまたは gcloud
コマンドライン ツールを使用できます。
- 静的コンテンツのキャッシュを使用する
静的コンテンツ (画像、CSS ファイル、JavaScript ファイルなど) は、キャッシュ することで、ネットワーク帯域幅の使用量と料金を削減できます。
App Engine Flexible 環境では、Memcache または Cloud CDN を使用して静的コンテンツをキャッシュできます。
- データベースを最適化する
データベースの使用量を減らすことで、データベース料金を削減できます。
データベースを最適化するには、次のことができます。
- インデックス を使用する
- クエリ を最適化する
- 不要なデータ を削除する
App Engine Flexible 環境には、無料枠 が用意されています。この無料枠では、毎月一定量のインスタンス時間、ネットワーク帯域幅、およびストレージを使用できます。
- Cloud Run を検討する
Cloud Run は、サーバーレスのコンテナー実行プラットフォームです。App Engine Flexible 環境よりも安価 な場合があり、スケーラビリティ に優れています。
node.js google-cloud-platform app-engine-flexible