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
MQ(メッセージキュー)入門
Search
HIRA
June 25, 2019
Technology
0
720
MQ(メッセージキュー)入門
2019.6.25 社内勉強会発表資料
2022.5.21 SlideShareから移行
HIRA
June 25, 2019
Tweet
Share
More Decks by HIRA
See All by HIRA
脱VM!リモートコンテナによる開発
hira
0
840
AWS CloudFormationによる Infrastructure as Codeの実現
hira
0
180
マイクロサービス化に向けて
hira
0
150
CI(継続的インテグレーション)
hira
0
84
Other Decks in Technology
See All in Technology
Implementing and Evaluating a High-Level Language with WasmGC and the Wasm Component Model: Scala’s Case
tanishiking
0
180
AI AgentをLangflowでサクッと作って、1日働かせてみた!
yano13
1
160
JSConf JPのwebsiteをGatsbyからNext.jsに移行した話 - Next.jsの多言語静的サイトと課題
leko
2
190
OpenTelemetry が拡げる Gemini CLI の可観測性
phaya72
2
2.3k
Behind Postgres 18: The People, the Code, & the Invisible Work | Claire Giordano | PGConfEU 2025
clairegiordano
0
140
ラスベガスの歩き方 2025年版(re:Invent 事前勉強会)
junjikoide
0
170
頭部ふわふわ浄酔器
uyupun
0
110
[VPoE Global Summit] サービスレベル目標による信頼性への投資最適化
satos
0
250
SCONE - 動画配信の帯域を最適化する新プロトコル
kazuho
1
380
生成AI時代のPythonセキュリティとガバナンス
abenben
0
140
事業開発におけるDify活用事例
kentarofujii
5
1.5k
オブザーバビリティと育てた ID管理・認証認可基盤の歩み / The Journey of an ID Management, Authentication, and Authorization Platform Nurtured with Observability
kaminashi
1
720
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Automating Front-end Workflow
addyosmani
1371
200k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Being A Developer After 40
akosma
91
590k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
Six Lessons from altMBA
skipperchong
29
4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Transcript
MQ(メッセージキュー)入門 平田憲司 2019.6.25 クラウド・マイクロサービス勉強会(第2回)
自己紹介 平田憲司 主な担当:アーキテクチャ設計、基盤構築 https://qiita.com/kj_hira Qiita クラウド・マイクロサービス勉強(第二回)
アジェンダ 1. MQとは? 2. MQの特徴 3. MQミドルウェア 4. 事例紹介 5.
困ったこと クラウド・マイクロサービス勉強(第二回)
1.MQとは? 2. MQの特徴 3. MQミドルウェア 4. 事例紹介 5. 困ったこと クラウド・マイクロサービス勉強(第二回)
MQとは? メッセージキュー。非同期型通信プロトコル。 システム間でメッセージのやりとりを行う際に利用する。 主に、マイクロサービスアーキテクチャや分散処理システムの非同期通信に おいて利用される。 とても歴史のある技術。 クラウド・マイクロサービス勉強(第二回)
メッセージキューを使わない場合の例 MQとは? Aさんは、Bさんに直接仕事を依頼する。 Bさんが忙しいときは、Aさんは待っていないといけない。 Aさん Bさん クラウド・マイクロサービス勉強(第二回)
メッセージキューを使った場合の例 MQとは? Aさんは、机に仕事の依頼物を置いておく。Bさんは都合の良いタ イミングで机から依頼物を受け取る。 Bさんが忙しいときでも、Aさんは待つ必要が無い。 Aさん Bさん 机 クラウド・マイクロサービス勉強(第二回)
MQのメリット① 柔軟に非同期連携できる 受信側が送信側の都合に合わせなくて良い。 送信側は好きなタイミングで好きな量を送り、受信側は好きなタイミングで好 きな量を受信できる。 送信側 受信側 MQ クラウド・マイクロサービス勉強(第二回)
MQのメリット② 障害に強い 受信側のシステムが停止しても、送信側に影響しない。 送信側はキューに送信し続けられる。 クラウドとオンプレのネットワーク障害の際に役立つ。 (注意:送信側の環境にMQを用意する必要がある) 送信側 受信側 MQ クラウド・マイクロサービス勉強(第二回)
MQのメリット③ システム間の依存関係を排除できる 非同期連携することができるため、送信側と受信側の依存関係を排除できる。 マイクロサービス化で必要となるシステム間の疎結合化が実現できる。 送信側 受信側 MQ クラウド・マイクロサービス勉強(第二回)
1. MQとは? 2.MQの特徴 3. MQミドルウェア 4. 事例紹介 5. 困ったこと クラウド・マイクロサービス勉強(第二回)
MQの特徴 • Pub/Subメッセージ • FIFO • 遅延キュー • 優先順位 •
ロック • DLQ(デッドレターキュー) クラウド・マイクロサービス勉強(第二回)
MQの特徴 Pub/Subメッセージ 1つのメッセージを複数の受け手に送信でき、かつ並列に処理させられる。 ファンアウト設計パターンを適用できる。 参考:Fanoutパターン http://aws.clouddesignpattern.org/index.php/CDP:Fanout%E3%83%91%E3%82%BF%E3%83 %BC%E3%83%B3 サムネイル生成 メタデータスキャン 画像認識
トピック MQ MQ MQ 送信側 publisher subscriber クラウド・マイクロサービス勉強(第二回)
MQ MQの特徴 FIFO(First In First Out) MQの設定で送信した順で受信されるようにできる。 デフォルトでは、順不同であることが多い。 送信側 受信側
5 4 3 2 1 クラウド・マイクロサービス勉強(第二回)
MQの特徴 遅延キュー メッセージの配信を指定の時間分遅らせることができる。 例えば、送信元の処理が完了した頃に実行してほしい場合などに利用 クラウド・マイクロサービス勉強(第二回)
MQの特徴 優先順位 キューに対し、優先度を設定できる。 例えば、一般ユーザーよりプレミアム(有料会員)ユーザーの処理を優先させ たい場合などに活用できる 4 2 1 5 3
一般会員 有料会員 クラウド・マイクロサービス勉強(第二回)
MQの特徴 メッセージのロック 受信したメッセージが処理されている間、他からメッセージを同時に処理され ることを防ぐためロックすることができる。 受信側A 受信側B クラウド・マイクロサービス勉強(第二回)
MQの特徴 DLQ(デッドレターキュー) 規定回数受信に失敗した場合、メッセージを退避させる。 受信側 DLQ 退避したキューはリトライ処理によって後で処理する。 クラウド・マイクロサービス勉強(第二回)
1. MQとは? 2. MQの特徴 3.MQミドルウェア 4. 事例紹介 5. 困ったこと クラウド・マイクロサービス勉強(第二回)
代表的なMQミドルウェア • ActiveMQ (Apache) • RabbitMQ (Pvotal) • Amazon SQS
(AWS) など その他、多くのミドルウェアがある。 クラウド・マイクロサービス勉強(第二回)
1. MQとは? 2. MQの特徴 3. MQミドルウェア 4.事例紹介 5. 困ったこと クラウド・マイクロサービス勉強(第二回)
オンプレ 事例紹介① - クラウドとオンプレのデータ連携 連携元 MQ クラウド 連携先 ETL クラウド・マイクロサービス勉強(第二回)
事例紹介② - 画像OCR変換API API(受付) OCR処理 MQ ストレージ DB 画像 クラウド・マイクロサービス勉強(第二回)
API Gateway Lambda SQS API Gateway Lambda 変換リクエスト 結果リクエスト S3
EC2 画像 CSV DynamoDB 履歴情報 変換結果 非同期 ポーリング キュー情報 ストレージ 事例紹介② - 画像OCR変換API (AWSアーキテクチャ例) クラウド・マイクロサービス勉強(第二回)
1. MQとは? 2. MQの特徴 3. MQミドルウェア 4. 事例紹介 5.困ったこと クラウド・マイクロサービス勉強(第二回)
困ったこと 順序保証が必要なケース DLQに入ったデータと同じ更新対象のデータが処理されるような場合。 後続データが先に処理されてしまい、失敗したデータをリトライしてしまうと巻き戻ることに。 対応方法としては、タイムスタンプ(更新日時)も合わせて持たせ、更新対象のデータ と比較して処理するか判定させた。 クラウド・マイクロサービス勉強(第二回)
困ったこと 並列処理の完了を監視する必要があるケース 各処理が完了したかDBなどでステータス管理する必要がある。 処理A 処理C 処理B MQ MQ MQ 他に良い方法があればぜひ教えてください
クラウド・マイクロサービス勉強(第二回)
まとめ • システム間で非同期連携する際に有効な通信方式の1つ • システム間の依存関係を排除でき障害にも強く、マイクロサービス化において必要な技術 クラウド・マイクロサービス勉強(第二回)