17
Serverless(サーバーレス)
サーバーレスとは、開発者がアプリケーションを構築・実行する際に、サーバーの管理を意識する必要がなくなるクラウドコンピューティングの実行モデルです。文字通り「サーバーがない」わけではなく、サーバーの準備、起動、スケール(拡張・縮小)、メンテナンスといった作業を、すべてクラウドサービスプロバイダー(Google Cloud、AWS、Azureなど)が肩代わりしてくれます。
例えるなら、タクシーに乗るようなものです。目的地を伝えれば、運転手が最適なルートで連れて行ってくれ、車の整備やガソリンの補充などを気にする必要はありません。サーバーレスも同様に、開発者はコードを書くことに集中でき、インフラのことはクラウドプロバイダーに任せられます。
サーバーレスの主な特徴とメリット
- サーバー管理からの解放 😌: 開発者はサーバーのOSのパッチ適用、セキュリティ設定、キャパシティプランニング(サーバーの台数やスペックの決定)など、面倒な作業から解放されます。これにより、アプリケーション開発に集中でき、開発スピードが向上します。
- 従量課金制(イベント駆動型)💰: コードが実行された時だけ料金が発生します。アイドル状態(何も処理していない時)には費用がかからないため、使った分だけ支払う非常に効率的なコストモデルです。トラフィックの変動が大きいサービスに適しています。
- 自動スケーリング 🚀: アクセスが急増しても、クラウドプロバイダーが自動的に必要なリソースを瞬時に割り当ててくれます。これにより、サービスの停止やパフォーマンス低下のリスクを大幅に軽減できます。手動でサーバーを増やす必要がありません。
- 高い可用性 💪: プロバイダーがインフラの冗長化や障害対策を行っているため、個々のサーバーの故障がサービス全体に影響を及ぼしにくいです。
- 迅速なデプロイ ⚡: コードをアップロードするだけで、すぐにアプリケーションをデプロイできます。インフラの構築や設定に時間をかける必要がありません。
サーバーレスのユースケース(活用例)
サーバーレスは、以下のような様々な用途で利用されています。
- Webアプリケーションのバックエンド: API(アプリケーション連携の窓口)として機能し、ユーザーからのリクエストに応じて処理を実行します。
- データ処理: ファイルがアップロードされた際に自動的に処理を実行したり、データベースの更新をトリガーに特定の処理を行ったりするのに使われます。
- チャットボット: ユーザーからのメッセージに応答するロジックを実行します。
- IoT(モノのインターネット): デバイスからのデータを受信し、処理するバックエンドとして機能します。
- モバイルアプリケーションのバックエンド: アプリからのリクエストに応じて認証やデータ保存などの処理を実行します。
Google Cloud の主なサーバーレスサービス
Google Cloudでは、以下のような様々なサーバーレスサービスが提供されています。
- Cloud Functions: イベント駆動型のサーバーレス実行環境。特定のイベント(HTTPリクエスト、ファイルアップロード、データベース更新など)をトリガーにコードを実行します。
- Cloud Run: コンテナ化されたアプリケーションを実行できるサーバーレスプラットフォーム。より柔軟な言語やライブラリの利用が可能です。
- App Engine: Webアプリケーションやモバイルバックエンド向けのフルマネージドなプラットフォーム。標準環境とフレキシブル環境があります。
- BigQuery: サーバーレスなデータウェアハウス。大規模なデータ分析を容易に行えます。
- Firestore/Datastore: サーバーレスなNoSQLデータベース。リアルタイムアプリケーションやモバイルアプリケーションに適しています。