Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SQS + Lambda という⾮同期処理 ⻩⾦パターン再⼊⾨ #AWSDevDay / SQ...

SQS + Lambda という⾮同期処理 ⻩⾦パターン再⼊⾨ #AWSDevDay / SQS-Lambda-DevDay2022

Ichino Shiraishi

November 10, 2022
Tweet

More Decks by Ichino Shiraishi

Other Decks in Technology

Transcript

  1. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. SQS + Lambda という⾮同期処理 ⻩⾦パターン再⼊⾨ ⽩⽯ ⼀乃 E-1 アマゾン ウェブ サービス ジャパン合同会社 技術統括本部 ⻄⽇本ソリューション部 ソリューションアーキテクト
  2. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⽩⽯ ⼀乃 (しらいし いちの) ソリューションアーキテクト • ⻄⽇本のお客様をメインで担当 • 国内SIer出⾝ Webアプリ開発、プロトタイピング、PM 好きなAWSのサービス︓ AWS Control Tower ...etc. ⾃⼰紹介 Good intentions don’t work, mechanisms do ! 運⽤・開発が楽になるサービス 好きな⾔葉︓ Twitter︓@piko_san_0000 イベント情報など呟いています AWSアカウントの管理を楽にする AWS Control Tower についてはこちら!
  3. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 想定受講者 ゴール • ⾮同期処理に興味のある⽅ • AWS 上での⾮同期処理の実装⽅法に興味のある⽅ • Amazon SQS + AWS Lambda の組み合わせによるメリットを知りたい⽅ • Amazon SQS + AWS Lambda ⻩⾦パターン 「いいね︕」 となって、やってみたくなる︕︕ 本セッションは…
  4. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. アジェンダ ・ ⾮同期処理 とは ・ Amazon SQS による「キュー」の実装 ・ SQS + Lambda アーキテクチャ ・ まとめ
  5. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 参考リンク ・「キュー」以外のメッセージングサービスの選択肢 参考︓AWS DevAx::Connect On-demand シーズン1 https://aws.amazon.com/jp/devax-connect-on-demand/ https://pages.awscloud.com/devax-connect-ondemand-202101-01-jp.html 第 1 回 イベント駆動アーキテクチャ⼊⾨ 〜基本となる考え⽅から実装パターンまで〜 / 第 2 回 「疎結合」を実現するメッセージングサービスの選択と利⽤ ・ SQS、Lambda など個別のサービスについての詳細 参考︓ AWS サービス別資料 (「SQS」などサービス名で検索)※Blackbelt資料など https://aws.amazon.com/jp/events/aws-event-resource/archive/
  6. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⾮同期処理 とは
  7. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾮同期処理とは 「処理の結果を待つ必要が “ない” サービスの呼び出し」
  8. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 同期処理と⾮同期処理を使い分ける 注⽂処理 サービス 在庫管理 サービス 配送処理 サービス EC サイト 外部システム (配送事業者) エンドユーザ
  9. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 同期処理と⾮同期処理を使い分ける 注⽂処理 サービス 在庫管理 サービス 配送処理 サービス EC サイト 外部システム (配送事業者) 処理結果を待つ 必要がある 処理結果を待つ 必要がない エンドユーザ 快 適 ︕ 同期処理で実装 ⾮同期処理で実装
  10. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾮同期処理にすることのメリット ⾮同期処理をアプリケーション設計に取り⼊れる ① 応答性の改善 ② 耐障害性・可⽤性の向上 ③ スループットの向上 ④ コスト削減 サービス間を「疎結合」につなぐことによって 以下のメリットが期待できる
  11. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾮同期処理のメリット① 応答性の改善 ユーザへの応答時間を短くする サービス A サービス B ⾮同期処理 サービス A サービス B 同期処理 応答 時間 待機 応答 時間
  12. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾮同期処理のメリット② 耐障害性・可⽤性の向上 ⾮同期処理 サービス A サービス B サービス A サービス B 同期処理 200 OK 疎結合 密結合 500 Error 障害時の影響範囲を限定、可⽤性を向上
  13. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾮同期処理のメリット② 耐障害性・可⽤性の向上 可⽤性 95% サービス A サービス B 同期処理 可⽤性 99% 可⽤性 95% 密結合 障害時の影響範囲を限定、可⽤性を向上 サービス A サービス B ⾮同期処理 可⽤性 99% ユーザから⾒た可⽤性 = 0.99 × 0.95 = 0.9405 = 94% ユーザから⾒た可⽤性 = 99% 疎結合 可⽤性 95%
  14. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾮同期処理のメリット③ スループットの向上 → 例えば サービスB がより⻑い実⾏時間を必要とする処理を⾏なう場合、 (同じプロセス・スレッド数の場合)サービスB の⽅が単位時間あたりの処理可能なリクエスト量は少なくなる ⾮同期処理 サービス A サービス B 1000 RPS 500 RPS 疎結合 サービス A サービス B 同期処理 1000 RPS 500 RPS 密結合 ※RPS = (Request Per Second) 1秒 1秒 1秒 1秒 ・・・ ・・・ ・・・ ・・・ (軽い処理) (重い処理) (軽い処理) (重い処理)
  15. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾮同期処理のメリット③ スループットの向上 サービス A サービス B 同期処理 1000 RPS 500 RPS 密結合 1000 リクエスト/秒 サーバダウン ⼜は スロットリング 例えば サービスA が秒間 1000 リクエストを捌けたとしても、密結合で繋がる サービスB が ボトルネックとなり システム全体の処理可能リクエスト数は、RPS の低い⽅のサービスに引っ張られる サービス A サービス B ⾮同期処理 1000 RPS 500 RPS 疎結合 1000 リクエスト/秒 ⾃分のペースで リクエストを処理
  16. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾮同期処理のメリット③ スループットの向上 サービス A サービス B 同期処理 1000 RPS 500 RPS 密結合 1000 リクエスト/秒 サーバダウン ⼜は スロットリング サービス A サービス B ⾮同期処理 1000 RPS 500 RPS 疎結合 1000 リクエスト/秒 ⾃分のペースで リクエストを処理 処理の重さに応じてサービスを分離し スループットを向上できる
  17. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾮同期処理のメリット④ コスト削減 ⾮同期処理 ⾮機能要件 処理可能な1秒あたりのリクエスト数︓1000 ユーザから⾒た可⽤性 = 99% コンポーネントごとに最適なリソース割当が可能 同期処理 ⾮機能要件 処理可能な1秒あたりのリクエスト数︓1000 ユーザから⾒た可⽤性 = 99% サービス A サービス B サービス A サービス A 1000 RPS 可⽤性 99% 1000 RPS サービス A サービス A サービス A 可⽤性 99% 密結合 疎結合 サービス B コスト ※ 全体の可⽤性 = 99 × 99.9 = 98.9% 1000 RPS サービス A 可⽤性 99.9% サービス B 500 RPS 可⽤性 95% ※ 全体の可⽤性 = 99%
  18. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾮同期処理にすることのメリット ⾮同期処理をアプリケーション設計に取り⼊れる ① 応答性の改善 ② 耐障害性・可⽤性の向上 ③ スループットの向上 ④ コスト削減 サービス間を「疎結合」につなぐことによって 以下のメリットが期待できる 再 掲
  19. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon SQS による 「キュー」の実装
  20. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. サービス間を繋ぐ サービスA サービスB サービスA サービスB 同期処理 ⾮同期処理
  21. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. サービス間を繋ぐ サービスA サービスB サービスA サービスB 同期処理 ⾮同期処理 ?
  22. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. サービス間を繋ぐ サービスA サービスB サービスA サービスB 同期処理 ⾮同期処理 メッセージを仲介する メッセージングサービス ?
  23. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾮同期処理を実装するために利⽤可能 キュー(Queue) サービスA サービスB
  24. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. (参考)メッセージングサービスのモデル⼤別 モデル1: キュー → ポイントツーポイント、ワーカーキュー モデル2: ストリーム → データストリーム、イベントストリーム モデル3: トピック → ルーティング モデル4: バス → ハブ、イベントバス、エンタープライズサービスバス (ESB)
  25. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キュー(Queue) サービスA サービスB キュー …メッセージ ⾃分でメッセージを 取りに⾏く
  26. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キュー(Queue) キュー …メッセージ ⾃分でメッセージを 取りに⾏く サービスB サービスB サービスB サービスB サービスB サービスA 課題︓スケーラビリティ、⾼い可⽤性・スループットの確保
  27. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. (課題)キューを⾃前で作ろうと思うと・・・ Amazon EC2 Auto Scaling group オンプレ上の仮想サーバ EC2とオートスケーリング ⼤量のリクエストに備えるための スケーラビリティの確保が課題 新規インスタンスの起動時間が必要 スパイクなどの急激なリクエストの増 加への対応が課題 ※ FargateやLambdaも同様、スケーリング時の起動時間を ゼロにはできない
  28. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. (課題)キューを⾃前で作ろうと思うと・・・ Amazon EC2 Auto Scaling group オンプレ上の仮想サーバ EC2とオートスケーリング ⼤量のリクエストに備えるための スケーラビリティの確保が課題 新規インスタンスの起動時間が必要 スパイクなどの急激なリクエストの増 加への対応が課題 ※ FargateやLambdaも同様、スケーリング時の起動時間を ゼロにはできない Amazon SQS
  29. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWSのマネージドサービスを利⽤することで、 可⽤性・スケーラビリティを実現 • フルマネージド型(サーバ管理不要)のメッセージキューサービス • ほぼ無制限のTPS(Transactions per second) • 利⽤した分だけの従量課⾦(API実⾏回数+データ転送量) • 分散キューモデルによる⾼い可⽤性を提供 料⾦例: (標準キュー、東京リージョン) 100万リクエストで0.40USD Amazon SQS
  30. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Amazon SQSの構成 プロデューサ コンシューマ キュー コンシューマが メッセージを 取りに⾏く キューに保存できるメッセージ数 無制限 ∞ メッセージは最⼤14⽇間保持可能 メッセージ…最⼤ 256KB のテキスト(XML, JSON, フォーマットなし) (1 秒あたりのトランザクション数) ︓ほぼ 無制限 …メッセージ
  31. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー プロデューサ コンシューマ 定期的に実⾏ ポーリング メッセージの受信 メッセージの削除 メッセージの送信
  32. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー プロデューサ コンシューマ 定期的に実⾏ ポーリング メッセージの受信 メッセージの削除 メッセージの送信
  33. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー プロデューサ コンシューマ API Reference https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/APIReference/API_Operations.html
  34. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー プロデューサ コンシューマ メッセージの送信 SendMessage
  35. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー 複数メッセージの送信 SendMessageBatch プロデューサ コンシューマ (最⼤10個)
  36. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. メッセージ送信側の実装例 キュー プロデューサ メッセージの送信 SendMessage # SQS client の作成 sqs = boto3.client('sqs’) # キューURL(宛先となるキュー) queue_url = ‘SQS_QUEUE_URL’ # キューにメッセージを送信 response = sqs.send_message( QueueUrl=queue_url, MessageBody='Hello World ! ' )
  37. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー プロデューサ コンシューマ メッセージを送信する側の 責務はここまで メッセージの送信
  38. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー プロデューサ コンシューマ ここからキューの中の メッセージを処理する責務は 受信側に移る メッセージの受信
  39. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー メッセージの受信 プロデューサ コンシューマ
  40. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー メッセージの受信 ReceiveMessage プロデューサ コンシューマ (最⼤10個)
  41. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キュー キューの仕組み プロデューサ コンシューマ メッセージの受信 ReceiveMessage (最⼤10個)
  42. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キュー キューの仕組み プロデューサ コンシューマ 可視制タイムアウト で 設定された期間は 受信できなくなる メッセージの受信 ReceiveMessage (最⼤10個) 可視制タイムアウトの 時間内に後続処理の 完了を⽬指す & 冪等性を担保した処理 にする(理想)
  43. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー メッセージの削除 プロデューサ コンシューマ
  44. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー メッセージの削除 DeleteMessage プロデューサ コンシューマ × n 回
  45. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー 複数メッセージの削除 DeleteMessageBatch プロデューサ コンシューマ (最⼤10個)
  46. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー プロデューサ コンシューマ まだある・・・
  47. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー プロデューサ コンシューマ 定期的に実⾏ ポーリング メッセージの受信 メッセージの削除
  48. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. メッセージ受信側の実装例 # SQS client の作成 sqs = boto3.client('sqs') # キューURL(宛先となるキュー) queue_url = 'SQS_QUEUE_URL' # キューからメッセージを受信 response = sqs.receive_message( QueueUrl=queue_url, MaxNumberOfMessages=10 ) # メッセージの取得 for message in response.get("Messages", []): message_body = message["Body"] # メッセージを使った処理 print(message_body) # メッセージ削除用の受信ハンドルの取得 receipt_handle = message['ReceiptHandle'] # キューから受信したメッセージを削除 sqs.delete_message( QueueUrl=queue_url, ReceiptHandle=receipt_handle ) さらに⾃前で必要 定期的に実⾏するための 仕組み(常駐プロセス) + スケールする仕組み キュー コンシューマ メッセージの受信 ReceiveMessage メッセージの削除 DeleteMessage × n 回 ポーリング
  49. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. メッセージ受信側の実装例 # SQS client の作成 sqs = boto3.client('sqs') # キューURL(宛先となるキュー) queue_url = 'SQS_QUEUE_URL' # キューからメッセージを受信 response = sqs.receive_message( QueueUrl=queue_url, MaxNumberOfMessages=10 ) # メッセージの取得 for message in response.get("Messages", []): message_body = message["Body"] # メッセージを使った処理 print(message_body) # メッセージ削除用の受信ハンドルの取得 receipt_handle = message['ReceiptHandle'] # キューから受信したメッセージを削除 sqs.delete_message( QueueUrl=queue_url, ReceiptHandle=receipt_handle ) さらに⾃前で必要 定期的に実⾏するための 仕組み(常駐プロセス) + スケールする仕組み キュー コンシューマ メッセージの受信 ReceiveMessage メッセージの削除 DeleteMessage × n 回 ポーリング AWS Lambda Amazon SQS
  50. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. SQS + Lambda アーキテクチャ
  51. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. SQS + Lambda の組み合わせ AWS Lambda Amazon SQS 受信処理の実装がシンプルになる + SQS と Lambda を組み合わせることで
  52. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. SQS のコンシューマとしての Lambda ・ポーリング(定期的な受信処理の呼び出し) ・メッセージ量にあわせた実⾏環境のスケーリング ・メッセージの削除処理などの実装 Lambda にオフロード メッセージの受信処理のために必要な処理
  53. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Lambda による実装⽅法 キュー Lambda LambdaのイベントソースとしてSQSのキューを指定
  54. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Lambda による SQS メッセージの受信 キュー AWS Lambda Lambda 関数 … • Lambda が⾃動でキューをポーリング • キューにメッセージがある場合、Lambda関数を実⾏する • Lambda 関数が正常に実⾏された場合はメッセージを⾃動で削除 • 1度の実⾏で 1〜10,000 レコードのメッセージをバッチで取得 • キューに残るメッセージの数に応じて⾃動で実⾏環境をスケール
  55. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. メッセージ受信の実装例( Lambda 関数の場合) def lambda_handler(event, context): for record in event['Records']: # メッセージを使った処理 message_body = record["body"] print(str(message_body)) メッセージ受信側の実装例 # SQS client の作成 sqs = boto3.client('sqs') # キューURL(宛先となるキュー) queue_url = 'SQS_QUEUE_URL' # キューからメッセージを受信 response = sqs.receive_message( QueueUrl=queue_url, MaxNumberOfMessages=10 ) # メッセージの取得 for message in response.get("Messages", []): message_body = message["Body"] # メッセージを使った処理 print(message_body) # メッセージ削除用の受信ハンドルの取得 receipt_handle = message['ReceiptHandle'] # キューから受信したメッセージを削除 sqs.delete_message( QueueUrl=queue_url, ReceiptHandle=receipt_handle ) さらに⾃前で必要 定期的に実⾏するための 仕組み(常駐プロセス) + スケールする仕組み キュー コンシューマ メッセージの受信 ReceiveMessage メッセージの削除 DeleteMessage × n 回 ポーリング シンプル︕
  56. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. SQS + Lambda ⻩⾦パターン によるメリット AWS Lambda Amazon SQS + SQS と Lambda を組み合わせることによって 以下の受信処理の実装をLambdaにオフロードでき 実装者はメッセージの処理に集中することができるようになる ・ポーリング(定期的な受信処理の呼び出し) ・メッセージ量にあわせた実⾏環境のスケーリング ・メッセージの削除処理などの実装
  57. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. (補⾜) Lambda で設定可能な項⽬ LambdaでSQSをイベントソースとしてマッピングする際 設定可能な項⽬は以下の通り ① バッチサイズ ② バッチウィンドウ ③ バッチ項⽬の失敗の報告 ④ フィルタリング条件 NEW (2021/11〜)
  58. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. (補⾜)Lambda関数のスケーリング︓標準キューの場合 https://aws.amazon.com/blogs/compute/understanding-how-aws-lambda-scales-when-subscribed-to-amazon- sqs-queues/ Lambda は、メッセージを同時に5つのバッチ処理で取得し、5 つのLambda 関数を実⾏するところからスタート キュー Lambda 関数
  59. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. (補⾜)Lambda関数のスケーリング︓標準キューの場合 https://aws.amazon.com/blogs/compute/understanding-how-aws-lambda-scales-when-subscribed-to-amazon- sqs-queues/ キュー ✖ n 1 分あたり最⼤ 60 個の関数 を追加 キューにさらに多くのメッセージがある場合、 Lambda は 1 分あたり最⼤ 60 個の関数 (最⼤ 1,000 個の関数) を追加してメッセージを処理
  60. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. (補⾜)Lambda関数のスケーリング︓標準キューの場合 https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-sqs-scaling/ ただし Lambda 関数がエラーをスローする場合、キューにメッセージが残っている場合でも 誤った呼び出しを最⼩限に抑えるため、 Lambda は関数をスケールダウンさせる キュー ✖ n Lambda 関数で例外発⽣ → スケールダウン メッセージの不備などででエラーが発⽣する場合 正常処理できないメッセージが残り続けて 何度も例外が発⽣ ↓ Lambda関数の予期せぬスケールダウンを招く ↓ デッドレターキュー (DLQ) の使⽤を推奨 ※受信処理の呼出し回数の最⼤値を設定可能 (回数の最⼤値を超える場合はDLQとして別のキューに送り 再処理されないようにする仕組み ※キューに設定) ※Lambdaでなくても DLQの使⽤は要検討︕
  61. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. まとめ
  62. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾮同期処理とは 「処理の結果を待つ必要が “ない” サービスの呼び出し」 再 掲
  63. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 同期処理と⾮同期処理を使い分ける 注⽂処理 サービス 在庫管理 サービス 配送処理 サービス EC サイト 外部システム (配送事業者) 処理結果を待つ 必要がある 処理結果を待つ 必要がない エンドユーザ 快 適 ︕ 同期処理で実装 ⾮同期処理で実装 再 掲
  64. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾮同期処理にすることのメリット ⾮同期処理をアプリケーション設計に取り⼊れる ① 応答性の改善 ② 耐障害性・可⽤性の向上 ③ スループットの向上 ④ コスト削減 サービス間を「疎結合」につなぐことによって 以下のメリットが期待できる 再 掲
  65. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWSのマネージドサービスを利⽤することで、 可⽤性・スケーラビリティを実現 • フルマネージド型(サーバ管理不要)のメッセージキューサービス • ほぼ無制限の TPS(Transactions per second) • 利⽤した分だけの従量課⾦(API 実⾏回数+データ転送量) • 分散キューモデルによる⾼い可⽤性を提供 料⾦例: (標準キュー、東京リージョン) 100万リクエストで0.40USD Amazon SQS 再 掲
  66. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. キューの仕組み キュー プロデューサ コンシューマ 定期的に実⾏ ポーリング メッセージの受信 メッセージの削除 メッセージの送信 再 掲
  67. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. SQS + Lambda ⻩⾦パターン によるメリット SQS と Lambda を組み合わせることによって 以下の受信処理の実装をLambdaにオフロードでき 実装者はメッセージの処理に集中することができるようになる ・ポーリング(定期的な受信処理の呼び出し) ・メッセージ量にあわせた実⾏環境のスケーリング ・メッセージの削除処理などの実装
  68. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 本⽇のゴール AWS Lambda Amazon SQS Amazon SQS + AWS Lambda ⻩⾦パターン 「いいね︕」 となって、やってみたくなる︕︕
  69. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Thank you! © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Ichino Shraishi @piko_san_0000