概念的な簡単な質問があります。
最近、私は (オンザフライで) クライアントを作成できるアプリの開発を開始しました。クライアントは、他の多くのもの (独自のログインなど) を持つプロジェクトを作成できます。
ユーザーがプロジェクトにアクセスするための URL 構造は「example.com/client1/project1」です。これまでのところ、DBモデルとルーティングなどですべて管理しました.
構造例:
-> Client -> Project -> User
-> Forum -> Topic -> Post
-> Message
-> Setting
-> [...] (you get the gist)
ただし、少数のクライアント (< 15) しか存在しないため、クライアントごとに個別の app-folder と DB を使用する方がよいかどうか疑問に思っていました。このようにして、各クライアントのアップグレードを個別にロールアウトすることもできます。
ここで、この問題に関する私の最初の考え(個別のインストールに進みます):
長所:アプリを分ける
- クライアントごとに更新と新機能を個別にロールアウトする機能 (一部の新機能は一部のクライアントに歓迎されない可能性があります)
- 1 つの DB のエラーは 1 つのクライアントにのみ影響します
反対: 別のアプリ
- すべてのアプリを監視し、更新をグローバルに適用するという点で、より多くのメンテナンス作業 (ただし、クライアントの数を考えると、これは実際には問題ではありません)
- 異なるバージョンなどで本当に混乱する可能性があります。
- すべてのアプリにアクセスできるスーパー管理者を実装する機能がない (アプリ レベルで行う必要がある)
- 共有機能とデータの作成が困難 (クライアントへの課金など)
- 悪い習慣?
すべてのインストールをマージしたい場合でも、すべてが UUID に基づいているため、これは実際には問題になりません。さらに、クライアント モデルを実装し、残りはすべてクライアント モデルに依存します。この方法では、データベースとクライアントのファイルを 1 つのアプリ インストールに結合するだけです (誰もが同じ機能を望んでいる場合)。 .
注: CakePHP のコア ライブラリは、どのような場合でも共有されるため、ここでは問題になりません。
この場合、あなたはどう思いますか?私が見ることができる唯一の問題は、請求に関するものです。
しかし、各クライアント内から中央の DB を呼び出して、「請求が必要なものを作成したばかりです」と知らせることは問題ではありません。
単一のアプリで行う場合、特定のクライアントを一部の更新から除外するにはどうすればよいですか? それとも、全員に新しい機能に慣れさせるだけでよいのでしょうか?