Salesforce 認定 MuleSoft Platform アーキテクト 無料問題 8 / 10 ・ 分野7: API 実装を CloudHub に展開する
CloudHub の注文アプリは、処理を終えた注文を Object Store v2 に保存している。同じ環境の出荷アプリに、その注文を渡して処理させたい。Object Store v2 の FAQ に合う設計はどれか。
- 出荷アプリが注文アプリの Object Store v2 を決まった間隔で読みに行き、それを受け渡しの仕組みにする
- Object Store v2 はアプリどうしの通信の設計ではないので、2つのアプリの間は Anypoint MQ のキューで渡す
- 別のアプリのストアは参照できないので、注文アプリが共有のファイルの置き場に書き出して渡す
- 同じ環境の CloudHub アプリどうしは Object Store v2 を共有するので、出荷アプリが同じキーでそのまま読み出す
正解と解説を見る
正解: B
正解の理由
Object Store v2 の FAQ の「Can an app deployed to CloudHub access the object store of another CloudHub app?」は、Mule アプリから別の Mule アプリのオブジェクトストアに値を出し入れするよう設定はできるとしたうえで、Object Store v2 はアプリどうしの通信のために作られていないと書く。2つの Mule 4 アプリでデータを共有するには、Anypoint MQ のキューを使うよう案内している。注文を別のアプリへ渡すのはアプリどうしの通信なので、Anypoint MQ のキューで渡す。
違う選択肢
「同じ環境の CloudHub アプリどうしは Object Store v2 を共有するので、出荷アプリが同じキーでそのまま読み出す」… Object Store v2 のストアはアプリごとに持つもので、同じ環境だからといってアプリどうしで共有されるとは書かれていない。別のアプリのストアを使うには、そのための設定が別に要る。
「出荷アプリが注文アプリの Object Store v2 を決まった間隔で読みに行き、それを受け渡しの仕組みにする」… 別のアプリのストアから値を出し入れする設定はできるが、FAQ は Object Store v2 がアプリどうしの通信のために作られていないと書く。読みに行く形を受け渡しの仕組みにするのは、FAQ の勧める設計ではない。
「別のアプリのストアは参照できないので、注文アプリが共有のファイルの置き場に書き出して渡す」… FAQ は、別のアプリのオブジェクトストアに値を出し入れするよう設定できると書く。参照できないことを前提にした設計ではなく、受け渡しにはキューを使うのが勧められた形である。
設計の勘所
Object Store v2 はアプリが自分の状態(処理済みのキー・トークンなど)を持つ場所で、アプリの間でメッセージを渡す場所ではない。アプリの間の受け渡しをキューにすると、受け手が止まっていてもメッセージは残り、送り手は受け手の都合を待たずに処理を進められる。