web-dev-qa-db-ja.com

レガシーを置き換える新しいシステムの設計:新しいデータベースから始めて、切り替えまで両方を個別に維持しますか?

最終的に廃止されるレガシーシステムがあり、その時点で新しいシステムの使用に切り替えます。

元のデータベースを段階的に適応させるのではなく、新旧のシステム用に別々のデータベースを維持することの長所と短所は何ですか?

3

両方のシステムを同時に実行します。ユーザー/顧客を古いものから新しいものに徐々に移行します。

これの利点は、顧客のサブセットを使用して新しいシステムをテストできることであり、「ビッグバン」の切り替えを回避できます。

欠点は、1つではなく2つのシステムを維持する必要があることです。しかし、それを分解すると、おそらくあなたの会社にはいくつかの「システム」があるので、おそらく10ではなく11のシステムのようになりますが、それほど悪くはありませんか?

また、データ移行プロセスを実際に確認して自動化する必要があります。複数回実行する必要があるためです。これは間違いなく、マニュアルの誘惑よりも優れた製品になります 'とにかく一度だけそれを行うつもりです'ビッグバンアプローチのステップ

4
Ewan

これは主に意見に基づいているのではないかと思います。

私は1つのシステムを使用することを好み、アップグレードはそのシステムのライフサイクルの一部になります。言語やテクノロジーを変更したとしても、これは一般的に私にとって「より良い」ものです。

長所

  • ユーザーはそれが来ていると言うことができます
  • ユーザーは古いシステムの方が優れていると口述することができないため、永久に維持する必要があります。
  • 開発はまっすぐな(っぽい)道を進んでいます。
  • 通常、変更は少しずつ行うことができます。なぜusersテーブルを最初からやり直す必要があるのですか、追加、削除、変更するために失われた列を作成してそれを行うことができないのはなぜですか?
  • あなたは仕事を倍増することを避けます。システム1を「サンセット」と呼んでプルサポートと言うこともできますが、それでもメンテナンスの修正を行うことになります。
  • サポートスタッフの負荷が2倍になることを避けます。製品の「テクニカルサポート」がある場合は、2つではなく1つの「システム」で新入社員をトレーニングするだけで済みます。

短所.

  • ユーザーが変更やサポートを実施できるようにすることは、より複雑な情報のシンフォニーになる可能性があります。そうしないと、問題が発生します。
  • リグレッションが発生します。これは避けることができるものではありません。特に、リグレッションが何であるかをユーザーが指定する場合はそうです。
  • あなたががらくたロールアウトを持っているなら、あなたは立ち往生しています。 「大口顧客」がバージョン1を使用している間、バージョン2で一部の人を実行する機能が失われます。
  • 顧客によっては、従業員を再訓練しなければならないことに非常に腹を立てる可能性があります。 B2Bセットアップでは特に当てはまります。
  • あなたはおそらく顧客を失うでしょう。特に、「非アクティブだが支払っている」顧客が多く、「支払いの更新」プロセスを実行する必要がある場合。

結局のところ、それは仕事に適したツールに帰着します。たった1つのバージョンを争うのが私が最初であるにもかかわらず、2つのバージョンを実行する必要がある場合もあります。

0
coteyr

彼らが言うように、誰でも現在のものより良いシステムを開発することができます。スキルが必要なのは、ビジネスプロセスを停止することなく、古いシステムから新しいシステムに移動するための松葉杖のセットの開発です。

有料の顧客が多数いる場合は、2つのシステムを並行して実行し、段階的に切り替えます。 (有料の顧客がたくさんいない場合、誰のためにシステムを書き換えればよいですか?)

利点:

  • あなたのビジネスは大きな中断なしに実行し続けます。
  • 顧客は突然の変化に直面することはなく、必要なときに/必要な場所に移行するための十分な時間があります。
  • 新しいシステムの特定の変更が問題を引き起こしたり、壊滅的な障害を引き起こしたりしたときにロールバックするのに適したシステムがわかっています。
  • 構築中の新しいシステムのリファレンスとして、可能な限り最高のテストスイートであるライブ実行システムがあります。
  • 顧客または機能を徐々に移行し、テスト負荷ではなく、軽いが実際の本番負荷の下で問題を解決できます。

欠点:

  • 両方のシステムの共存期間中に分割状態の機能とデータスキーマを設計し、通信を助けるためにフックを追加する必要があります。
  • 新しいシステムは、部分的に実装したときに合理的に機能するように設計し、残りの機能については古いシステムに便乗する必要があります。
  • システム間でデータを複製する必要があります。
  • データ複製によって引き起こされる遅延、および/またはそれによるデータの不整合の可能性に耐える必要があります。
  • ゼロから書き直すよりもかなり時間がかかり、コストもかかります。
0
9000