私の会社は、近年、複数の地域で急速に成長している会社です。私たちはそれ自体がソフトウェア会社ではなく、社内でさまざまなオーダーメイドのアプリケーションを開発してきた技術会社です。これらの一部は現在SAASとして販売されています。
私はこれらのアプリケーションのうち3つを個人的に担当しています。1つはMySQL/Python/Djangoで、もう1つはSQL Server/Python/Djangoで、もう1つはMySQL/PHP/Symfonyで記述されています。私の開発者リソースには、これらすべての専門知識に加えて、いくつかのJavaおよびAdobeFlexが含まれています。SQLServer以外のMicrosoftテクノロジに関する重要な経験はありません。
ただし、開発者がいる私の会社の他のすべての部門はすべてMicrosoftスタックを使用して作業しています-他のすべてのWebアプリはC#/ asp.NETなどです。
私は、データ共有およびプレゼンテーションレベルで、当社の部門製品と社内の他の製品との統合を評価するように依頼されました。
私は3つの可能なルートを見ます:
弾丸を噛んでMicrosoft開発スタックに移行すると、これが全社的なポリシーになります。長所:標準化、リソースをプールする機能、統合はどのレベルでも実行できます。短所:現時点では実際に支払うことができない莫大なライセンス費用、必要なすべての開発者の完全な再トレーニング、Nice Ubuntu/Apacheサーバーの代わりにIIS)を使用する必要があり、一般的な哲学的反対(私たちは主に私の部門のオープンソースのエバンジェリスト)。
ミドルウェア。サービス間のデータサブスクリプションを処理するために、AdobeFlexを検討してきました。長所:比較的安価なソリューションであり、既存の社内経験により、選択した基盤となるテクノロジーを使用できます。短所:アドビのデータサービスの見積もりを取得するのに何年もかかりました。このルートがどれほど将来性があるかはわかりません。絶滅する可能性のあるテクノロジーを購入する可能性はありますか?
DIY。私たちはずっとオープンソースに固執し、すべてのアプリ間でWebサービスAPIをカスタム作成します。長所:ライセンスが安く、オープンソース。短所:追加の時間が必要、より多くのテスト、技術普及の中心的な問題に取り組んでいない
ここに他にどのようなアプローチがあるのか知りたいです。これについて他のミドルウェアの方法はありますか?私は自分の意見で絶望的に時代遅れになっていますか?将来のための安全な賭けは何ですか?
ありがとう
おそらく、社内には、作業を重複させ、同じレポートにデータを含めることを困難にしている異種システムが多すぎると感じている人がいるでしょう。 ITの責任者は、デザインに集中する必要があり、同じ言語を使用するすべての人が万能薬であると考えるほど神秘的ではありません。
MSスタックに統合すると、開発者と知識の共有が容易になる場合があります。 SQL Serverは、これを行う上で最もコストがかかる部分です。 WindowsServerとVisualStudioには他にもライセンスの問題があります。事業運営や開発コストのROIが見つかれば、購入を正当化できます。
スタックが異なるという理由だけで、データ統合が純粋な技術的な問題になることはありません。これは、Webサービスを介して行うことができます。
プレゼンテーションでは、一貫したUIデザインが必要です。 Webアプリのユーザーは、あるモジュール/部門のアプリから別のアプリに移動するときに、知らないうちに別のテクノロジーに移動する可能性があります。統合する意味があるものを決定する必要があります。一致するように手動で更新される従業員データを保持する個別のデータベースはありますか?人事と営業にはこれが共通しています。良いテストは、従業員を退職させたり、雇用したり、結婚のために名前を変更したりすることがどれほど難しいかを確認することです。
あなたはあなたの部門からいくらかのインプットを提供するべきです、しかし会社のより高い誰かがより大きな全体像を見る必要があります。
エンタープライズ統合パターンについて何か読んだことがありますか?このテーマに関する本全体と、役立つさまざまなフレームワークがあります。
ここでは、少なくとも2つの異なる問題があり、それらを1つにまとめています。
まず、少数のテクノロジーに移行する場合としない場合があります。すべてのいずれかを太陽の下に置くと、メンテナンスが困難になる可能性があり、アプリケーションの特定の部分を共有する能力が制限されます。
モジュール/アプリケーション/システム間の通信は2番目の部分です。 データサブスクリプションについて言及しましたが、本当にリアルタイムのプッシュタイプの要件がありますか。もしそうなら、 RabbitMQ 、 ActiveMQhere などのメッセージバスタイプのテクノロジーを検討する必要があります(このサイトや他のサイトでこれらをカバーする多くの質問があります)。
一方、単に一部のデータを一元化するだけの場合は、単純なWebサービス(SOAPまたはRESTベース))が最善の策かもしれません。 .NETチームはそれらを簡単に作成でき、他のすべてのテクノロジーは単にそれらを呼び出すことができ、その逆も可能です。これは、より大きな計画を立てるときにさまざまなサイロ化されたアプリが通信できるようにするための短期的な最善策かもしれません。
1つの質問は、あなたの部門がどれだけのリソース/予算を獲得するかということだと思います。あなたは予算の問題をほのめかしました。私が今働いている場所(金曜日まで)では、部門はリソースを取得せず、Microsoftテクノロジを使用しています。誰もライセンス費用を払いたくないので、これは本当に貧弱なツールにつながります。これは、SQL Server Management Studioを使用するための低速の過負荷コンピューターへのリモートデスクトップのような、あらゆる種類のイライラするものにつながります(1つのコピーにお金を払うだけだったため)...または開発/テスト環境がまったくないライセンスにお金をかけたくないからです。一方、PHP/Python/Javaでは、サーバーをインストールして実行するだけです。もう1つの問題はライブラリです。 Python/Ruby/PHPには、はるかに多くのWebフレームワークが無料で利用できます。 MicrosoftはMVCライブラリをリリースしたばかりです。 Javaのようなものでさえはるかに長い間MVCフレームワークを持っていて、Hibernateのようなものも先行していました。さらに、最高の.NETライブラリの多くは最初は無料ではありません。以前の雇用主の1人はインフラジスティックWebコントロールに大金を払っています。OfficeをインストールせずにExcelを作成したいときはいつでも、最も使いやすいライブラリは無料ではありませんでした(ただし、今ではNPOIを使用できます)。しかし、お金を超えても、多くのMicrosoft部門はサードパーティを受け入れようとはしていません。私が見たほとんどのPHP/Java/Python/Ruby/Perlショップは、wazooでサードパーティのライブラリを使用しています...
ただし、Visual Studio 2010には多くの機能があるように見え、Microsoftはいくつかのライブラリ(ORMの観点からのEntity FrameworkとLINQ、Webフレームワーク用のMS MVC、関数型プログラミング用のF#など)に追いついています。 )。残念ながら、これらの機能のほとんどを備えていない.NET2003または.NET2005を使用している場所はまだたくさんあります...その後、最新/最高のASAPにアップグレードする他のショップがあります(通常はPRO MSの企業サポートがたくさんあります) 。ですから、言うのは難しいです。しかし、間違いなくLINQとEntity Framework(そしてnHibernateでさえ)は他のほとんどの言語がORMSを持っていた後に出てきました。 MS MVCは、Django、Struts、Catalystなどの後に登場しました。したがって、最新/最高の発見の多くで遅れをとっています。
問題はそれほど開発者のトレーニングではありません。ほとんどの開発者は、オブジェクト指向言語のような別のCにさらされている場合、C#をすぐに理解できます。私は最初の仕事で1週間足らずで最初の.NETアプリケーションをノックアウトしました(それはVB.NETでしたが、VB.NETの学習ではなく、.NETフレームワーク、asp.netWebフォームのページライフサイクルに時間を費やしました。等..)。問題は「楽しい」要素です。多くの開発者は、Python/PHP/RubyをC#やJava(PHPよりもはるかに多くのPython/Ruby)よりもはるかに楽しんでいます。一部の開発者はそのままにしておくかもしれません。他の追加のフレームワーク/ライブラリも言語は、スクリプト言語の追加の生産性を超えて、ストレートC#よりも生産性を高めます。