キューイングとは?
日本語にすると「待ち行列」という意味になります。システム開発の現場では主にアプリケーションの疎結合を保つ連携のための概念としてよく使われています。近年の開発手法の中心となりつつあるマイクロサービスと一緒に語られることが多い概念ですね。(対義語としては一枚岩でアプリケーションを作るモノリス)
それをメッセージキューイングと呼びます。
メッセージキューイングでは、送信者と受信者の間にブローカーが仲介します。ブローカーは、送信側からのメッセージを直列(待ち行列)で蓄積しておき、受信者に配送完了するまで管理します。
FIFO
先頭が常に最も古い要素になっており、取り出すときは古い要素から先に取り出されます。要は待ち行列ですね。情報処理技術者試験とかやった経験がある方であればこの概念はよく出てきたと思います。対義語としては先に足された要素から先に取り出すというスタックというデータ構造もあります。
メリット
- マイクロサービスなどで分散アプリケーション上で非同期に処理を進められるようになります。
- システム間を疎結合にすることにもつながります。
同期メッセージングの場合
通常、分散されたシステム間での処理の連携は同期的に行われます。しかし、同期的メッセージングでは受信側に問題があった場合は、送信側はメッセージを送信できなくなります。そうすると送信側のシステムがエラーになり停止してしまいます。
非同期メッセージングの機能があると、送信側のシステムはメッセージだけ投げてエラーにならず元の仕事に戻れるようになります。
例
マクドナルドのバイトは接客と調理で分かれていますが、その分担と同じです。常に同期しているわけではなく、個々のアルバイターがそれぞれ非同期に動き、効率的に物事を処理するようになっています。
近年のメッセージキューイング
クラウドが流行る前などは分散メッセージングは「Apache Kafka」のサービスも使われていました。
近年は、クラウドが流行りアプリケーションのマイクロサービス化で機能を分散させて設計する方式が主流になりつつあります。その過程でメッセージキューイング(メッセージング)を用いた実装方法も主流になりつつあります。
AWSなどのクラウドサービスなどもキューイングを使うことを前提のサービスを提供したりしています。(Amazon MQ、SNSなど)一からオープンソースを利用して実装するよりも、サービスによってメッセージキューイングの方式も微妙に異なっていたりして用途を理解して適切に設計する能力が問われる時代になっています。
詳細は以下の記事で解説しております。
この記事へのコメントはありません。