フレクトのクラウドblog re:newal

http://blog.flect.co.jp/cloud/からさらに引っ越しています

MuleSoft開発 冗長化について - その2

こんにちはCI事業部の川瀬です。

前回の記事からだいぶ経ってしまいましたが、フォルダ監視のアプリケーションの冗長化について続きをやっていきたいと思います。

結論から言うと、前回お話した通りこのようなポーリング系のアプリは冗長化しないで済むならしないことです。自動再起動に任せられるならこちらに任せてしまいましょう。 とは言え、何らかの理由で冗長化しなければならない場合もあると思います。

その場合は、スケジューラとObject Storeを使います。Object Storeにフラグを設定し、そのTTLはスケジューラの間隔より長くします。

f:id:k2-flect:20211012200102p:plain
スケジューラ

次にOn New or Update Fileを使用したフローを作成します。このフローの中では、Object Storeの有無を判別し、存在しない、つまりTTLの時間が経過しObject Storeが存在しない場合には、後段の処理を実行します。 ご存じの通り、スケジューラは冗長化しても1つのWorkerでしか動作しません。このWorkerが起動しなくなった場合、別のWokerでOn New or Update Fileをトリガーに処理が継続されることになります。

f:id:k2-flect:20211012200808p:plain
On New or Update File

ここで注意しなければならないことは、Workerがダウンし自動再起動が実行されるまでの間は、もう1方のWokerではスケジューラは動作しないことです。

docs.mulesoft.com

もう1つ、別のやり方としては冗長化構成しているアプリでMQ(VM or Anypoint MQ)を使用するやり方です。ただし、別のアプリからこのMQに対し、定期的にキューを送信する必要があり、この別アプリがダウンしてしまう場合もあります。結局この部分に対しては、自動再起動で対応するしかありません。

以上、フォルダ監視のアプリケーションの冗長化について記載してみました。このような複雑な処理をするぐらいなら、自動再起動だけで対応することも検討してもよいと思います。