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の言語に対応
・発生トラフィックに応じて自動的にスケーリングを実行してくれる。
・サーバレスのため、デバックが複雑になる場合がある。