12

関連する質問: 集中型データベースを分割する最も効率的な方法は何ですか?

他の人に役立つように、この質問をかなり一般的なものにしようと思います。

約 3 年前に、統合された CRM と Web サイトを実装しました。私は顧客に好印象を与えたかったので、考えられる限り最も安価なアーキテクチャを実装しました。それは、中央データベースと Web サイトを Web サーバーでホストするというものでした。Web サービスを介して Web サーバーと通信するデスクトップ アプリケーションを作成しました (このアプリケーションは本社から実行されます)。

後から考えると、これはかなりばかげたことでした。会社が成長した今、彼らのインターネット接続は毎月ますます遅くなります. 現在、速度の問題により、デスクトップ ソフトウェアが定期的にタイムアウトになり、お客様には 3 つの選択肢が残されています。

  1. より高速なインターネット接続を購入します。
  2. データベース (および Web サイト) を社内サーバーに移動します。
  3. CRM データベースと Web データベースが分離されるようにアーキテクチャを再設計します。

最初のオプションは「最も簡単」ですが、長期的には決して安くはありません。2 番目のオプション。ウェブサイトを社内ホスティングに移行する場合、クライアントは、過負荷/貧弱/オフラインのインターネット接続、電力損失などの問題に対処する必要があります.そして最終的なオプション; クライアントは私がアーキテクチャを再設計および再コーディングするために多額の現金を支払うことを嫌がっています。

分散システムの設計をめちゃくちゃにして、どのオプションも機能しない場合から回復する方法はありますか? それとも、損失を減らし、間違いから学ぶだけですか? この問題をすぐに解決できる方法がないことを非常に残念に思います。

4

6 に答える 6

22
  1. あなたは失敗しませんでした。顧客は最も安いオプションを望んでいました、あなたはそれを彼らに与えました、これは彼らが延期したコストです。私はあなたがあなたの顧客のせいにされていないことを望みます。彼らがあなたを非難しているなら、それは彼らがメルセデスを欲しがっている間にシボレーにお金を払っている典型的なケースです。

    それによると:

  2. あなたの顧客は何をすべきかについてビジネス上の決定をする必要があります。あなたの仕事は、可能な限り正直で専門的な方法でそれぞれの選択の結果を彼らに説明し、選択を彼らに任せることです。

覚えておいてください、あなたは失敗しませんでした! あなたは彼らに何年にもわたって彼らのニーズに応えるソリューションを提供しました、そして彼らがシステムの設計基準を超えるまで彼らはそれに満足していました。3年後にシステムのスケーラビリティを再び維持する必要がない場合は、今すぐ支払う必要があります。ソフトウェアは魔法ではありません。

于 2010-03-01T13:10:10.290 に答える
10

次の場合を除いて、私はそれを失敗とは呼びません。

  1. トラフィックまたはパフォーマンスの要件がどれだけ増加するかはわかっていました。と
  2. パフォーマンスが低下するようにシステムを意図的に設計しました。と
  3. あなたは意図的にシステムを堅固で変化に適応できないように設計しました。

失敗は、当時の規模が要求していたよりもコストがかかる非常に複雑なシステムを過剰に設計することでした。

実際、必要に応じて、拡張性へのさらなる投資に資金を提供するために成長を使用して、現在ビジネスで活用できる範囲でのみ投資することをお勧めします。シンプルなリスク管理です。

確かに、おそらくあなたのソフトウェアの助けを借りて、ビジネスが時間とともに成長するにつれて、彼らはまた、次のレベルのために何かを取っておきました。彼らはあなたに期待を超えて彼らのビジネスを成長させるのを手伝ってくれてあなたに感謝しているべきです、そしてあなたが彼らが次のレベルの成長に進むのを手伝うことができるようにあなたにお金を投げます。

これらの3つのオプションはすべて良いかもしれません。どちらが最適かは、費用便益分析、ROIなどによって異なります。これは部分的には技術的な決定ですが、ほとんどはビジネス上の決定です。

現在まで、そして将来にわたって成長するビジネスの構築を支援していただき、ありがとうございます。

于 2010-03-01T13:10:52.787 に答える
4

タイムアウトの原因はインターネット接続であり、Web サービス/CRM システムのパフォーマンスの問題ではありませんか? タイムアウトとは、約 30 秒程度のことを意味すると仮定します。その場合は次のようになります。

  • インターネット接続に問題があるため、他の Web サイト (Google など) に対してこの種のタイムアウトが発生することは明らかです。
  • または、タイムアウトは、デスクトップ アプリケーション、Web サービス、または過度に大量の情報が前後に渡されることが原因で発生します。この場合、他のバグと同じようにパフォーマンスの問題に対処するか、方法を調べる必要があります。デスクトップ アプリケーションを最適化して、前後に渡される情報を少なくします。

並べ替え: あなたが現在持っているアーキテクチャは、(パフォーマンスの問題は別として) 会社の CRM システムへのアクセスは、一般ユーザーのシステムへのアクセスに匹敵するはずであることに基づいて、(基本的に) 私には問題ないようです。顧客は合理的な応答時間を持っていますが、会社もそうすべきです。

于 2010-03-01T13:16:49.480 に答える
2

データベースのコピーをローカル ネットワークにインストールします。次に、クライアント ソフトウェアがローカル コピーと通信できるようにし、データベース ソフトウェアがローカル データベース サーバーと Web サーバー上のデータベース間の同期を実行できるようにします。使用するデータベースによって異なりますが、一部のデータベースにはそれを機能させるためのツールがあります。MSSQL ではレプリケーションと呼ばれます。

于 2010-03-01T14:18:49.843 に答える
1

まず最初に、実際にどれだけのコードを破棄する必要がありますか?デスクトップクライアントにはどの言語を使用しましたか?何か.NETとあなたは、システムのロジックの良いチャックを救うことができ、UIといくつかの接続をやり直すだけでよいかもしれません。

私の考えでは、1と2は問題外ですが、1は実際の問題を解決しないのは良い考えかもしれません。そして、私たちエンジニアは、可能な限りクライアントに依存しないソリューションを構築するよう努めるべきです。そして2は彼らを彼らが専門家ではない何かに入るようにします、そしてそれは他の場所でホスティングを維持する方が良いです。

また、Webサービスについて言及しているので、実際にUIを失っているのはすべてですか?WebサーバーインターフェイスのWebサービスはいつでも再利用できます。

最後に、フレームワークを使用して、開始してそこから拡張するための単純なWebベースのCRUDを提供することを検討できます。

于 2010-03-01T13:10:48.443 に答える
1

接続が飽和していると確信していますか? あらゆる種類のネットワーク、I/O、およびデータベースの問題が発生する可能性があります...まだ行っていない場合は、wireshark を使用してトラフィックを分析してください。スループットを測定し、結果を共有してください。

于 2010-03-01T14:41:06.117 に答える