第9章. サービング・レイヤーのアップサート
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
AATDの演算子は、これまでの進歩に満足している。 人気のある商品やカテゴリーについてリアルタイムで把握できるようになり、調達が大幅に楽になった。
しかし(いつもそうだが)、注文が遅れているというクレームが寄せられており、現時点では顧客への注文の配送がどうなっているのか、まったく把握できていない。 顧客も自分の注文の状況や、いつ自分の家に届きそうなのかを知りたがっている。
この章では、この2つの問題を解決していく。 注文と配送のステータスを紹介し、それらは時間とともに変化していく。 この種のデータを扱うには、サービスが同じ注文の複数のイベントを処理する必要がある。最新のステータスを知りたいだけでなく、そのステータスが時間とともにどのように変化したかも知りたい。
楽しい章になりそうだ!
注文状況
前述したように、ユーザは、、注文が発注されてから手元に届くまでのステータスを追跡できることを望んでいる。また、演算子は、注文がタイムリーに履行されていないかどうかを知りたがっている。 この機能を提供するためには、注文ステータスを持つ必要がある。
ordersStatuses 、Kafkaにトピックを追加し、これらの状態を追跡する。 オーダーは以下の段階を経る:
-
PLACED_ORDER
-
注文確定
-
準備中
-
ビーイング・クックド
-
アウト_フォア_デリバリー
-
アライバル・アット・ドア
-
配達された
実際のシステムでは、これらのステータス更新は、各ステージを処理するサービスによって公開される。 例えば、配送サービスは、OUT_FOR_DELIVERY、ARRIVING_AT_DOOR、DELIVEREDのステータスを処理する。
このコマンドは、オーダーがどのようにステージを進むかの例を出力する:
kcat-C-blocalhost:29092-tordersStatuses|jq'select(.id == "ed3fe5bc-2e2e-49c3-a2f3-367b4dd80000")'
結果を例9-1に示す。
例 9-1. 発注から納品までの注文状況
{"id":"ed3fe5bc-2e2e-49c3-a2f3-367b4dd80000","updatedAt":"2022-10-17T13:27:35.739917","status":"PLACED_ORDER"}{"id":"ed3fe5bc-2e2e-49c3-a2f3-367b4dd80000","updatedAt":"2022-10-17T13:30:07.739917","status":"ORDER_CONFIRMED"}{"id":"ed3fe5bc-2e2e-49c3-a2f3-367b4dd80000","updatedAt":"2022-10-17T13:30:20.739917","status":"BEING_PREPARED"}{"id":"ed3fe5bc-2e2e-49c3-a2f3-367b4dd80000","updatedAt":"2022-10-17T13:30:30.739917","status":"BEING_COOKED"}{"id":"ed3fe5bc-2e2e-49c3-a2f3-367b4dd80000" ...