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
20250130_『SUUMO』の裏側!第2弾 ~機械学習エンジニアリング編
recruitengineers
PRO
0
210
顧客の声を集めて活かすリクルートPdMのVoC活用事例を徹底解剖!〜プロデザ!〜
recruitengineers
PRO
0
210
Asset Centric な データ変換パイプラインの攻略法
recruitengineers
PRO
1
120
Kotlin Multiplatformのポテンシャル
recruitengineers
PRO
2
190
デザイン初め新年会2025_川端_PdM Days2025
recruitengineers
PRO
0
50
Azure Functions HTTPトリガーにおけるタイムアウトでハマったこと
recruitengineers
PRO
2
350
実務につなげる数理最適化
recruitengineers
PRO
7
970
うちにも入れたいDatadog
recruitengineers
PRO
2
1.7k
リクルートのデータ基盤 Crois 年3倍成長!1日40,000コンテナの実行を支える AWS 活用とプラットフォームエンジニアリング
recruitengineers
PRO
3
530
Other Decks in Technology
See All in Technology
What the history of the web can teach us about the future of AI
inesmontani
PRO
0
100
RevOpsへ至る道 データ活用による事業革新への挑戦 / path-to-revops
pei0804
3
820
CloudWatch Container Insightsを使ったAmazon ECSのリソース監視
umekou
1
130
“自分”を大切に、フラットに。キャリアチェンジしてからの一年 三ヶ月で見えたもの。
maimyyym
0
310
ソフトウェア開発現代史:製造業とソフトウェアは本当に共存できていたのか?品質とスピードを問い直す
takabow
15
5.4k
マルチデータプロダクト開発・運用に耐えるためのデータ組織・アーキテクチャの遷移
mtpooh
0
260
DeepSeek on AWS
hariby
1
140
HCP TerraformとAzure:イオンスマートテクノロジーのインフラ革新 / HCP Terraform and Azure AEON Smart Technology's Infrastructure Innovation
aeonpeople
3
1k
Makuake*UPSIDER_LightningTalk
upsider_tech
0
230
ソフトウェアアーキテクトのための意思決定術: Software Architecture and Decision-Making
snoozer05
PRO
17
4.1k
Grid表示のレイアウトで Flow layoutsを使う
cffyoha
1
150
Server Side Swift 実践レポート: 2024年に案件で採用して見えた課題と可能性
yusuga
1
430
Featured
See All Featured
Making Projects Easy
brettharned
116
6k
Docker and Python
trallard
43
3.2k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
380
What's in a price? How to price your products and services
michaelherold
244
12k
A better future with KSS
kneath
238
17k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
Visualization
eitanlees
146
15k
Six Lessons from altMBA
skipperchong
27
3.6k
A Philosophy of Restraint
colly
203
16k
Code Reviewing Like a Champion
maltzj
521
39k
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