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
700
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
810
AWS CloudFormationによる Infrastructure as Codeの実現
hira
0
180
マイクロサービス化に向けて
hira
0
150
CI(継続的インテグレーション)
hira
0
82
Other Decks in Technology
See All in Technology
Django's GeneratedField by example - DjangoCon US 2025
pauloxnet
0
150
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
470
自作JSエンジンに推しプロポーザルを実装したい!
sajikix
1
190
roppongirb_20250911
igaiga
1
240
Generative AI Japan 第一回生成AI実践研究会「AI駆動開発の現在地──ブレイクスルーの鍵を握るのはデータ領域」
shisyu_gaku
0
310
はじめてのOSS開発からみえたGo言語の強み
shibukazu
3
900
ハードウェアとソフトウェアをつなぐ全てを内製している企業の E2E テストの作り方 / How to create E2E tests for a company that builds everything connecting hardware and software in-house
bitkey
PRO
1
160
LLM時代のパフォーマンスチューニング:MongoDB運用で試したコンテキスト活用の工夫
ishikawa_pro
0
160
初めてAWSを使うときのセキュリティ覚書〜初心者支部編〜
cmusudakeisuke
1
270
AWSで始める実践Dagster入門
kitagawaz
1
690
AIをプライベートや業務で使ってみよう!効果的な認定資格の活かし方
fukazawashun
0
100
スマートファクトリーの第一歩 〜AWSマネージドサービスで 実現する予知保全と生成AI活用まで
ganota
2
280
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
We Have a Design System, Now What?
morganepeng
53
7.8k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Practical Orchestrator
shlominoach
190
11k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Building Adaptive Systems
keathley
43
2.7k
YesSQL, Process and Tooling at Scale
rocio
173
14k
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つ • システム間の依存関係を排除でき障害にも強く、マイクロサービス化において必要な技術 クラウド・マイクロサービス勉強(第二回)