SlideShare a Scribd company logo
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つ
• システム間の依存関係を排除でき障害にも強く、マイクロサービス化において必要な技術
クラウド・マイクロサービス勉強(第二回)

More Related Content

PDF
ヤフー発のメッセージキュー「Pulsar」のご紹介
PDF
Linux女子部 systemd徹底入門
PDF
分散トレーシング技術について(Open tracingやjaeger)
PPTX
コンテナネットワーキング(CNI)最前線
PDF
Keycloak拡張入門
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
ヤフー発のメッセージキュー「Pulsar」のご紹介
Linux女子部 systemd徹底入門
分散トレーシング技術について(Open tracingやjaeger)
コンテナネットワーキング(CNI)最前線
Keycloak拡張入門
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理

What's hot (20)

PPTX
世界一わかりやすいClean Architecture
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
PDF
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
PPTX
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
PDF
マルチテナントのアプリケーション実装〜実践編〜
PPTX
マイクロサービスにおける 結果整合性との戦い
PDF
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
PPTX
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
PPTX
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
PPTX
分散システムについて語らせてくれ
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PPTX
本当は恐ろしい分散システムの話
PPTX
Spring Boot ユーザの方のための Quarkus 入門
ODP
Guide To AGPL
PDF
DevOps with Database on AWS
PPTX
Redisの特徴と活用方法について
世界一わかりやすいClean Architecture
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
マルチテナントのアプリケーション実装〜実践編〜
マイクロサービスにおける 結果整合性との戦い
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
アーキテクチャから理解するPostgreSQLのレプリケーション
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
分散システムについて語らせてくれ
マルチテナント化で知っておきたいデータベースのこと
コンテナ未経験新人が学ぶコンテナ技術入門
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
本当は恐ろしい分散システムの話
Spring Boot ユーザの方のための Quarkus 入門
Guide To AGPL
DevOps with Database on AWS
Redisの特徴と活用方法について
Ad

Similar to MQ入門 (20)

PDF
30分でわかるマイクロサービスアーキテクチャ 第2版
PDF
MQTT meetup in Tokyo 機能概要
PPTX
Microsoft Tunnel 概要
PDF
MicroserviceArchitecture
PDF
マイクロサービスアーキテクチャにおけるコンポーネント間の関係表現手法の提案
PPTX
Servcie Fabric and Cloud Design Pattern
PPTX
エッジコンピューティング環境におけるアプリケーションコンテナ/マイクロサービスのセキュリティ/リスク管理
PDF
デバイスからクラウドへ ~組み込みエンジニアと IoT
PDF
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
PDF
[Intermediate 01] イントロダクション / Bitcoin を動作させる
PDF
インフラ領域の技術スタックや業務内容について紹介
PPTX
DXで加速するコンテナ/マイクロサービス/サーバーレス導入とセキュリティ
PPTX
祝GA、 Service Fabric 概要
PPTX
アーキテクトが主導するコンテナ/マイクロサービス/サーバーレスのセキュリティ
PDF
マイクロサービス化に向けて
PPTX
マイクロサービスのセキュリティ概説
PPTX
Service Fabric での高密度配置
PPTX
B2 改めて双方向通信について考えよう! 〜リモートアクセスのパターンとその実践〜 | SORACOM Technology Camp 2020
PDF
モノのインターネット(IoT)の不都合な真実
PDF
マニアックス5Sql azure
30分でわかるマイクロサービスアーキテクチャ 第2版
MQTT meetup in Tokyo 機能概要
Microsoft Tunnel 概要
MicroserviceArchitecture
マイクロサービスアーキテクチャにおけるコンポーネント間の関係表現手法の提案
Servcie Fabric and Cloud Design Pattern
エッジコンピューティング環境におけるアプリケーションコンテナ/マイクロサービスのセキュリティ/リスク管理
デバイスからクラウドへ ~組み込みエンジニアと IoT
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
[Intermediate 01] イントロダクション / Bitcoin を動作させる
インフラ領域の技術スタックや業務内容について紹介
DXで加速するコンテナ/マイクロサービス/サーバーレス導入とセキュリティ
祝GA、 Service Fabric 概要
アーキテクトが主導するコンテナ/マイクロサービス/サーバーレスのセキュリティ
マイクロサービス化に向けて
マイクロサービスのセキュリティ概説
Service Fabric での高密度配置
B2 改めて双方向通信について考えよう! 〜リモートアクセスのパターンとその実践〜 | SORACOM Technology Camp 2020
モノのインターネット(IoT)の不都合な真実
マニアックス5Sql azure
Ad

MQ入門