File delle proprietà Java per entrambe le operazioni e gli sviluppatori

4

Abbiamo un'applicazione aziendale. Costruisci Maven, circa 20 sottomoduli con più sottomoduli. Abbiamo un Ops dedicato (operazioni) che distribuisce la nostra applicazione a 10 cluster. Le installazioni hanno versioni diverse, circa 5 clienti in totale. Linguaggio Java Stiamo sviluppando attivamente tutte le parti dell'applicazione in modo che tutto possa cambiare (non siamo in modalità di manutenzione). L'applicazione viene eseguita in Tomcat, in Linux; distribuito in file di guerra Java.

Al momento tutte le configurazioni dell'applicazione (host db, ecc.) sono mantenute nei file delle proprietà Java. Questi file si trovano nel percorso globale /opt/app/conf . Questo è utile per gli operatori perché possono facilmente modificare la configurazione di una particolare installazione. Tuttavia, per gli sviluppatori è difficile perché le proprietà non sono memorizzate nel nostro repository di controllo della versione. Crea anche una "dipendenza" hardcoded su un percorso globale, il che significa che è difficile per uno sviluppatore avere diverse copie del repository (o ramo) allo stesso tempo. Inoltre, a volte i file delle proprietà non sono "sincronizzati" con il codice (poiché non sono insieme in VCS).

Abbiamo preso in considerazione diverse alternative a questa situazione, ma la maggior parte di esse avrebbe chiaramente favorito le operazioni ops o dev, non entrambe. Qualche idea?

    
posta Mikko Koivunalho 14.12.2016 - 12:52
fonte

2 risposte

9

Utilizza un approccio a livelli (non tutti i livelli sono necessari):

  1. Carica le proprietà di base da classpath.
  2. Esegui l'override con le proprietà da /opt/app/conf , IFF tale file esiste.
  3. Esegui l'override con le proprietà da $HOME/app/conf , IFF tale file esiste.
  4. Esegui l'override con le proprietà specificate utilizzando le variabili di ambiente.

Potresti anche usare le variazioni su questo approccio, come usare una variabile d'ambiente per specificare la posizione di un file delle proprietà.

    
risposta data 14.12.2016 - 13:47
fonte
2

Una cosa che dovresti prendere in considerazione è l'allontanamento dai file war e l'esecuzione di Tomcat come applicazione incorporata. Dopo averlo fatto, puoi facilmente risolvere questo problema rendendo il percorso della configurazione globale un argomento facoltativo per il programma. Gli operatori non dovranno preoccuparsene e gli sviluppatori hanno un semplice controllo diretto su quale configurazione vogliono usare.

Un sacco di problemi che affliggono le applicazioni Java EE svaniscono quando ci si sposta in modalità incorporata. In particolare, è molto meno complicato per gli Operatori. L'app è in esecuzione o non lo è. Questo ti mette anche abbastanza per la containerizzazione.

    
risposta data 14.12.2016 - 17:26
fonte

Leggi altre domande sui tag