2017年3月12日日曜日

Azure ServiceBus を利用した LogicFlow の連携

Azure で提供されているサービスの中に、ServiceBus と呼ばれるものがあります。これは、サービス間の中で安全にメッセージのやり取りを行うための仕組みで、あるサービスから別のサービスへとメッセージを届けるために、非常に安全に利用するための仕組みとなっています。LogicFlow でもこのサービスを利用して、別サービスとの連携を行うことが非常に簡単にできるようになっています。

ざっくりとした図で書くと、ServiceBus は次のように各種サービスをつなぐ中間地点に設置されます。

image

昔のように直接サービスを接続して利用した場合、どちらかのサービスの負荷が過大になった場合、連携しているサービスにも影響が発生します。また片方のサービスだけ増強させる、というのも非常に難しいため、システムの能力を上げるには全体的に増強する必要があり、その分多くのコストが発生します。また、片方だけのシステムをメンテナンスのために停止することも困難です。

ServiceBus を利用した場合は、連携する際にやりとりするメッセージを安全に届けることができますし、呼び出し元・ServiceBus・呼び出し先、それぞれが疎結合で独立していますので、部分的に能力を増強させることも非常に行いやすくなります。

また、連携されるメッセージも、読み出し保障を行う仕組みや、メッセージの一意性を担保する仕組みがあらかじめありますので、ネットワーク経路上の問題でメッセージが重複して届くことを考慮するのも、対応が非常に取りやすくなるという特徴があります。

また、ServiceBus を利用すると、LogicApps と Flow の間で処理を連携させることも可能です。

image

例えば Flow 側でこのような感じに、ServiceBus へとメッセージを送信します。

image

LogicApps 側ではこのような LogicFlow を用意し、ServiceBus からのメッセージを受け取ったら、そのまま Twitter に投稿するようにします。

image

すると、このような感じで Flow を起点に始まった処理が ServiceBus を経由して LogicApps へと連携されたのがわかります。

このように ServiceBus を利用すると、各機能の間で連携を安全に簡単に行うことができるようになります。システムを全体的に考えた際には、このようなメッセージングの仕組みは必ず必要になりますので、Azure に限らずクラウド的な環境で何かしらシステムを構築する場合には、必須のサービスと言えるのかも知れません。

0 件のコメント:

コメントを投稿