web-dev-qa-db-ja.com

Webアプリケーションの展開:すべてのクライアントまたは各クライアントに1つのバージョン

ソフトウェアの展開について一般的な質問があります。職場では、Webブラウザを介して使用されるCRMを設計しています。最近、特定のクライアントごとに独自のサーバーがあると言われました(サーバーは私の会社が所有していますが、どちらも彼らのオフィスにありません)。

それは私を少し困らせます。私の見解では、Webアプリケーションを設計するとき、彼はすべてのクライアントに対して1つの「ソフト」実行を維持できることを念頭に置いておく必要があります(レプリケーションや負荷分散については話していません)。それぞれ、ただし1つのアプリケーション...これは特に、パッチとアップグレードで全員を最新の状態に維持および維持するのに役立ちます。私が間違っている ??リソースを使ってこの質問をよりよく理解するのを手伝っていただけませんか(自分で見つけるには適切なキーワードが不足しているに違いありません)。なぜ彼らが「すべての人に1つの集中型Webアプリケーション」と「それぞれに1つの分散型デスクトップアプリケーション」の間で「第3の道」を通過したのか理解できません。

ありがとうございました !

7
Shirraz

アプローチによって異なります。今日のテクノロジーと同じ数千台のサーバー(Docker、Puppet、Chef、ansibleなどのジョブ自動化ツール-数百台)を維持する方がはるかに簡単です。

顧客ごとに1台のサーバーを用意することで、顧客ごとにリソースをより正確に計画し、実際に使用した分だけ支払うことができます。また、問題が小さくなり、いくつかの利点もあります。

1つのデータベースに合計2TBのデータを持つ1000人の顧客がいると想像してください。このようなデータベースを十分に高速にするには、開発者はSQLクエリを完全に作成する必要があります。この問題は、顧客ごとにデータベースが小さいため、はるかに小さくなります。

考えるべきもう1つの問題はセキュリティです。アプリケーションレベルで顧客を分離する必要がある場合、開発者はどのデータを選択するかについて非常に注意する必要があります。顧客ごとに1つのデータベースがある場合、別の顧客データをリークする可能性は低くなります。

一方、すべての顧客に対して単一のインスタンスを使用すると、顧客間でリソースを共有し、ハードウェアのコストをいくらか節約できます。

したがって、この決定は、長所と短所のリストを作成した後、プロジェクトの開始時に行う必要があります。また、いくつかのプロトタイプを作成することをお勧めします。展開プロセス、データベースの移行などは問題になりません。

私の経験から、多くのインスタンスの管理に対処できる場合は、顧客ごとにインスタンスを作成することを個人的に提案します。

6
Yarik Dot

顧客ごとにサーバーを分離すると、顧客のデータを分離するメリットが得られ、複数のバージョンのアプリケーションを使用できるようになります。しかし、いくつかの欠点があります。サーバーにより多くのお金を費やし(顧客間でリソースを簡単に共有できないため)、デプロイをかなりうまく管理できます。また、すべてのクライアントでデータベースが1つしかない場合は、データ構造やライブラリの要件に重大な変更がないことを確認する必要があります。あなたはいくつかのマップクライアントを持っている必要があります-管理するためのアプリバージョンも。

環境内の各クライアントに同じバージョンのソフトウェアがあり、サーバーの保守とスケーリングに役立ちます(他のサーバーと同じ新しいサーバーを展開して、ロードバランサーに追加するだけです)。また、顧客ごとに異なるエンドポイントを操作する必要はありません。

3

これはかなり初期段階のセットアップだと思います。リソースのオーバーヘッドの上に別々のサーバーを維持することが悪い考えであると思う理由は次のとおりです。

  • 拡張機能が1人の顧客と別の顧客のために開発されているという重大なリスクがあり、それがさらに将来の競合を引き起こします。短期的なビジネス上の理由から、これはあなたが決して振り払うことができないであろう技術的負債を明らかにするかもしれません。将来、これらの競合する機能をマージするのが難しくなりすぎて、古いバージョンでこれらのカスタマイズクライアントを放棄するか、不要なときにそれらを使い続けるかを選択することになります。

  • 多国籍または複数の州のクライアント、あるいは業界での一連の買収でさえ、データが分離されているシステムを必要とする場合がありますが、本社全体で報告することができます。これにより、いずれの場合もマルチテナントバージョンが必要になり、データベースを分離するメリットが失われます。

  • 成功したすべてのSaas企業は、最終的に、集約されたデータを、業界統計、学習機会などの匿名の機能の組み合わせに使用します。これは、XeroやMailchimpでうまく使用されているのを見たことがあり、このデータは非常に価値があると思います。

1
jdog