AWS Lambda での耐障害性 - AWS Lambda

AWS Lambda での耐障害性

AWS のグローバルインフラストラクチャは AWS リージョンとアベイラビリティーゾーンを中心に構築されます。AWSリージョンには、低レイテンシー、高いスループット、そして高度の冗長ネットワークで接続されている複数の物理的に独立し隔離されたアベイラビリティーゾーンがあります。アベイラビリティーゾーンでは、アベイラビリティーゾーン間で中断せずに、自動的にフェイルオーバーするアプリケーションとデータベースを設計および運用することができます。アベイラビリティーゾーンは、従来の単一または複数のデータセンターインフラストラクチャよりも可用性、耐障害性、およびスケーラビリティが優れています。

AWS のリージョンとアベイラビリティーゾーンの詳細については、「AWS グローバルインフラストラクチャ」を参照してください。

Lambda では、AWS グローバルインフラストラクチャに加えて、データの耐障害性とバックアップのニーズに対応できるように複数の機能を提供しています。

  • バージョニング - バージョニングは、Lambda で使用して、開発時に関数のコードと設定を保存できます。エイリアスと合わせてバージョニングを使用して、Blue/Green デプロイおよびローリングデプロイを実行できます。詳細については、「Lambda 関数のバージョンを管理する」を参照してください。

  • スケーリング — 関数が前のリクエストの処理中にリクエストを受信すると、Lambda が、増えた負荷を処理するために、関数の別のインスタンスを起動します。Lambda は、リージョンごとに 1,000 回の同時実行を処理するように、自動的にスケーリングされます。クォータは必要に応じて増やすことができます。詳細については、「Lambda 関数のスケーリングについて」を参照してください。

  • 高可用性 - Lambda は、複数のアベイラビリティーゾーンで関数を実行し、1 つのゾーンでサービスの中断が発生した場合にも、関数をイベントの処理に使用できることを保証します。お客様のアカウントで Virtual Private Cloud (VPC) に接続するように関数を設定する場合は、複数のアベイラビリティーゾーンでサブネットを指定することで、高可用性を確保します。詳細については、「Lambda 関数に Amazon VPC 内のリソースへのアクセスを許可する」を参照してください。

  • リザーブド同時実行 - 関数が常にスケーリングして、追加リクエストを処理できるようにするため、関数に同時実行を予約できます。関数に予約された同時実行を設定することにより、指定した数の同時呼び出し数までスケーリングできますが、これを超えることはありません。これにより、利用可能なすべての同時実行数が他の関数に消費されているために、リクエストを失うことがありません。詳細については、「関数に対する予約済み同時実行数の設定」を参照してください。

  • 非同期呼び出し - 非同期呼び出しと、他のサービスによってトリガーされた呼び出しのサブセットの場合、エラーが発生すると、Lambda は、再試行の間に遅延を置きながら、自動的に再試行します。関数を同期的に呼び出すその他のクライアントと AWS のサービスが、再試行の実行を担当します。詳細については、「Lambda での再試行動作について」を参照してください。

  • デッドレターキュー - 非同期呼び出しでは、すべての再試行に失敗した場合、Lambda を設定してデッドレターキューにリクエストを送信することができます。デッドレターキューは、Amazon SNS のトピックまたはトラブルシューティングまたは再処理のためにイベントを受信する Amazon SQS キューです。詳細については、「デッドレターキューの追加」を参照してください。