LinuCレベル4 システムアーキテクト システムアーキテクチャ 問18
システムアーキテクチャ/アーキテクチャの設計原則と主要パターンマイクロサービス構成への移行を検討している。受注・在庫・配送の3サービスが現在1つの共有RDBMSを使っている。各サービスが専用のデータストアを持つ「データベース・パー・サービス」パターンの特徴として最も適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「システムアーキテクチャ」に対応。実際の試験問題ではありません)
- A各サービスが自分のデータストアのスキーマを独立して変更できるため、他サービスのデプロイに影響を与えず改修できる
- B各サービスは共有DBのACIDトランザクションでまとめて更新できるため、サービスをまたがる整合性を容易に確保できる
- Cサービスをまたがるデータ集計は、引き続き共有DBへのJOINクエリで行えるため、レポート処理の実装方式を変える必要はない
- Dサービスごとに異なる種類のデータストアを組み合わせることはできなくなるため、全サービスで同じRDBMSを使い続ける必要がある
正解:A
解説
データベース・パー・サービスパターンでは、各サービスが自分専用のデータストアを持つため、スキーマ変更が他サービスのデプロイに影響を与えなくなります。一方、共有DBが存在しなくなるため、サービスをまたがったJOINは使えなくなり、データ結合はAPIを通じた取得やイベントを用いたデータ同期で実現する必要があります。また、ACIDトランザクションで複数サービスをまとめて更新することもできなくなるため、SagaやTCCなどの分散トランザクションパターンが必要になります。なお、このパターンにより各サービスは用途に合ったデータストア(RDB、KVS、グラフDB等)を選ぶポリグロット永続化が可能になります。
選択肢ごとの解説
- A正しい。各サービスが専用のデータストアを持つことで結合が疎になり、自サービスのスキーマ変更が他サービスのデプロイを壊さなくなります。
- B誤り。各サービスのデータストアが分離されるため、共有DBのACIDトランザクションで複数サービスをまとめて更新することはできなくなります。
- C誤り。各サービスが専用のデータストアを持つとサービスをまたいだJOINは使えなくなります。集計はAPIの呼び出しやイベント連携で実現します。
- D誤り。データベース・パー・サービスパターンは逆に、サービスごとに適したデータストア製品を選ぶポリグロット永続化を可能にします。