Costruiamo soluzioni aziendali a 3 livelli che in genere sono costituite da diversi moduli webapp e ejbjar che parlano tutti di un db e hanno diversi punti di integrazione esterni.Migliori pratiche di configurazione delle soluzioni JavaEE
Ogni modulo in genere richiede le proprie configurazioni che possono modificare la durata della soluzione. Il deploying diventa un incubo perché ora abbiamo 18 file di proprietà che devono essere ricordati per essere copiati e configurati anche impostando sorgenti di dati, code, requisiti di memoria ecc.
Sono fiducioso ma non ottimista sul fatto che ci possa essere un modo migliore. Alcune opzioni Abbiamo considerato/usato, ognuno con i suoi pro e contro:
- utilizzare i progetti Maven multipla e l'integrazione continua (es. Hudson o Jenkins) per costruire un barattolo di configurazione che include tutti i file di proprietà per ogni ambiente (dev, qa, prod) e quindi raggruppare tutto come un EAR. Ma poi le cose non possono essere facilmente modificate in produzione quando necessario.
- Metti la maggior parte delle impostazioni nel DB e disponi di una schermata semplice per modificarlo. Internamente possiamo avere un EJB di servizio di configurazione generico in grado di leggere e modificare i valori. Ogni modulo può avere una versione estesa personalizzata con getter e setter specifici.
- La versione controlla tutti i file delle proprietà, quindi li controlla in produzione e li controlla in un ramo di produzione dopo aver apportato le modifiche.
Con tutti questi è ancora necessario configurare fonti dati e le code, ecc in modo specifico contenitore :(
E si scopre una modifica della configurazione in un cambiamento di database. L'app del mio attuale datore di lavoro fa questo. Non è divertente. Replichiamo i database tra gli ambienti e, in caso di necessità, le impostazioni. Costruiamo database diversi per scopi diversi in dev, e dobbiamo configurare le impostazioni in. Non è possibile modificare un file e riavviare se si desidera modificare qualcosa, è necessario colpire il database. Ho lavorato con delle belle configurazioni basate su file e le ho preferite. –
@TomAnderson - spiega perché la modifica di una riga di database è più complicata rispetto alla modifica di un file. Invece di "sostituire i database tra envs", dovrai "replicare i file di configurazione tra envs". Ad ogni modo, non trasformiamo questo in una vera discussione (magari continuate su Chat se volete), solo dicendo che sono molto simili per natura, e trovo che DB sia più facile da usare per grandi configurazioni. – ripper234
Questo è un posto migliore per discutere, perché la discussione è lì per le generazioni future da leggere. Ad ogni modo, non volevo dire che questo approccio non va bene, mi dispiace; solo che arriva con le sue complicazioni. –