Multi-Tenancy è un'opzione percorribile in qualsiasi Framework RAD Java?

2

Ho lavorato come sviluppatore web Java full stack per molti anni e tutti i progetti su cui ho lavorato sono vere per tutti e due:

  1. Erano tutte applicazioni multi-tenant con un database / un'architettura di schema
  2. Non hanno mai utilizzato un framework di sviluppo rapido delle applicazioni (solo J2EE e Spring)

Non posso negare che ci sia un sacco di codice della piastra di riscaldamento in molte delle cose che faccio per le mie attività quotidiane quindi sono interessato a padroneggiare un framework Rapid Application Development che non comprometterà al potere e sosterrà un'architettura multi-tenant. Devo investire una grande quantità di energia nella scrittura, testare e mantenere le classi DAO, oltre a fare in modo che le operazioni CRUD siano abbastanza sicure da assicurare che un tenant non possa accedere / modificare i dati di un altro titolare, quindi sembra un'opzione in stile Hibernate come se fosse un grande risparmio di tempo.

Tuttavia, Hibernate non supporta i database multi-tenant che sono uno schema db / uno. Rabbrividisco all'idea di database o schemi separati per cliente. Per prima cosa saremmo ospitati da remoto, quindi immagino che i costi di supporto di molti database per molti piccoli clienti, molti dei quali potrebbero non essere nemmeno utenti attivi, sarebbero proibitivi. In secondo luogo, un sacco di supporto tecnico va alla ricerca di anomalie dei dati nel database, e la possibilità di interrogare i dati in una posizione centrale è un risparmio di tempo inestimabile.

Spring Boot sembra una buona scelta qui, ma è basato su Hibernate che non consente ancora l'uso di un approccio Discriminator (che consentirebbe un one-database / one-schema) modello. Esiste un valido framework RAD che funzioni bene allo sviluppo di Multi-Tenant Enterprise? In alternativa, è facile / possibile implementare tale architettura in un framework esistente?

    
posta IcedDante 25.07.2016 - 17:30
fonte

1 risposta

1

Le persone hanno idee diverse su RAD - di fatto, è una frase usata raramente in questi giorni. Tecnologie come Spring Roo sono ottime per la prototipazione, ma di solito non vengono utilizzate per le app commerciali. Una volta che la tua app ha un certo grado di personalizzazione, Roo è più un problema che un aiuto. Tecnologie come Hibernate o Vaadin - che alcuni chiamerebbero RAD - sono ampiamente utilizzate nelle app commerciali.

Hibernate può certamente fare multi-tenant se si aggiungono manualmente i criteri del tenant alle clausole e si specifica il tenant sui nuovi oggetti. Se vuoi qualcosa di più automatico, ho scritto un blog sull'approccio per SQLAlchemy. Potresti fare lo stesso con Hibernate. link

Il Virtual Private Database (chiamato anche sicurezza a livello di riga) è un'altra opzione. Non ignorare i database in esecuzione per tenant o le istanze delle app. Pur comprendendo le tue obiezioni, ho visto molti sistemi di grande successo (e proficui) che funzionano in questo modo.

    
risposta data 25.07.2016 - 18:54
fonte

Leggi altre domande sui tag