0

これは一連の質問のように見えますが、すべて私たちが構築してきた SaaS および PHP ベースのアプリケーションに関連しています。私たちはアプリケーション アーキテクチャを意識して研究しているため、本番環境に移行する前にすべての重要なテクニックに遭遇し、障害に直面することはありません。

SaaS をサポートするために、各顧客が独自のデータベースを持つデータベースをマルチテナントにすることにしました。私の心は、さらに質問のリストをたどってぐるぐる回っています。

  • 個々のテナントのニーズに合わせて SaaS マルチテナント アプリケーションをカスタマイズする機能を提供するにはどうすればよいですか?

  • お互いのデータに誤ってアクセスしないように、各テナント データベースのセキュリティを確保するにはどうすればよいですか?

  • クラスターとは何ですか?また、no が増えた場合に、アプリケーションとデータベースの新しいインスタンスをクラスターに追加するにはどうすればよいですか? 顧客の?

  • SaaS Web サイトのパフォーマンスとスケーラビリティを確保するために何をしますか?

  • SaaS アプリケーションの障害、特に新しいバージョンや更新を開始するとき (継続的インテグレーション) をどのように処理しますか?

  • サブスクライバー/顧客と、SaaS アプリケーションでアクティブ化および非アクティブ化されたモジュールのアクセス許可を処理するための特別なソリューションはありますか?

採用することになったDBのブロック図を添付しました

4

1 に答える 1

0

PHP で SaaS アプリケーションを開発する際に考慮すべき項目の多くを記載した優れた記事を書きました。Zend Framework で PHP を使用した SaaS アプリケーション開発を確認する

あなたの質問のいくつかに対する答えは以下の通りです:

個々のテナントのニーズに合わせて SaaS マルチテナント アプリケーションをカスタマイズする機能を提供するにはどうすればよいですか?

通常のサイト開発と同じです。A から Z までのリソースがある場合、リーチ テナントの割り当てられたリソースまたはアクセス可能なリソースをデータベース内に保持する必要があります。次に、アクセス中にアクセス許可を簡単に確認できます。

お互いのデータに誤ってアクセスしないように、各テナント データベースのセキュリティを確保するにはどうすればよいですか?

SaaS アプリケーションのデータベース設計は、Stack Overflow で何度も議論されているトピックです。テナントごとに単一データベースまたは一意のデータベースを使用できます。大きなプロジェクトの場合は、2 番目の方法が適しています。

単一データベースを使用する場合は、テナント ID をすべてのテーブルに格納するだけです。次に、テナントの認証中に、リクエストの送信元のサブ ドメインに基づいて、テナント ID を SESSION に保持します。次に、すべてのデータベース操作でこの ID を渡すため、他のテナントのデータに誤って影響を与えることはありません。

于 2012-05-31T13:58:33.743 に答える