多国籍企業をある開発プラットフォームから別の開発プラットフォームにどのように移行できますか?


10

私は、国際的な大企業のIT部門で働いています。私たちは、ビジネス向けのさまざまなイントラネットアプリケーション(苦情、リベート、サービスデスクなど)を開発しています。今度は、PHPプラットフォームから.NETへの移行を決定しました(MS CRM Dynamics、Exchange、MS Officeとの統合が多くの理由の1つです)。現在のPHPプラットフォームでビジネスが使用しているアプリケーションは約20あるため、それらすべてを新しいプラットフォームに移行するための最良の方法を考え出す必要があります。コードを変換する方法などは詳しく説明しません。移行する間は、これらのアプリケーションをすべて改善したいと考えています。

そこで、これらのアプリを移動する2つの主な方法を考え出しました。

  1. 1つのプラットフォームのみをサポートします。それはどういう意味ですか?ホームページを作成し、文字通りすべてのアプリを.NETに移行します(その間、アプリを改善することはありません)。新しいイントラネットの実行後、移行したアプリケーションの再構築と改善を開始します。これにより、PHPプラットフォームをサポートする必要がある一方で、.NETでイントラネットを開発する手間が省けます。

  2. しばらくの間、両方のプラットフォームをサポートしてください。それは、ホームページと1つまたは2つの新しいアプリケーション(PHPプラットフォームには存在しない)だけを構築することを意味します。これらをユーザーが利用できるようにするが、PHPプラットフォームを離陸しない(メニューとリンクを組み込んで、ユーザーがPHPページ上のアプリと新しいアプリの間を簡単に移動できるようにする)。次に、PHPアプリケーションを改善しながら書き直します。

どちらがより良いかはわかりませんが、一方で(オプション1)ユーザーが2つの異なるプラットフォームを同時に使用することを強制しないことで、ユーザーにとってすべてがより簡単になる可能性があります。新しいプラットフォームを使用することによる改善は見られませんが、見栄えの良いすべてのものは別として、新しいプラットフォーム上のアプリケーションの機能はしばらくの間同じです。また、本質的にすべてのアプリを2回記述するので、自分自身(IT dep)の作業を追加すると思います。
一方、オプション2では、2つのプラットフォームの見た目が異なるため、ユーザーのエクスペリエンスは低下しますが、新しいアプリケーションの移行に伴い、新しいプラットフォームのメリットを実感できます。

あなたはそのようなことに遭遇したことがありますか?何を選びますか?それとも、私が提示したものとは異なる、より良い方法があるのでしょうか?私はあなたがどう思うか、そしてあなたはそれにどのように取り組みますか知りたいのですが。


1
#2は#1へのステップではありませんか?
Tae-Sung Shin、

いいえ、これらは2つの異なるものです。1では、ユーザーに使用を許可する前にイントラネット全体を移行してから、アプリの改善に取り組みます。2では、イントラネットの重要な部分を移行し、ユーザーがそれを使用できるようにし、移行中に他のアプリの移行と改善を開始します...

@greengit:トピックを読み、他のビジネスクリティカルなアプリケーションとの統合が理由の1つです。私の質問は、「なぜ移行するのか」ではなく、「移行する方法」について扱っています。
Daniel Gruszczyk

私はトピックを読み、同じ質問をしました。このプロジェクトがコスト的に正当化できるかどうかは非常に疑問です。会社名を教えていただければ、空売りできますか?;)
mcottle 2011

ハハ、私は正直言ってコストを気にしません。私は会社での就職先のIT学生です。私は自分の知識を求めているだけです...どうやら私のマネージャーはCEOからの
承認を得る

回答:


5

両方のシナリオを考えてみましょう:

すべてを一度に移行

コードベースを移行している間、顧客は既存のアプリを使い続けます。移行にはかなりの時間がかかるため、バグ修正と機能開発のために、古いコードベースに保守チームを置く必要があります。古いコードベースで行うすべての変更は、新しいコードベースで行う必要があります。移行が行われない限り、コードのすべての行を2回書くことになり、移行に時間がかかるほどコストが高くなります。つまり、すべてを要約すると、完全な移行のターンアラウンドタイムはどのくらいになるでしょうか。ターンアラウンドタイムが続く限り、開発コストは急上昇します。

ピース単位の移行

このシナリオでは、二重の労力をより適切に制御できますが、それでも多くの追加コストが発生します。デプロイメントには2つの別個のプラットフォームが含まれ、デプロイメントの問題の2倍と追加のサーバーリソースが必要になります。非常にモジュール化されたアプリがない限り、コードの一部が必要なプラットフォームとは別のプラットフォームに存在することがよくあり、追加の移植とメンテナンスの労力を引き起こします。移行を行わない限り、開発コストは高くなります。同時に、機能のプレッシャーは、移行を完了するのに非常に長い時間を要することを意味します。

結論

個人的な経験から、2つのことをお話しします。

  • プログラミング言語の切り替えが効果を上げることはめったにありません。費用便益分析から、PHPから.NETに切り替えても利益が出る可能性はほとんどありません。だから私の主なアドバイスは:しないでください。既存のコードベースで問題を解決してください。
  • ピースバイピースが最善のアプローチですが、アプリケーションモジュールのレベルでそれを行うのは難しいでしょう。移行が完全に行われない限り、アーキテクチャの両側で機能を開発および保守する必要があることがわかります。顧客が最も必要とするものではなく、2倍の労力を制限する(それによりコストを削減する)ものに基づいて機能に優先順位を付けることは良い考えです。

あなたは非常に興味深い点を作りました。プラットフォームを切り替えるかどうかは私次第ではありませんが、私は9月の終わりまで会社で働きます(私は彼らと一緒に単一の仕事の場所にいます)。PHPから.NETへの切り替えは良い考えかもしれませんが、私たちが持っている古いPHPフレームワークにはいくつかの主要な作業、データベースも必要となるため、現時点で同社が使用しているシステムは古く、優れた開発スキルを持っていない人々によって作成されました。 ..
Daniel Gruszczyk

また、私の質問は:古いプラットフォームでの「変更凍結」は良い考えですか?つまり、バグ修正以外の、PHPプラットフォーム上の既存のシステムへの変更は、特定のアプリケーションを.NETに移行し始めるまで凍結されます。それは私のマネージャーの移行計画の一部です...
Daniel Gruszczyk

これが重要なシステムである場合、変更の凍結が実際に機能する可能性はほとんどありません。誰かが本当に機能を必要とする場合、彼らはあなたのマネージャーよりも高いレベルにそれをエスカレートし、あなたは変更を強いられるでしょう。また、バグ修正自体はかなりの量のチームリソースを消費する可能性があります。また、古いシステムでは多くの調整が行われており、新しい設計ではこれらの小さな1行の修正がすべて忘れられる可能性が高いことを常に念頭に置いてください。
Joeri Sebrechts、2011

もう1つのポイント:システムが再構築される場合、今回のコード品質を向上させるためにどのような安全対策が講じられていますか?プラットフォームとコードの品質の問題のために、4回書き換えられたアプリケーションを見たことがあります。
Joeri Sebrechts、2011

2

財務上の理由から、私がこれまでに取り組んだほとんどの企業は2番目のアプローチを採用しました。彼らが#1を達成するには、多くのお金、時間、リスクが必要です。ユーザーは、あなたの進捗状況と彼らとのやり取りを見ている限り、ほとんど#2を理解するでしょう。この無駄のない平均的な経済状況では、誰もが一番のアプローチを取るとは思えません。


それはまさに私の考えでした。私のマネージャーは、私が理解するのが難しいと思う1に進みたいと思っています。

2

エンドユーザーに関する限り、ビッグバンアプローチが建設的になることはめったにありません。私はそれに反対し、正直に言うと、関係するアプリケーションの数を考えると、だれもがそれをオプションとして真剣に考えるとは思えません。

私はオプション2を使い、ケースバイケースで再作業を処理する傾向があります。確かに、これは紙のアプローチ1よりも時間がかかる可能性がありますが、実際には、アプローチ1を実行することでかなりの量のビジネスリスクが発生します。ユーザー側での問題は1つだけです。

さらに、Webサービスベースのアプリケーションの圧倒的な大部分がすでにphpで記述されている場合、.Netの専門知識はどのように利用できますか?

ユーザーが変化を経験しなければならない方法は、ビッグバン(多くのサポートコールをキューに入れる)または少しずつ(親しみが増す)のどちらかだと思います。私は、あなたが本当に完全にすべてのphpに近い状態から完全に.Netに移行するために実行する必要がある作業の正確なサイズを実際に決定していないと思う傾向があります。


それは、2つの別々のプラットフォームをサポートするかしないかよりも複雑だと思います。どちらの方法も本当に良いアプローチではありません...お時間をいただきありがとうございます!
Daniel Gruszczyk

1

まず、ジョエリの言うことすべてに同意します。

オプション1は本当に恐ろしいです。これを行い、Joeriが説明するようにサポートを継続しない場合、顧客が見る限り、数年間はサポートをシャットダウンします。2年後、彼らは事実上同じサイトにアクセスし、過去数年間に知って嫌いになったすべての同じ問題を抱えています。加えて、市場が暫定的に変化し、アプリケーションが時代遅れになり、大幅な刷新が必要になるリスク。また、2年間サポートを終了した場合、すべてのサービスリクエストがどうなると思いますか。彼らは消えません。少なくとも一部のユーザーは(おそらく)Accessでミッションクリティカルなシステムを「悪用」し、開発して、書き換えるシステムのギャップを埋めます。それでも、2つのプラットフォームをサポートすることになります...

オプション2は、両方のテクノロジーを長期間サポートすることを意味します。この期間はあなたが考えるよりも長くなり、永久に断片化されたエコシステム、つまり新しい.NETコードと混合して書き換えるのに経済的でないかなりの量のPHPコードになる可能性があります。

これを示唆している人に対しては強く反発してください。.NETですべてを書き直してから、書き換えたコードを製品と統合するよりも、PHPアプリケーションを提案する製品と統合するためのコードを書く方がはるかに安上がりです。 。

さらに、PHPコードの行数をCOCOMO 2ツールに入力して、書き換えを完了するために必要な開発者の人数と長さを把握します。


いい視点ね。システムを移行するかどうかが自分次第だったら、どうしますか。どのアプローチを選びますか?それとも、私がリストした彼らへの別のアプローチがありますか?あなたの上司があなたに同意しない場合、あなたのアプローチがより良いことを証明しようとしますか?
Daniel Gruszczyk

より階層化された「サービス指向」の方法でPHPアプリケーションを記述します。エンタープライズサービスバスを使用して、PHPとMicrosoftの土地間のインターフェイスをバッファリングします。重要なことは、COCOMOの見積もりを行うことです。これは、マネージャーからの生活の書き換えを怖がらせるはずです。
mcottle 2011

1

3番目のオプションがあります。

phpコードをWindowsサーバーとISSに移行します(.NETを実行する予定と同じものです!)

次に、.NETに新しいアプリケーションを追加し(古いアプリケーションをゆっくりと.NETに変換し)、ユーザーに単一のシステムのように見せることができます。


PHPは実際にIISの下で実行されます
Bart
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.