0

Web アプリケーションのモジュール化に関する意見を募集しています。言語に関係なく、ほとんどのアプリケーションにはすでにバックエンド DB があり、それぞれの Web アプリケーション サーバー (Apache、IIS、Lighttp など) との連携をサポートしていますが、私が扱った多くの開発者は、Memcached などの使用に問題を抱えています。 Web アプリの即時プロセス空間の外側。

Web アプリケーションのモジュール化は、私が信じているように良いことなのか、それともビジネス ロジックの特定の部分を Web フロント エンドから移動することをシニア デベロッパーから CTO に至るまで躊躇させている何かが欠けているのでしょうか。特殊なバックエンド サービス?

たとえば、数年前、非常にトラフィックの多い Web サイトのプロジェクト設計会議で、フロント エンド フレームワークからプロセス集約型の ACL ロジックを取り除き、それをセミクラスタリング可能なサービス アプリケーションに変えることを提案したとき、私は打ちのめされました。バックエンド。私にとってのメリットは、コードをより明確に分離できることと、たとえば PHP と Python の間のブリッジとして REST/JSON を使用することで、複数の場所で ACL ロジックを再利用できることでした。

私のアイデアに反対した開発者は、「複雑すぎる」と主張しましたが、どうすればいいのかわかりませんでした。私の主張は、プレゼンテーション レイヤーにタグ スープが存在する可能性があるのと同じように、コードのロジック スープが存在する可能性があり、多くの場合、問題が発生した場合に「外科的」修正を実行することはほぼ不可能になる可能性があるということです。

要するに、大規模なアプリケーションを独立しているが協調的なプロセス(スレッドやサブリクエストではない)に分割することの短所と長所は何ですか。MySQL、Memcache、同様のサービス プロセスは優れていますが、他のサービス プロセスが優れているのはなぜでしょうか? この道のりはどのように「複雑すぎる」のでしょうか?

4

2 に答える 2

1

「複雑すぎる」ということは、「自分のコンフォート ゾーンの外で考えたくない」という意味になる場合があります。

基本的な概念は良さそうです --- ここでは、非常にもっともらしいサービス指向アーキテクチャについて話しているのです。

さて、長所と短所に関する限り、最初に反対することは、実際に人々に彼らの快適ゾーンの外で考えさせる必要があるということです. より技術的な短所は、実質的にセッション状態を保持する必要があることです。認証サービスから認証トークンを取得するとします。そのトークンはどのようにして正しいユーザー セッションに関連付けられたままになりますか。

もう 1 つの問題は、デバッグがより動的に行われるため、デバッグが難しくなる可能性があることです。

ただし、長所として、セッション状態の問題を解決できれば、非常にスケーラブルなアーキテクチャが得られます。さらにサービスが必要な場合は、サーバーを拡大するか、単に別のサーバーを追加できます。

于 2009-02-16T06:54:50.670 に答える
1

私はコア サーバー/ビジネス ロジック機能を Web アプリケーション コードから分離するのが好きです。これにはいくつかの理由があります。

  1. ビジネス ロジックをより適切に制御できます。これを GUI コードと混ぜて混乱させる方法はありません。後で API を作成してコード機能を呼び出すことができるように、すべてのビジネス ロジックを個別に保持し、ビジネス ロジックが GUI コードに組み込まれないことを望みません。
  2. 最初から、クライアントからサーバーと通信するために自分で使用する必要がある優れた API を設計する必要があります。クライアントは、Web インターフェイスの場合もあれば、リモート ユーザーの場合もあります。
  3. 安定。GUI Web コードは簡単に間違って記述され、大量のメモリを消費するため、アプリ全体がダウンする可能性があります。
  4. スケーリングするために、これらの個別のコンポーネントを別のサーバーに移動できます。すでにクラスタリングが可能なキャッシング システムを使用している場合、キャッシング サーバーを追加するだけで簡単にスケールアップできます。
  5. アプリケーションの更新は GUI コードに対して最も頻繁に行われるため、ほとんどの場合、コア サービスを停止する必要はありません。
  6. 安全。セキュリティ コードがサーバー コードに実装されていることを確認できます。そのため、誰かが API を使用した場合、GUI コードに侵入したセキュリティ コードをバイパスすることはできません。

私たちのシステムには、Java アプリケーションとして実装されたコア「エンジン」サービスがあります。Web アプリケーションも Java で記述されており、(現在) 通信は RMI 経由です。私たちのサイト/アプリケーションは成長しており、memcached や JCS などのキャッシュ サービスの使用を開始する必要はまだありません。

于 2009-02-16T07:08:44.397 に答える