PubSubモデルとは???
Publisher/Subscriberモデルの短縮で、Publisherはキューにメッセージを投げる、Subscriberはキューに入ったメッセージを抜き取る、というアーキテクチャを示します。
Publisherは誰がSubscriberなのかを全く意識せず、ただただキューにメッセージを投げ込みます。
Subscriberも誰がPublishしたメッセージなのかを考えず、ただただキューに入ったメッセージを抜き取ります。
こうすることでPublisherやSubscriberを容易にスケールできたり、依存関係の無い処理をそれぞれSubscriberにすることで並列処理を実現できます。
概念を理解するにはこちらの動画がわかりやすかったです。
https://www.youtube.com/watch?v=cvu53CnZmGI
Pub/Subコネクター
Workatoにも「Pub/Sub」コネクターが用意されており、このモデルをレシピで表現できる様になっているます。
想定としては、新規/更新された従業員情報があったときに発生する様々な業務(総務的な業務、ITアプリのプロビジョニング、マネージャー・本人への連絡等)をSubscriberとしてサービス化することで依存関係を極力なくし、かつスケーラビリティを向上させる、といったシナリオでレシピを作成してみたいと思います。
まずはUI上でトピックを作っていきます。
とりあえずサンプルとして「New Employee」というトピックを作成します。
こんな感じでポチポチフィールドを追加していきます。
Publish messageアクション
では、レシピで実際にこのトピックにメッセージをPublishしていきます。
トリガーはWorkday等のHRアプリを設定します。
Pub/Subコネクターの「Publish message」アクションでPublishするメッセージを作成します。
Subscribeトリガー
次にSubscriberを作成していきます。
一つ目はアプリのプロビジョニング - つまりOktaでユーザを作成するサービスです。
二つ目はこんな感じでServicenowで総務的な調整をするためのチケットを作成したりするサービス。
最後にマネージャーやその従業員にSlack通知・メール通知を行うサービス。
そしてこれらのレシピをスタートさせると、WorkdayにWorkerが追加されるたびにこれらの処理が全部一気に実行されます!
最終的なDependencyグラフはこんな感じです。
PublisherやSubscriberは必要に応じて増やすことができます。
使ってるうちにこんなことも自動化したい、というアイディアがあれば随時アジャイル的にどんどん自動化をスケールさせることができます。
Pub/Subのアーキテクチャ自体頻繁に必要になるものではありませんが、特定のエリアの自動化をする上では大活躍あるいは必須になる機能です。
こういった柔軟性の高さ、痒い所に手が届く機能を持っているのがWorkatoの売りの一つと言えます。