AWS Lambdaって何?
AWS Lambdaは、サーバーのプロビジョニングや管理をすることなく、コードを実行できるサーバーレスコンピューティングサービスとなります。
サーバ管理不要のコード開発のみで、特定のイベントに応じてコード実行されるため、リアルタイムのデータ処理や自動化タスクの実行が可能となります。
サービスの特徴・メリット
- 自動スケーリング
発生するトラフィック量に応じて、自動的にスケーリングを行うため、最適なコストパフォーマンスを維持しつつ運用が可能となります。 - 高可用性
複数AZで実行されるため、高い可用性を実現できます。 - 多様な統合
S3、DynamoDB、API Gateway、AmazonSNS等のサービスと簡単に統合できるため、様々なワークフローを構築することができます。
利用シーン
- リアルタイムデータ処理
S3にアップロードされた画像のサムネイル生成、動画エンコード処理、Cloudwatch Logsに出力されたログデータ分析・異常検知等のリアルタイム処理を実行したい。 - ウェブアプリケーションのバックエンド
サーバーレスなREST APIやGraphQL APIを構築したい。
自然言語処理サービスと連携して、チャットボットの応答処理を行いたい。
webサイトのフォーム送信処理、ユーザ認証処理を実装したい。 - 自動化タスク
システム監視やデータベースのバックアップ等の定期バッチ処理を自動化したい。 - IoT連携
IoTデバイスからの送信データをリアルタイム処理し、自動的にデータベースへ保存、他サービスへ連携したい。
AWS Lambdaのデメリット
- コールドスタート
Lambda関数は、実行されるまで初期化されていないため、初回実行や、長時間実行されていない後に実行する場合、初期化処理で実行時間が遅延する現象(コールドスタート)が発生してしまいます。
リアルタイム処理を求められる場合は注意が必要となります。 - 実行時間の制限
Lambda関数には最大実行時間の制限が存在し、制限時間を超過すると関数が強制終了してしまいます。 - メモリとストレージの制限
関数に割り当てられるメモリ・ストレージに制限があり、大量データ処理が必要なアプリケーションはこの制限による影響が出てしまう可能性があります。 - デバッグの複雑さ
サーバレスサービスのため、デバッグに必要な情報が分散してしまう可能性があります。
そのため、サーバベースのサービスと比較してデバックが複雑化してしまう場合があります。
まとめ
・サーバーレスコンピューティングサービス
・様々なAWSサービスと連携でき、トリガーイベントに対しての処理タスクを自動化することができる。
・Python、Java、Node.js、Go、.NET(C#)、Ruby、PowerShellの言語に対応
・発生トラフィックに応じて自動的にスケーリングを実行してくれる。
・サーバレスのため、デバックが複雑になる場合がある。