[AWS Tutorial][Lambda]はじめに
AWS LambdaのGetting Startedの冒頭で説明されている部分を読み進めてみます。AWS Lambdaについて学習をする場合、多くの場合ここから始めるのがよさそうです。一方で必ずしも読み進めやすい記載内容ではなかったため、自分なりに理解した内容を中心に、可能な限り簡潔にまとめていきます。 ソース:https://aws.amazon.com/jp/getting-started/deep-dive-serverless/ サーバーレスについて サーバーレスアプリケーションはイベント駆動型で、テクノロジーに依存しない API またはメッセージングを介して疎結合されます。イベント駆動型コードは、状態の変化やエンドポイントリクエストなどのイベントに応答して実行されます。 カテゴリ別のサービス学習 サーバーレス 最初の段落に、サーバーレスアプリケーションはイベント駆動型(イベント・ドリブン型)である旨記載があります。APIを使ってロジックを起動させるイメージですね。次の段落もその補足説明になっています。 Lambda関数は、(略)統合されたイベントソースを介して、非同期統合の作成に使用できるイベントによってトリガーされます カテゴリ別のサービス学習 サーバーレス 次の段落ですが、「非同期統合の作成」あたりがよくわからないですね。原文をあたってみます。 Lambda functions are triggered by events via integrated event sources such as Amazon Simple Queue Service (SQS), Amazon Simple Notification Service (SNS), and Amazon Kinesis that can be used to create asynchronous integrations. Category Deep Dive Serverless どうやら、「非同期統合」という特別なものがあるわけではなく、「非同期な統合(連動といってもいいかも)」が実現できる、ということですかね。SQSやSNS、Amazon Kinesisというサービスがこの非同期な統合に使えるという紹介のようです。 サーバーレスアーキテクチャパターンは、同じくサーバーレスである他のマネージドサービスで Lambda を使用します。 カテゴリ別のサービス学習 サーバーレス 日本語的に少しあやしい感じがあるので、ここも原文をみてみます。 Serverless architecture patterns use Lambda with other managed services that are also serverless Category Deep Dive Serverless 「サーバーレスアーキテクチャパターンとしては、Lambdaを他のサーバーレスのマネージド・サービスと共に使うかたちです」くらいの感じですかね。メッセージとしては「Lambdaを使ってサーバーレスにするなら、せっかくなので、Lambdaを管理するサービスも含めて全てをサーバーレスにしましょう」ということですね。以下が関連するマネージド・サービスとして紹介されています。 Amazon API Gateway: API管理 Amazon DynamoDB: データ格納 AWS Step Functions: オーケストレーション 一連のデベロッパーツール ところで、”サーバーレスアーキテクチャパターン”という単語が唐突に出てきますが、特に説明もありません。AWSの公式ドキュメントを探しましたが、定義らしきものも見つけられなかったので少しWebを調べてみました。 参考:Serverless architecture patterns いくつか見た中で、こちらのブログの説明が端的でわかりやすかったので紹介します。 https://waswani.medium.com/serverless-architecture-patterns-in-aws-edeab0e46a32 こちらの記事では、Lambdaを用いたアーキテクチャパターンをいくつか紹介しています。以下の図は最もシンプルなものですが、こういったイメージ図が一つあるだけで随分メッセージが伝わってくるのだけど、AWSに限った話ではないですが、公式ドキュメントでは中々お目にかかれないですね。 サーバーレスを使う理由 ここでは、ユーザにとっての利点としてざっくり以下の2点が説明されています。 サーバの管理が(メンテナンス、拡張など含め)不要 使った分だけに課金される コアサーバーレスサービス サーバーレスアプリケーションは、通常、フルマネージドサービスを使用して、コンピューティング、データ、メッセージングと統合、ストリーミング、ユーザー管理、ID レイヤー全体のビルディングブロックとして構築されます カテゴリ別のサービス学習 サーバーレス 「統合、」あたりからちょっとよくわからないので、原文をあたってみます。 Serverless applications … Read more