マルチテナンシーまたはマルチインスタンス?
私はWebベースのSaaSソリューションを構築しようとしており、マルチテナンシーまたはマルチインスタンスを使用するかどうかわからないところに行きました。私が達成しようとしていることと、それぞれのアプローチの長所と短所(読んだことによると私の意見)について説明しようと思います。どちらか一方のアプローチで何かを見逃した場合に備えて、提案を含めてください。 私が構築しようとしているアプリケーションは、前述したように、企業がアカウントを作成できるSaaSソリューションであり、各アカウント/企業には独自のユーザー、顧客、製品、サービスなどがあります。各ユーザー; 会社の従業員は誰ですか。1つのアカウント/会社に関連するユーザーは、その会社の顧客、製品、およびサービスにのみアクセスできます。企業は無制限の数の顧客、製品、サービスを持つことができるため、各企業には独自のデータセンターが必要です。 そのため、共有データベース(ログインのためにすべてのユーザーの資格情報を保存する)と複数のデータベース共有スキーマ(アカウント/会社ごとのデータベース)を作成することにしました。基本的に、マルチテナント。 次に、誰かが代わりにマルチインスタンスを使用することを提案しました。そこでは、各会社が他の会社から完全に分離されたアプリケーションの独自のインスタンス(つまり、コード、ライブラリ、データベース、フレームワークなど)を持ちます。これは、各テナントのユーザーが会社のデータにのみアクセスできることを確認する必要がある追加のレイヤーを処理する必要がないため、より良いように聞こえます。私がこのアプローチを達成するためにDockerに依存していることを言及するのは良いことだと思います(私は以前にそれを使用したことがありません)が、機能が不足していると思います(詳細は後で説明します)将来必要になるでしょう(少なくとも私はしませんでした)少し検索しても見つかりません)。 ただし、どちらのアプローチにも長所と短所があるため、どちらのアプローチを選択するか決定できませんでした。ここにリストがありますが、両方の知識が不足しているので、私にはわかりません。私が知らないことや、Webで見つけられなかった問題の解決策がある可能性があります。[各アプローチには私が1つずつ比較した順序付けられたリスト] マルチテナンシー: 共有ホスト/ハードウェア、共有コード、およびマルチデータベース。 それはだ簡単にコードと修正のバグの機能(共有コード)を拡張します。 ハードウェアを拡張する(クラウドサービスを使用できる)か、コードに変更を加えずに個々のテナントのデータベースを別のシステムに移動するのは困難です。 最も重要なことは、前述したように、ユーザーが実際に自分の会社に属していて、他の会社の情報にアクセスしていないことを確認するために、システムに追加のレイヤーを追加する必要があります。 マルチインスタンス: 共有または非共有のホスト/ハードウェア、インスタンスごとのコード、インスタンスごとのデータベース。 それはだ難しく(あなたは1つのインスタンスまたはドッカーコンテナに機能/機能を追加し、他の人にそれを展開することができドッカーでそれを行う方法がある場合、私はわからない)機能や修正のバグを拡張します。 それはだ簡単に別のホスト/ハードウェアに全体のインスタンスを移動すること。 インスタンスとして、各インスタンスは独自のデータベースを持っているので、そのレイヤーを処理する必要はありません。 (各テナントのインスタンスを手動で作成するなどして)手動で何かを実行したい場合は、長所と短所のすべてが冗長であり、それがDockerソリューションを疑う理由です。質問の理由。解決策を参照して質問に答えていただければ幸いです。なぜこのアプローチが他のアプローチよりも優れていると思いますか。 それが役立つ場合(多分?)、バックエンド(すべてRESTful)のメインフレームワークとしてLaravelを使用しています。