Sto iniziando a progettare un'applicazione web e sto valutando alcune decisioni relative alla sua struttura generale. Il mio caso d'uso è il seguente:
- Ho intenzione di avere più clienti su un singolo server. Inizialmente non ci saranno molti clienti, probabilmente due per iniziare (ma il sistema dovrebbe essere pronto per ulteriori, ovviamente). Poiché lavoro come singolo sviluppatore, voglio risparmiare sui costi nei server, nei certificati SSL e così via
- Ogni cliente può avere utenti diversi per i propri dati, con autorizzazioni diverse
- Un cliente non dovrebbe essere in grado di accedere ai dati di altri clienti, a meno che l'altro non lo consenta esplicitamente (cioè di creare un utente per lui)
Stavo valutando come gestire questo scenario di più clienti, e al momento sto pianificando di separare ciascun cliente nel suo DB (e decidere quale DB collegarsi con l'URL del cliente, per esempio). La gestione di tutto nello stesso DB sarebbe, credo, soggetta a errori (un errore nell'app consentirebbe a un cliente di visualizzare i dati che non dovrebbe) e complicare il mio progetto (dovrei memorizzare il cliente con tutti i dati).
Quindi vorrei sapere quali sono i vantaggi e gli svantaggi associati a questo tipo di design. C'è un problema di prestazioni? Problemi di manutenzione? Problemi di sicurezza?
Se questo è importante, la mia piattaforma di scelta è Python + Flask + SQLAlchemy (anche se sto valutando anche Django)