複雑性を構造化し、堅牢なアーキテクチャへ刷新する
巨大な決済基盤を止めることなく刷新するには、新技術の導入そのものよりも、まず複雑性を制御可能な構造へ落とし込むことが不可欠となる。藤井氏はこの前提を強調したうえで、レガシーシステムの段階的モダナイズに有効なアプローチとして「ストラングラーフィグパターン」を紹介した。
ストラングラーフィグパターンは、旧システムをいきなり置き換えるのではなく、既存機能の周縁に新システムを段階的に生やし、最終的に置き換えていく手法だ。「気づけば全体がモダンシステムに切り替わっている」という表現が示すように、リスクの高いビッグバン移行を避けられ、事業継続性の観点でも極めて合理的な戦略だと言える。
さらに藤井氏は、このパターンを実践する際に欠かせない要素としてADR(Architecture Decision Record:アーキテクチャに関わる判断とその理由を記録する手法)を挙げる。なぜその方式を採用したのか、どの領域をどの順番で移行するのかといった意思決定を文書化し、関係者間で合意を形成することこそが、大規模リプレースの混乱を抑える鍵になるという。
実装技術の選定については、藤井氏は特に購入処理領域の刷新で採用したアーキテクチャについて語った。DMM決済基盤が抱える購入処理は、注文確保・在庫確認・課金・承認といった複数工程から成り、工程間で「成功」と「失敗」が段階的に積み重なる性質を持つ。そして実務では、後続システムの障害やネットワーク切断などによって途中状態が失われ、ロールバックも安全に実行できず、ワークフローが破綻するという問題が頻発していた。これが、決済基盤の堅牢性を蝕む代表的なボトルネックだったのである。
この構造的課題に対し、藤井氏が選択したのがTemporalとCQRS&Event Sourcing(ES)を組み合わせたアーキテクチャだ。ESにより状態変化をイベントとして永続化し、CQRSで読み書きを分離して独立性を確保することで、障害時には処理の巻き戻しや部分的再実行を安全に行える。さらにTemporalのワークフロー管理は、長期実行処理の安定性を担保しつつ、購入処理に見られる段階的な成功・失敗という性質にも対応できる。「両者の相性は非常に良い」と藤井氏は説明する。
検討過程ではアクターモデル(状態と振る舞いを持つアクター同士が非同期メッセージで協調する並行処理モデル)も候補に挙がったというが、理論的な理想だけでなく、現実的な採用可能性を含めて比較した結果、Temporalが最適解と判断された。巨大基盤の刷新では、技術選定そのものがアーキテクチャの思想を体現する。
