la mia domanda sarà un po 'filosofica e "orientata all'architettura" quindi portami con me.
In questo momento abbiamo un'applicazione web Java esistente basata su Spring e JSF (facelets) con Maven. Questi sono fondamentalmente i nostri strumenti che limitano il nostro ambito di possibili soluzioni.
Ora al punto. Dobbiamo implementare un fork di questa applicazione che verrà eseguita su domini diversi per "consumatori finali" diversi e implementare alcune richieste di modifica per entrambe le versioni, ma la base di codice di queste versioni sarà probabilmente sempre ~ 90% uguale . Le stesse richieste di modifica possono essere definite per l'implementazione in entrambe le versioni simultaneamente, ma potrebbero venire anche richieste di modifica separate solo per la versione scelta. Non abbiamo alcun controllo su quali richieste di modifica potrebbero verificarsi in seguito nel progetto (ma ce ne stiamo aspettando parecchie). Le differenze di funzionalità possono verificarsi sia su bean che sulla vista dell'applicazione.
Non vogliamo creare 2 progetti completamente separati poiché le modifiche all'implementazione potrebbero a volte significare implementarle due volte. IL GRANDE NUMERO È che ci aspettiamo di avere ancora più forche in futuro in modo che lo sforzo possa moltiplicarsi ulteriormente.
La domanda è quali modi di controllo o modelli architettonici possiamo introdurre per promuovere una migliore sostenibilità dei nostri progetti. Una soluzione potrebbe essere ad esempio:
- utilizzando i profili Spring per iniettare componenti adeguati in base all'attuale fork of application e completamente separando l'implementazione della vista (xhtml).
In sintesi, stiamo cercando il modo migliore per implementare modifiche a livello di applicazione che possono essere isolate e attivate solo in base a una variabile di contesto (come propagarla ovunque?).
Ogni input, idea o nuova prospettiva è apprezzato.