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
450
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
540
AWS CloudFormationによる Infrastructure as Codeの実現
hira
0
120
マイクロサービス化に向けて
hira
0
86
CI(継続的インテグレーション)
hira
0
57
Other Decks in Technology
See All in Technology
"とにかくやってみる"で始めるAWS Security Hub
maimyyym
2
100
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
120
アプリエンジニアのためのGraphQL入門.pdf
spycwolf
0
110
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
330
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
140
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
190
SRE×AIOpsを始めよう!GuardDutyによるお手軽脅威検出
amixedcolor
1
210
CysharpのOSS群から見るModern C#の現在地
neuecc
2
3.7k
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
130
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
210
アジャイルチームがらしさを発揮するための目標づくり / Making the goal and enabling the team
kakehashi
3
170
Taming you application's environments
salaboy
0
200
Featured
See All Featured
Being A Developer After 40
akosma
87
590k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
430
What's in a price? How to price your products and services
michaelherold
243
12k
Gamification - CAS2011
davidbonilla
80
5k
Side Projects
sachag
452
42k
Building Your Own Lightsaber
phodgson
103
6.1k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.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つ • システム間の依存関係を排除でき障害にも強く、マイクロサービス化において必要な技術 クラウド・マイクロサービス勉強(第二回)