過去問ドリル

LinuCレベル4 システムアーキテクト システムアーキテクチャ 問22

システムアーキテクチャ/アーキテクチャの設計原則と主要パターン

受注・在庫・会員・配送の4機能が1つのモノリスアプリケーションに統合されている。エンジニアチームは少人数であり、全機能を一括して新アーキテクチャへ移行するリスクを避けたい。サービスを止めることなく、機能単位で段階的にマイクロサービスへ切り出す方針を採用した。採用する方式として最も適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「システムアーキテクチャ」に対応。実際の試験問題ではありません)

正解:D

解説

Strangler Figパターンは、既存のモノリスを停止せずに前段のルーティング層を介して機能ごとに新サービスへ段階的に移行する手法。プロキシが切り出し済みの機能を新サービスへ、まだ残っている機能をモノリスへ振り分ける。切り出しが完了した機能のモノリス側コードを削除していくことで最終的にモノリスがなくなる。ダウンタイムなしに段階的な移行が可能なため、少人数チームや段階的リスク軽減の要件に合致する。

選択肢ごとの解説

  • A誤り。DB分割をサービス分割より先に行う方式は、アプリとDBの整合性を同時に維持しなければならず難易度が高い。実際にはまずサービス境界のAPIを外出しにし、共有DBを後から段階的に分離していくほうが現実的な順序。
  • B誤り。全機能の同時移行(Big Bang移行)は、テスト・ロールバックのコストが高く「全機能の一括移行リスクを避けたい」という前提に反する。
  • C誤り。デュアルライトによる並行稼働は特定の局面では使われる技術だが、4機能すべてに長期間デュアルライトを維持すると整合性保証と保守コストが膨大になり現実的でない。
  • D正しい。Strangler Figパターンの典型的な実装。プロキシがモノリスと新サービスへのルーティングを切り替える役割を担い、機能の切り出しが完了するごとにモノリスの対応コードを廃止できる。段階的かつダウンタイムなしという要件を満たす。
LinuCレベル4 システムアーキテクトの問題を演習モードで解く