J'essaye de passer ADA (anciennement WAP) en SaaS, l'idée serait d'avoir l - Qwice

J'essaye de passer ADA (anciennement WAP) en SaaS, l'idée serait d'avoir l'application en ligne et accessible à tout le monde, mais je bute sur la phase de design technique, Je m'

Théo; - Qwice 2025

J'essaye de passer ADA (anciennement WAP) en SaaS, l'idée serait d'avoir l'application en ligne et accessible à tout le monde, mais je bute sur la phase de design technique, Je m'explique: Pour l'instant ADA est Open-Source, n'importe qui peut télécharger l'application et l'héberger sois même avec sa propre base de données et son serveur Web, si je transforme ça en SaaS, le version Web et la base de données sera héberger sur mes propres serveurs, mais à ce moment, une question se pose quand à la gestion des donnéesEst-ce que chaque client (ou tenant) aura sa propre base de données dédié sur le serveur pour gérer son équipe, ses tâches, projets, sprints, etc.. ou est-ce que j'utilise une base de données commune pour tout les tenantsLa première solution, nommé multi-tenants design, est plus sécurisé pour les données des clients, en isolant mieux les données il y a beaucoup moins de risque qu'une erreur de requête SQL fasse fuiter les données du projet d'un client chez un autre, ça permet aussi une très bonne scalabilite verticale (ajout de base de données à la volé) et horizontale (ajour d'un serveur supplémentaire pour rajouter des bases de données si nécessaire), mais ça prends beaucoup plus de ressources car il faut maintenir les pools de connections aux différentes base de données ouvertes en tout temps sur les serveurs (potentiellement fermée et ré-ouvrir la pool en fonction de la demande et de l'activité du client pour économiser de la ressource) mais aussi de la ressource disque car plusieurs bases de données ça demande plus de place sur un serveur MySQL. Mais ça pose aussi un problème de maintenance, c'est beaucoup plus dur de migrer N bases de données plutôt que juste une en cas de mises à jour, détecter les erreurs est aussi plus difficile vu que si une erreur arrive sur une base elle sera localisé plutôt que sur l'entièreté du serveur, et ne parlons même pas des backups car ça ça va être un enferLa solution avec une base de données pour tout le monde est beaucoup moins cher car moins coûteuses en ressource, en temps de maintenance, et en backups, mais moins sécurisé et moins scalableAussi, avec une seule base de données pour tout le monde, il n'est pas possible de rajouter des feature spécifiques à la demande d'un client, il faut obligatoirement les mettre en place pour tout le monde, donc ça demande beaucoup plus de temps de développement car une feature généralisé a l'ensemble des utilisateurs doit être beaucoup mais alors BEAUCOUP plus testée et assuré qu'une feature déployé localement pour un seul clientJe n'ai par ailleurs pas l'habitude de travailler en multi-tenant, donc bien que ça s'apprenne, créer une base de données et sa connections à la volé de manière sécurisé n'est pas quelque chose que je maîtrise comme le fait de gérer une seule base de données et sa maintenance, donc ça me coûterait aussi en apprentissageEn bref c'est la première fois que j'essaye de me lancer dans un système aussi complexe, et je n'arrive pas à savoir quel est la bonne solution à mon problème, je n'arrive même pas à savoir si il y en as une.Merci d'avoir fait les canards en plastiques en lisant ce texte, je suis ouvert à toutes remarques et suggestions, même de gens n'y connaissant rien à la tech et qui souhaitent comprendre de quoi je parle, même les questions sont les bienvenues, ça peut toujours être utile et peut-être qu'en vous lisant / répondant j'aurais soudain un éclair de génie, donc toute forme d'interaction peut être enrichissante

Animation