私は、単一のインスタンスに対して手動で構成およびデプロイできる meteor.js アプリケーションを持っています。
ここで、アプリケーションのアーキテクチャをリファクタリングし、アプリケーションの周りにインフラストラクチャを構築して、アプリケーションをクライアントにデプロイして更新できるようにします。
クライアントがアプリにサインアップできるページにアクセスしてもらいたいのですが、インスタンスまたはテナンシーが自動的にセットアップされ、使用を開始できます。バックエンドには、アプリケーションの更新を管理するためのインフラストラクチャがあります。
行う必要があるいくつかの明白な決定があります。
- マルチテナントになるようにリファクタリングしますか? (より多くのアプリケーション コードの変更)
- マルチインスタンスになるようにリファクタリングしますか? (より多くのインフラストラクチャの構築とコード)
- ハイブリッドですか?(アプリケーションは 1 つ、データベースは複数)
上記の質問に対する正しい答えを決定するために、どのようなテストを適用しますか? それぞれの長所と短所は何ですか?
その決定が下されたら、適切なリファクタリングをガイドまたは刺激する設計パターンは存在しますか? また、マルチテナントまたはマルチインスタンス アプリを構築したことがない人向けに、どのような学習リソースが存在しますか?
そのマルチインスタンス化は、インスタンス化と更新をアプリケーション自体の一部にする必要がありますか、それともその部分を管理するために構築する必要があるコードとツールの別のレイヤーがありますか?