Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS研修 Amazon SNSとAmazon SQS
Search
Recruit
PRO
August 18, 2021
Technology
4.9k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS研修 Amazon SNSとAmazon SQS
2021年度リクルート エンジニアコース新人研修の講義資料です
Recruit
PRO
August 18, 2021
More Decks by Recruit
See All by Recruit
双方向推薦システムにおける長期的マッチング最大化に向けた代理目的関数の設計と実証
recruitengineers
PRO
0
54
就職⽀援サービスにおけるキャリアアドバイザーのシフトスケジューリング
recruitengineers
PRO
1
150
Model Routerを使った逐次LLM選択による毀損低減効果の検証
recruitengineers
PRO
1
40
ストリーム処理基盤のFlink移行検証と適材適所の実践
recruitengineers
PRO
2
70
AI 時代の Platform Engineering
recruitengineers
PRO
2
400
巨大プラットフォームを進化させる「第3のROI」
recruitengineers
PRO
2
3.4k
データ戦略を加速させる プラットフォーム エンジニアリングと進化的アーキテクチャ
recruitengineers
PRO
2
90
まなび領域における生成AI活用事例
recruitengineers
PRO
2
290
AI時代にエンジニアはどう成長すれば良いのか?
recruitengineers
PRO
1
530
Other Decks in Technology
See All in Technology
AIエージェントが名古屋の猛暑からあなたを守る
happysamurai294
0
120
攻撃者視点で考えるDetection Engineering
cryptopeg
3
1.8k
連合学習と機密コンピューティング
lycorptech_jp
PRO
0
120
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
1k
Android の公式 Skill / Android skills
yanzm
0
150
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.4k
20260619 私の日常業務での生成 AI 活用
masaruogura
1
210
MCP Appsを作ってみよう
iwamot
PRO
4
650
FDE という解 ― 暗黙知と明示知をつなぐ、伴走型エンジニアリング ―
otanet
0
160
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
240
AGENTS.mdとSkillsで始めるAIエージェント活用
sonoda_mj
3
210
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.4k
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Paper Plane (Part 1)
katiecoart
PRO
0
9k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
My Coaching Mixtape
mlcsv
0
150
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Transcript
Amazon SNS と Amazon SQS 株式会社リクルート クラウドアーキテクトグループ
Amazon SNS • フルマネージドなPub/Subメッセージングサービス 2
Pub/Subとは︖ メッセージを投げ込む(Publish)すると指定したターゲット(Subscriber)にメッ セージを配信するサービス 新聞の発⾏元(Publisher) と購読者(Subscriber)の関係における 配送業者がPub/Subサービスに当たる 3 新聞社 (Publisher) 配送業者
や販売店 多数の購読者 (Subscribers)
新聞購読の例 Amazon SNSにおける概念 • Topic • メッセージのやり取りを中継する論理的なチャンネル • Publisher •
メッセージの発⾏元 • Subscriber • メッセージの送信先 4 新聞社 (Publisher) 配送業者 や販売店 多数の購読者 (Subscribers) Topic Publisher Subscriber Subscriber Subscriber Subscriber Amazon SNS
Amazon SNSが提供する価値 ① 機能 Pub/Sub機能の提供 メッセージフィルタリング ② ⾮機能
アクセスコントロール • Topicへのアクセスコントロール リトライ処理 • メッセージがSubscriberに 届かなかった場合のリトライ処理 ⾼い性能と可⽤性 • とにかく⼤量のメッセージを処理できる • その他OSやハードウェア管理 • いわゆるマネージドサービスの ⼀般的な提供価値 5 ⾯倒な⾮機能要件を引き受けてくれる ための仕組みを提供してくれると 考えてもよいです
• メッセージフィルタリング • アクセスコントロール • リトライ処理 6
• メッセージフィルタリング • アクセスコントロール • リトライ処理 7
メッセージフィルタリング(Filter Policy) Subscriberが受け取りたい機能だけを受け取る機能 8 不動産会社 (Publisher) 広告ポスティング業者 (Topic) { "price"
: [{ "numeric": ["<=", 3000] }] } { "price" : [{ "numeric": [">=", 10000] }] } FilterPolicyB FilterPolicyA 広告配布先 A (Subscriber A) 広告配布先 B (Subscriber B) 3000万円以下の物件のみ紹介してほしい 1億円以上の物件のみ紹介してほしい "MessageAttributes": { "price": { "Type": "Number", "Value": 12000 } } MessageAttributes 1億200万円の物件︕
メッセージフィルタリング(Filter Policy) Subscriberが受け取りたい機能だけを受け取る機能 9 不動産会社 (Publisher) 広告ポスティング業者 (Topic) { "price"
: [{ "numeric": ["<=", 3000] }] } { "price" : [{ "numeric": [">=", 10000] }] } FilterPolicyB FilterPolicyA 広告配布先 A (Subscriber A) 広告配布先 B (Subscriber B) 3000万円以下の物件のみ紹介してほしい 1億円以上の物件のみ紹介してほしい "MessageAttributes": { "price": { "Type": "Number", "Value": 12000 } } MessageAttributes 1億200万円の物件︕ 広告配布先Bのみが広告を受け取る
• メッセージフィルタリング • アクセスコントロール • リトライ処理 10
アクセスコントロール 誰でもPublisherやSubscriberになれるとまずいので、IAMやリソースポリシーで 権限を制御します 11 M新聞社 配送業者 や販売店 Y新聞社 うち、Y新聞専売なので NGなんです。すみません。
購読料払ってないので、 NGです。 { "Effect": "Allow", "Principal": { "AWS": "Y新聞社" }, "Action": [ "SNS:Publish" ], "Resource": "業者A" } 業者A { "Effect": "Allow", "Principal": { "AWS": "購読者*" }, "Action": [ "SNS:Subscribe", "SNS:Receive", ...., ], "Resource": "業者A" } 購読者A 購読者B 購読者C ⾮購読者X リソースポリシー
• メッセージフィルタリング • アクセスコントロール • リトライ処理 12
リトライ処理 何かしらの理由でSubscriberにメッセージが届けられなかった場合に メッセージを再送します。 13 Topic Publisher Subscriber 1 Subscriber 4
Subscriber 3 Subscriber 2 Subscriber 1に対しては再送処理が実⾏される
リトライ処理 SNSでは配信失敗時のリトライも⼀定のルールに従って実施する 14 https://docs.aws.amazon.com/ja_jp/sns/latest/dg/sns-message-delivery-retries.html
Amazon SNSまとめ Amazon SNSを利⽤することで、⾮常に多くのメッセージを安全かつ確実、柔軟 に多くの宛先にメッセージを配信することができます。 15 Topic Publisher Subscriber Subscriber
Subscriber Subscriber Amazon SNS
Amazon SNSの残った課題 Amazon SNSは、受信したメッセージを即座に宛先に配信します。配信先が処理 できない場合もメッセージを配信します。 Publisherが⾼速でSubscriberが低速な場合、これは⼤きな問題となります。 これを解決するための⼿段の1つとしてAmazon SQSを利⽤することが多いです。 16 Topic
Publisher Subscriber 2 毎秒100万メッセージ をPublishする 毎秒80万メッセージ を処理する 差分の20万メッセージはどこへ...??
Amazon SQS • フルマネージドなキューサービス 17
キューとは︖ 18 特定の処理のための待ち⾏列のこと (複数台の)レジ レジでの処理待ちの⾏列 (キュー)
キューの必要性 ① メッセージのバッファリング メッセージを整列させて処理できる範囲で徐々に処理していく レジ列に並んで待ってもらうことでレジの処理がパンクすることを防ぐ ② 並列性の向上による処理性能向上
レジの台数を増やすほど処理性能を向上させる 19 ) ( そんなに一度に来られても 対応できひん
Amazon SQSの基本概念 • Producer • Queueにメッセージを投げ込むコンポーネント • Queue • メッセージを格納してバッファリングするコンポーネント
• Consumer • Queueに格納されたメッセージを取り出して処理するコンポーネント 20 Queue Producer Consumer Message Message … Amazon SQS enqueue dequeue
Amazon SQSが提供するもの • キューとしての機能(メッセージのエンキュー・デキュー, メッセージの保持) • ⾮常に⾼い性能と可⽤性 • デッドレターキュー •
可視性タイムアウト • 遅延キュー/メッセージタイマー • アクセス制御 • メッセージ暗号化 21
Amazon SQSが提供するもの • キューとしての機能(メッセージのエンキュー・デキュー, メッセージの保持) • ⾮常に⾼い性能と可⽤性 • デッドレターキュー •
可視性タイムアウト • 遅延キュー/メッセージタイマー • アクセス制御 • メッセージ暗号化 22
デッドレターキュー 処理に失敗したメッセージはキューに戻されるが、⼀定回数以上連続して 処理に失敗したメッセージを別のキュー(デッドレターキュー)に格納して 別の⽅法で処理したりメッセージを確認して処理に失敗する原因を分析するための 仕組みです。 23 Queue Producer Consumer Message
Message … enqueue dequeue DeadLetterQueue 処理に失敗した Message 処理に失敗した メッセージを enqueue
Amazon SQSが提供するもの • キューとしての機能(メッセージのエンキュー・デキュー, メッセージの保持) • ⾮常に⾼い性能と可⽤性 • デッドレターキュー •
可視性タイムアウト • 遅延キュー/メッセージタイマー • アクセス制御 • メッセージ暗号化 24
可視性タイムアウト Consumerにメッセージが重複して取得される可能性を下げるために、 処理中のメッセージは他のConsumerからは⾒えなくする仕組み 25 Queue Producer Consumer Message Message …
enqueue dequeue Consumer Consumer 同⼀メッセージが重 複してConsumerに 取得される可能性が ある 取得されたメッセー ジは⼀時的に⾒えな くする(可視性タイム アウトで設定した時 間分だけ)
Amazon SQSが提供するもの • キューとしての機能(メッセージのエンキュー・デキュー, メッセージの保持) • ⾮常に⾼い性能と可⽤性 • デッドレターキュー •
可視性タイムアウト • 遅延キュー/メッセージタイマー • アクセス制御 • メッセージ暗号化 26
遅延キュー・メッセージタイマー • 遅延キュー • キューとしてenqueueされたメッセージを取得できるようにするまでの待ち時間を設定できます • メッセージタイマー • Producer側でメッセージ毎に取得できるようにするまでの待ち時間を設定できます 27
Queue Producer Consumer Message Message … enqueue dequeue Consumer Consumer 遅延キューまたは、メッ セージタイマーに指定され た時間が経過すると Consumerでメッセージを 取得できるようになります。 キュー単位で 配信を遅延させる時間を 設定できます。 遅延キュー メッセージタイマー メッセージ単位で配信を 遅延させる時間を設定で きます。
遅延キュー・メッセージタイマー • 遅延キュー • キューとしてenqueueされたメッセージを取得できるようにするまでの待ち時間を設定できます • メッセージタイマー • Producer側でメッセージ毎に取得できるようにするまでの待ち時間を設定できます 28
Queue Producer Consumer Message Message … enqueue dequeue Consumer Consumer 遅延キューまたは、メッ セージタイマーに指定され た時間が経過すると Consumerでメッセージを 取得できるようになります。 キュー単位で 配信を遅延させる時間を 設定できます。 遅延キュー メッセージタイマー メッセージ単位で配信を 遅延させる時間を設定で きます。 メッセージを正常に処理するにあたっての準備のために 事前準備の期間の確保が必要な場合に利⽤する
Amazon SQSが提供するもの • キューとしての機能(メッセージのエンキュー・デキュー, メッセージの保持) • ⾮常に⾼い性能と可⽤性 • デッドレターキュー •
可視性タイムアウト • 遅延キュー/メッセージタイマー • アクセス制御 • メッセージ暗号化 29
アクセス制御 • IAMまたはSQSのリソースポリシーをもちいてキューへのアクセスを制御します • Producer・Consumer両⽅の制御が可能です 30 リソースポリシーの設定画⾯ Queue Producer Consumer
Message Message … enqueue dequeue Consumer キューに対してのProducer, Consumerの アクセス可否やアクセス可能な範囲を定義できます
メッセージ暗号化 • 転送中のデータはHTTPSで保護 • 保管中のデータはサーバサイドで暗号化して保護することができます • AWS KMSと組み合わせてメッセージの暗号化が可能です 31 Queue
Producer Consumer Message Message … enqueue dequeue Consumer Consumer HTTPS による暗号化 AWS KMSによる暗号化 HTTPS による暗号化 転送中 保管中 転送中
Amazon SNSとAmazon SQSの組み合わせ 32 Topic Publisher Subscriber Subscriber Subscriber Subscriber
Amazon SNS Queue Producer Consumer Message Message … Amazon SQS enqueue dequeue
Amazon SNSとAmazon SQSの組み合わせ Amazon SNSとAmazon SQSを組み合わせることで メッセージのファンアウトとバッファリング(とリトライ)をともなった⾮同期処理 を⽐較的容易に実現することができる 33 Topic
Publisher Subscriber / Producer Subscriber / Producer Subscriber / Producer Subscriber / Producer Consumer Consumer Consumer Consumer Consumer Consumer Consumer Consumer Consumer Consumer Consumer Consumer Queue Queue Queue Queue