このパターンは"レガシーシステム置換のパターン"の一部です
フローの迂回
まず、組織横断的なアクティビティをレガシーから迂回させる
2022年1月20日
レガシーシステムの共通の特徴は、クリティカルアグリゲーターです。その名前が示すように、これはビジネスの運営に不可欠な情報を生成するため、中断することはできません。しかし、レガシーにおいて、このパターンはほとんどの場合、侵襲的な密結合の実装に陥り、事実上、それ自体と上流システムを固定してしまいます。

図1:レポーティングクリティカルアグリゲーター
フローの迂回は、可能な限り、動作に必要なデータのソースである上流システムから切り離された、クリティカルアグリゲーターの新しい実装を作成することによって、レガシーシステム置換イニシアチブを開始する戦略です。この新しい実装が導入されたら、レガシー実装を無効にすることができ、さまざまな上流データソースを変更または再配置する自由度が大幅に向上します。

図2:抽出されたクリティカルアグリゲーター
クリティカルアグリゲーターが存在する場合の代替の置換アプローチは、それを最後に残しておくことです。上流システムを置き換えることはできますが、レガシー内のアグリゲーターが必要なデータを受信し続けるようにするために、レガシーミミックを使用する必要があります。
どちらのオプションでも、移行アーキテクチャを使用する必要があります。アグリゲーターを所定の位置に維持したり、新しい実装にデータを提供したりするために、置換作業中に一時的なコンポーネントと統合が必要です。
仕組み
フローの迂回は、この例ではクリティカルアグリゲーターである、横断的な機能の新しい実装を作成します。当初、この実装は、たとえばイベントインターセプトパターンを使用して、既存のレガシーシステムからデータを受信する可能性があります。あるいは、ソースへの復帰を介してソースシステム自体からデータを取得する方が簡単で価値がある場合もあります。実際には、両方のアプローチの組み合わせが見られる傾向があります。
アグリゲーターは、既存の上流システムとコンポーネントがレガシーから置き換えられるにつれて使用するデータソースを変更するため、レガシーへの依存性は時間の経過とともに減少します。新しいアグリゲーター実装では、ソースシステムが新しい実装に移行されるにつれて、データの形式、品質、および適時性を向上させる機会を活用することもできます。
データソースのマッピング
クリティカルアグリゲーターを抽出して再実装する場合、まず、それがレガシー資産の残りの部分とどのようにリンクされているかを理解する必要があります。これは、集計に使用されるデータの最終的なソースを分析して理解することを意味します。ここで重要なのは、究極の上流システムに到達する必要があることを覚えておくことです。たとえば、メインフレームを売上情報の信頼できるソースとして扱う場合でも、データ自体は店舗のレジシステムから発信される場合があります。
アグリゲーターを上流および下流の依存関係とともに示す図を作成することが重要です。システムコンテキスト図などはこちらでうまく機能します。どのシステムからどのデータがどのくらいの頻度で流れているかを正確に理解する必要があります。レガシーソリューションがデータのボトルネックになることはよくあります。(新しい)ソースシステムからの追加の有用なデータは、レガシーでキャプチャまたは表現するのが難しすぎるため、破棄されることがよくあります。これを考慮して、どのアップストリームソースデータがどこで破棄されているかをキャプチャする必要もあります。
ユーザー要件
明らかに、"迂回"する予定の機能がエンドユーザーによってどのように使用されているかを理解する必要があります。クリティカルアグリゲーターの場合、レポートまたはメトリックごとに非常に多くのユーザーが混在していることがよくあります。これは、機能パリティが、実際には現在のユーザーのニーズを満たしていない「肥大化した」レポートのセットを再構築することにつながる可能性がある古典的な例です。簡素化された、より小さなレポートとダッシュボードのセットの方が良いソリューションかもしれません。
初期実装中に主要な数値が一致することを確認するために、並列実行が必要になる場合があります。これにより、ビジネスは期待どおりに機能することを確認できます。
出力の生成方法を把握する
理想的には、現在の出力がどのように生成されるかを把握したいと考えています。1つの手法は、シーケンス図を使用してレガシーシステムでのデータ受信と処理の順序を文書化するか、単にフローチャートを使用することです。ただし、既存の実装を完全に把握しようとすると、収穫逓減の法則が働くことがよくあります。重要な知識が失われていることに気付くことは珍しくありません。場合によっては、レガシーコードが物事の仕組みの唯一の「ドキュメント」である可能性があり、これを理解することは非常に困難または費用がかかる可能性があります。
ある著者は、主要な財務計算を実行するために、レガシーシステムからのエクスポートを非常に複雑なスプレッドシートと組み合わせて使用するクライアントと協力しました。組織の誰もこれがどのように機能するかを知りませんでしたが、幸いなことに、最近退職した従業員と連絡を取り合うことができました。残念ながら、彼らと話したところ、10年前に以前の従業員からスプレッドシートを継承したことが判明しましたが、悲しいことに、この人は数年前に亡くなりました。レガシーレポートと(2回「バージョン移行された」)Excelスプレッドシートのリバースエンジニアリングは、最初の原則に戻って計算が何をするかを新たに定義するよりも多くの作業でした。
置換エンドポイントで機能パリティを構築していない場合でも、主要な出力がレガシーと「一致」する必要があります。集計の例を使用すると、店舗の毎時の売上レポートを作成できるようになりましたが、ビジネスリーダーは依然として月末の合計を必要としており、これらは既存の数値と相関している必要があります。エンドユーザーと協力して、特定のテスト入力に対する予期される出力の実例を作成する必要があります。これは、後でどのシステム(古いシステムか新しいシステムか)が「正しい」かを特定するために不可欠です。
デリバリーとテスト
このパターンは、新しい機能をスライスで構築する反復的なアプローチに適していることがわかりました。クリティカルアグリゲーターの場合、これは各レポートを順番に配信し、本番環境のような環境に完全に導入することを意味します。その後、並列実行を使用して、残りのレポートを構築するときに配信されたレポートを監視し、ベータユーザーから早期フィードバックを得ることができます。
私たちの経験では、多くのレガシーレポートには未発見の問題とバグが含まれています。これは、新しい出力が既存の出力と一致することはめったにないことを意味します。レガシー実装を sepenuhnya理解していない場合、不一致の原因を理解することは非常に困難です。1つの軽減策は、自動テストを使用して既知のデータを挿入し、実装フェーズ全体で出力を検証することです。理想的には、新しい実装とレガシー実装の両方でこれを行うため、同じ既知の入力セットの出力を比較できます。ただし、実際には、レガシーテスト環境の可用性とデータ挿入の複雑さのため、推奨される最小限である新しいシステムに対してのみこれを行うことがよくあります。
レガシー集約で「システム外」の回避策が見つかることはよくあります。移行作業中にこれらを追跡しようとすることは明らかに重要です。最も一般的な例は、リーダーシップチームが必要とするレポートがレガシー実装から実際には利用できないため、誰かがレポートを手動で操作して実際に表示される出力を作成する場合です。これには多くの場合、数日かかります。誰もリーダーシップにレポートが実際に機能していないことを伝えたくないため、物事が実際にどのように機能しているかを認識していないことがよくあります。
本番稼働
新しいアグリゲーターの機能が正しいことに満足したら、ユーザーを新しいソリューションに誘導できます。これは段階的に行うことができます。これは、主要なユーザーコホートのレポートを実装すること、並列実行の期間、そして最後に新しいレポートのみを使用してそれらに切り替えることを意味する可能性があります。
監視とアラート
正しい自動監視とアラートを導入することは、フローの迂回、特に依存関係がまだレガシーシステムにある場合に不可欠です。更新が期待どおりに受信されていること、既知の適切な範囲内にあること、および最終結果が許容範囲内にあることを監視する必要があります。このチェックを手動で行うと、すぐに多くの作業になり、エラーや遅延の原因となる可能性があります。一般的に、過去の回避策を新しいソリューションに再導入したくないため、アップストリームシステムで見つかったデータの問題を修正することをお勧めします。追加の安全対策として、並列実行を一定期間そのままにしておき、調整ツールを選択的に使用して、古い実装と新しい実装が大きく乖離し始めた場合にアラートを生成できます。
使用すべき状況
このパターンは、レガシーシステムに横断的な機能があり、それがレガシー資産の他の部分に「アップストリーム」の依存関係を持っている場合に最も役立ちます。クリティカルアグリゲーターが最も一般的な例です。時間の経過とともにますます多くの機能が追加されるにつれて、これらの実装はビジネスクリティカルになるだけでなく、大規模で複雑になる可能性があります。
この状況でよく使用されるアプローチは、これらの「アグリゲーター」の移行を最後に残しておくことです。明らかに、レガシー資産の他の領域に複雑な依存関係があるためです。そうすることで、アップストリームコンポーネントの抽出プロセスを開始すると、レガシーをデータとイベントで最新の状態に保つ必要があります。次に、これは、「アグリゲーター」自体を移行するまで、これらの新しいコンポーネントがある程度レガシーデータ構造と更新頻度に結合されたままであることを意味します。また、移行作業全体の終わり近くまで改善が見られない、大規模な(そして多くの場合重要な)ユーザーセットもいます。
フローの迂回は、この「最後まで残す」アプローチの代替手段を提供します。レガシーアグリゲーターにデータを提供し続けるコストと複雑さが大きい場合、または対応するビジネスプロセスの変更により、たとえばレポートを移行中に変更および適応する必要がある場合に特に役立ちます。
更新頻度とデータの適時性の向上は、多くの場合、レガシーモダナイゼーションプロジェクトの重要な要件です。フローの迂回は、移行プロジェクトの初期段階でこれらの領域に改善を提供する機会を提供します。特に、ソースへの復帰を適用できる場合に効果的です。
データウェアハウス
レガシーシステムの移行において、主要なレポートなどが実際に生成される場所であるため、「データウェアハウス(DWH)のサポート」という要件にしばしば遭遇します。もしDWH自体がレガシーシステムであることが判明した場合、DWHからのデータの「流れの転換」を、より優れた新しいソリューションへと行うことができます。
新しいシステムがウェアハウスに同一のフィードを提供することは可能ですが、実際には、レガシーデータ形式とその付随する妥協点、回避策、そして非常に重要な更新頻度に、新しいシステムを再び結合することになるため、注意が必要です。私たちは、レガシーシステムの大部分を置き換えたにもかかわらず、DWHソリューションへの依存関係と課題のために、古いデータでビジネスを運営せざるを得ない組織を見てきました。
このページは、
レガシー置き換えのパターン

パターン
重要な改訂
2022年1月20日