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
820
AWS CloudFormationによる Infrastructure as Codeの実現
hira
0
180
マイクロサービス化に向けて
hira
0
150
CI(継続的インテグレーション)
hira
0
84
Other Decks in Technology
See All in Technology
Geospatialの世界最前線を探る [2025年版]
dayjournal
1
210
職種別ミートアップで社内から盛り上げる アウトプット文化の醸成と関係強化/ #DevRelKaigi
nishiuma
2
160
なぜAWSを活かしきれないのか?技術と組織への処方箋
nrinetcom
PRO
4
700
AWS Top Engineer、浮いてませんか? / As an AWS Top Engineer, Are You Out of Place?
yuj1osm
2
210
成長自己責任時代のあるきかた/How to navigate the era of personal responsibility for growth
kwappa
4
310
【Kaigi on Rails 事後勉強会LT】MeはどうしてGirlsに? 私とRubyを繋いだRail(s)
joyfrommasara
0
230
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
11
79k
AI駆動開発を推進するためにサービス開発チームで 取り組んでいること
noayaoshiro
0
250
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
4
460
Escaping_the_Kraken_-_October_2025.pdf
mdalmijn
0
160
Modern_Data_Stack最新動向クイズ_買収_AI_激動の2025年_.pdf
sagara
0
240
10年の共創が示す、これからの開発者と企業の関係 ~ Crossroad
soracom
PRO
1
710
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
53
7.8k
Visualization
eitanlees
149
16k
Thoughts on Productivity
jonyablonski
70
4.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Illustrated Children's Guide to Kubernetes
chrisshort
49
51k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Building an army of robots
kneath
306
46k
How to Think Like a Performance Engineer
csswizardry
27
2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
54
3k
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つ • システム間の依存関係を排除でき障害にも強く、マイクロサービス化において必要な技術 クラウド・マイクロサービス勉強(第二回)