プロローグ
ほげ君:ねえねえ、 Azure Service Bus って知ってる?
ふが君:何それ?知らない。
ほげ君:僕も知らないんでよね!どんなものなのか教えてよ、 Microsoft 公式ドキュメント君!
公式ドキュメント君:分かりました。
Service Bus 概要
ほげ君:Bus ってことは乗客的な何かが乗ったり下りたりするのかな?
ふが君:どうなんだろう?
公式ドキュメント君:Azure Service Bus は、メッセージ キューとパブリッシュとサブスクライブ トピックを (名前空間内に) 備えたフル マネージド エンタープライズ統合メッセージ ブローカーです。
ほげ君:相変わらず、意味わからん。
ふが君:これはひどいね。んー、メッセージを受け渡しするのかな?
公式ドキュメント君:Service Bus は、アプリケーションとサービスを相互に分離するために使用され、次のような利点があります:
・競合する worker 間での作業の負荷分散
・サービスやアプリケーションの境界を越えたデータと制御の安全なルーティングおよび転送
・高い信頼性を必要とするトランザクション作業の調整
ほげ君:やっぱ意味わからん。メッセージングサービスが何なのかも分からんし、なんでこんな利点があるのかもわからん。
ふが君:ん-、これはちょっと他に聞いたほうがよさそうだね。メッセージングサービスについて教えてよ、グーグル先生!
グーグル先生:メッセージングサービスを一言でいうと、「システムAがメッセージを送信し、それを別のシステムBで受信できるようにする仕組み」を提供するサービスです。
ほげ君:なるほど。これは分かりやすいが、この機能を使う意味ってなんだ?
ふが君:メッセージの受け渡しができると嬉しい理由についても教えてよ。
グーグル先生:現在、様々なITシステムは、オープン系といい、数台~数十台のサーバが連携しあって1つのシステムを構築しています。それぞれのサーバの、様々なプログラムが複雑に連携することで、大規模なシステムの処理が成り立っています。そのような場合、1つのプログラムに問題が発生すると他のプログラムの処理も止まってしまい、場合によってはシステム全体が停止してしまう、ということも珍しくありません。
ほげ君:みんなで一つの仕事を一緒にこなしているから、一人でも倒れたら仕事ができなくなるってことか。
ふが君:確かにこれは問題だね。どうやってこの問題を解決するの?
グーグル先生:そのようなことを防ぐために、システムの複雑さを切り離す必要があります(疎結合化といいます)。それによって、システムやプログラムの安定稼働を支えます。プログラム同士の疎結合化を実現するのが、メッセージングサービスの役割です。
ほげ君:えーと、どういうことだ?
ふが君:みんなでこなしてた一つの仕事を小分けして、各自の担当を決めて、お互いどれぐらい進んだかをメッセージングサービスで伝えるって感じかな?
ほげ君:もう少し具体的にメッセージングサービスの使いどころを教えてくれ。
グーグル先生:例えば、電話とメールを考えてみます。電話は、相手が同時に応答しないと”メッセージを送る”が成立しません。一方でメールは、相手が同時にメールを見ていなくても、”メッセージを送る”ということが可能です。電話のように、相手の応答を待つような処理のことを”同期処理”、相手の応答を待たないでいい処理を、”非同期処理”といいます。メッセージングサービスは、プログラム間の非同期処理化をおこなうことができます。
ほげ君:なるほど。書き残しみたいなもんか。
ふが君:非同期処理以外はどんな使い方があるの?
グーグル先生:メッセージングサービスは、データを連携するために特化したシステムであるため、データ連携をより安全に行うための様々な仕組みが用意されています。たとえば、クレジットカードなどの決済情報を通信している際に、クレジットカードシステム側の障害等でデータが消失してしまうと、利用者やカード会社は困ります。このように、安全なデータ連携を行いたい場合はメッセージングサービスを使うといいでしょう。
ほげ君:えーと、どういうことだ?
ふが君:多分大事なデータを正確に、確実に届けることができるってことじゃない?消えたり、間違えたりしないような仕組みが組み込まれているってことだよ。
ほげ君:なるほどな。メッセージングサービスの意味が分かったよ。
ふが君:じゃあ本題に戻ろうか。Service Bus とは何か、もう一度教えてよ、公式ドキュメント君。
公式ドキュメント君:Azure Service Bus は、メッセージ キューとパブリッシュとサブスクライブ トピックを (名前空間内に) 備えたフル マネージド エンタープライズ統合メッセージ ブローカーです。
ほげ君:…切れていいか?
ふが君:まあまあ。多分 Service Bus はマイクロソフトが出してるメッセージングサービスの一種なんだよ。それより詳しいことはまた今度でいいかな?
ほげ君:もうそれで十分だわ。イライラするし美味い海鮮丼食いに行こうぜ。
ふが君:いいよ。