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
4.2k
AWS研修 Amazon SNSとAmazon SQS
2021年度リクルート エンジニアコース新人研修の講義資料です
Recruit
PRO
August 18, 2021
Tweet
Share
More Decks by Recruit
See All by Recruit
明日からできる!技術的負債の返済を加速するための実践ガイド~『ホットペッパービューティー』の事例をもとに~
recruitengineers
PRO
3
390
RECRUIT TECH CONFERENCE 2025 プレイベント【関田】
recruitengineers
PRO
0
75
RECRUIT TECH CONFERENCE 2025 プレイベント【高橋】
recruitengineers
PRO
0
160
RECRUIT TECH CONFERENCE 2025 プレイベント【岡本】
recruitengineers
PRO
2
89
RECRUIT TECH CONFERENCE 2025 プレイベント【恒川】
recruitengineers
PRO
0
78
20250130_『SUUMO』の裏側!第2弾 ~機械学習エンジニアリング編
recruitengineers
PRO
1
1k
Asset Centric な データ変換パイプラインの攻略法
recruitengineers
PRO
1
150
Kotlin Multiplatformのポテンシャル
recruitengineers
PRO
2
220
デザイン初め新年会2025_川端_PdM Days2025
recruitengineers
PRO
1
81
Other Decks in Technology
See All in Technology
室長と気ままに学ぶマイクロソフトのビジネスアプリケーションとビジネスプロセス
ryoheig0405
0
360
ホワイトボードチャレンジ 説明&実行資料
ichimichi
0
130
Amazon S3 Tablesと外部分析基盤連携について / Amazon S3 Tables and External Data Analytics Platform
nttcom
0
130
リアルタイム分析データベースで実現する SQLベースのオブザーバビリティ
mikimatsumoto
0
1.3k
開発組織のための セキュアコーディング研修の始め方
flatt_security
3
2.3k
RSNA2024振り返り
nanachi
0
570
トラシューアニマルになろう ~開発者だからこそできる、安定したサービス作りの秘訣~
jacopen
2
2k
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
12
2.2k
ユーザーストーリーマッピングから始めるアジャイルチームと並走するQA / Starting QA with User Story Mapping
katawara
0
200
The Future of SEO: The Impact of AI on Search
badams
0
190
レビューを増やしつつ 高評価維持するテクニック
tsuzuki817
1
700
Classmethod AI Talks(CATs) #16 司会進行スライド(2025.02.12) / classmethod-ai-talks-aka-cats_moderator-slides_vol16_2025-02-12
shinyaa31
0
100
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Rails Girls Zürich Keynote
gr2m
94
13k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Designing Experiences People Love
moore
140
23k
How STYLIGHT went responsive
nonsquared
98
5.4k
Music & Morning Musume
bryan
46
6.3k
What's in a price? How to price your products and services
michaelherold
244
12k
Embracing the Ebb and Flow
colly
84
4.6k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Side Projects
sachag
452
42k
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