J'ai construit une application web avec NextJS que je vends en B2B, où les utilisateurs (les clients de mes clients) peuvent s'enregistrer dans un lieu. Ils fournissent leur nom et obtiennent un numéro d'enregistrement. L'application montre les informations relatives au client (heures d'ouverture, adresse, ).
La deuxième partie de l'application est un panneau d'administration permettant à mes clients de se connecter et de voir tous les noms et les numéros d'enregistrement et de fournir plus d'informations.
Actuellement, je suis en phase bêta et mes clients sont des entreprises d'amis, mais l'application se développe très bien et j'ai besoin d'une meilleure approche que la suivante :
- mon client achète un VPS et un domaine
- J'installe une pile LEMP
- J'utilise un proxy pour le domaine dans nginx vers localhost:3000.
- Je configure la base de données pour stocker les clients
- Je copie la racine de mon application sur le serveur et je la lance (npm run build && npm run start).
Je fais cela pour chaque client (actuellement 25). Quand il y a un nouveau client, ou une mise à jour de l'application, c'est un travail manuel difficile. Il est très important que les clients de mes clients ne voient pas que d'autres entreprises utilisent mon application.
Ce que je veux accomplir maintenant est l'idée suivante et je veux savoir s'il existe une meilleure approche ou si c'est une bonne pratique :
- Je veux passer à plus de 500 clients
- J'utilise mon propre VPS
- Chaque client obtient un sous-domaine de mon propre domaine (cela convient à mes clients).
- Mes clients n'ont plus besoin de serveurs supplémentaires
- Je crée une table dans ma base de données MySQL avec les informations sur le client (heures d'ouverture, adresse, ).
- Dans l'application Nextjs, je détecte le sous-domaine et interroge ma base de données.
- J'ai un pour les clients enregistrés liés à la table de configuration.
- Je commence un instance de mon application
- Je localise tous les sous-domaines dans cette seule instance.
- Mes clients ont un écran de connexion de l'administrateur et, une fois connecté, chargement des données liées à la connexion (en utilisant JWT pour que les clients ne puissent pas obtenir de données d'autres clients).
- Pour les nouveaux clients, j'ajoute simplement un nouveau sous-domaine et une ligne MySQL et ils sont prêts à partir. C'est facile à gérer et s'il y a une mise à jour, il me suffit de mettre à jour mon unique instance de l'application.
0 votes
Désolé, mais vous êtes en train de réinventer une application bien mise en œuvre. Votre question montre que vous avez beaucoup de travail à faire - plus que ce qui peut être discuté dans une seule question ici.
0 votes
Vous devez vous pencher sur le modèle d'application Multi-Tenant.