Sto provando a creare una soluzione SaaS basata sul Web e ho trovato una strada in cui non sono sicuro di utilizzare multi tenancy o multiistanza. Cercherò di descrivere quello che sto cercando di ottenere, e ogni approccio vantaggi e svantaggi (secondo me, secondo ciò che ho letto). Per favore includi i tuoi suggerimenti nel caso in cui mi sia sfuggito qualcosa in un approccio rispetto all'altro.Multi tenancy o multiistanza?
L'applicazione che sto cercando di creare è, come ho detto, una soluzione SaaS in cui le aziende possono creare i propri account e ogni account/azienda ha i propri utenti, clienti, prodotti, servizi ... ecc. Ogni utente; chi è un dipendente della società; relativo a un account/azienda avrà accesso solo ai suoi clienti, prodotti e servizi. Le aziende potrebbero avere un numero illimitato di clienti, prodotti e servizi, quindi ogni azienda dovrebbe avere il proprio data center.
Per questo ho deciso di creare un database condiviso (salvando tutte le credenziali degli utenti a scopo di accesso) e più database schema condiviso (database per account/azienda). Fondamentalmente, Multi Tenancy.
Poi qualcuno ha suggerito di utilizzare Multi grado invece, in cui ogni azienda avrà una propria istanza dell'applicazione (vale a dire il codice, librerie, database, quadri, ecc ...) totalmente separato dalle altre aziende. Questo suona meglio in quanto non devo occuparmi di un ulteriore livello in cui ho bisogno di assicurarmi che gli utenti di ciascun inquilino abbiano accesso solo ai dati della loro azienda. Penso che sia bello dire che sto dipendendo da Docker per raggiungere questo approccio (non l'ho mai usato prima), ma penso che manchi di funzionalità (più su quelle successive) di cui avrò bisogno in futuro (almeno Non li ho trovati con un po 'di ricerca).
Tuttavia, ogni approccio ha pro e contro, quindi non ho potuto decidere con quale approccio andare. Ecco una lista, ma nuda con me perché mi manca la conoscenza di entrambi, quindi potrebbe esserci qualcosa di cui non sono a conoscenza, o una soluzione per un problema che non ho trovato sul web: [Ogni approccio ha un elenco ordinato di cui ho seguito un uno per uno confronto]
multi tenancy:
- condivisa host/hardware, codice condiviso, e multi database.
- È più semplice estendere la funzionalità del codice e correggere i bug (codice condiviso).
- È più rigido per estendere l'hardware (potrebbe utilizzare un servizio cloud) o spostare il database del singolo titolare su un altro sistema senza apportare modifiche al codice.
- Ancora più importante, come ho detto prima, ho bisogno di aggiungere un ulteriore livello al sistema per assicurarmi che l'utente appartenga effettivamente alla sua azienda e non acceda alle informazioni di altre società.
Multi Instance:
- concorrente o non condivisa host/hardware, il codice per esempio, e il database per istanza.
- È più rigido per estendere la funzionalità o correggere i bug (non sono sicuro se c'è un modo per farlo in Docker dove è possibile aggiungere funzionalità/funzionalità a un'istanza o contenitore Docker e distribuirlo agli altri).
- È più semplice per spostare l'intera istanza su un host/hardware diverso.
- Come istanza, non ho bisogno di occuparmi di quel livello poiché ogni istanza avrà il proprio database.
Tutti i vantaggi e gli svantaggi sono ridondanti nel caso in cui voglio fare nulla manualmente (come la creazione di un'istanza per ogni inquilino manualmente), ed è per questo dubito che la soluzione Docker, a meno che non ci sia un modo per risolvere questo , che è forse la ragione principale della domanda. Gradirei se rispondessi alla domanda con riferimenti alle soluzioni e perché pensi che questo approccio sia migliore dell'altro.
Nel caso che sarebbe di aiuto (forse?), Stiamo usando Laravel come il quadro principale per il back-end (tutto RESTfully).
Grazie. Risponderò alle tue domande come inizio. Ci saranno due clienti (aziende) all'inizio, quindi due istanze. Per la seconda domanda, solo un altro SaaS, potrebbe essere un successo o un fallimento, tuttavia, ci sarebbero almeno due clienti. È comprensibile che tutto dipenda dal caso d'uso, ma il modello di maturità a cui si è fatto riferimento tratta la soluzione multi-istanza come livello inferiore (livello 1) e l'altra soluzione multi-tenancy (livello 2) come livello superiore, ma io non vederlo così Inoltre non ha menzionato nulla del passaggio da un livello all'altro ... – Anas