In base alla mia esperienza, è possibile promuovere una stretta comunicazione tra il team di sviluppo e il team di infrastruttura rilasciando frequentemente. Più rilascerai, più saprai effettivamente quale sia la variabilità tra i tuoi ambienti. Ciò consente anche di rimuovere la configurabilità non necessaria.
Un corollario alla legge di Conway si applica qui: i file di configurazione saranno simili alla varietà di ambienti in cui la tua app è dispiegata (pianificata o effettiva).
Quando ho un team che distribuisce applicazioni interne, tendo a guidare verso la configurazione del codice per tutti i problemi di architettura (pool di connessioni, ecc.) E config nei file per tutte le configurazioni ambientali (nomi utente, stringhe di connessione, indirizzi IP). Se ci sono diversi problemi architettonici tra diversi ambienti, allora li incapsulerei in una classe, e renderò quella parte classname dei file di configurazione - ad es.
container.config = FastInMemoryConfigurationForTesting container.config = ProductionSizedConfiguration
Ognuno di questi userà qualche configurazione comune, ma supera/sostituire quelle parti dell'architettura che devono essere sostituite.
Tuttavia, questo non è sempre appropriato. Ci sono diverse cose che influenzeranno la tua scelta:
1) il tempo necessario dopo il rilascio di una nuova goccia prima che venga distribuito correttamente in ogni ambiente di produzione e si riceve un feedback su tale ambiente (tempo di ciclo) 2) La variabilità in ambienti distribuiti 3) L'accuratezza del feedback raccolto dagli ambienti di produzione.
Quindi, quando si ha un cliente che distribuisce l'app ai propri team di sviluppo per l'implementazione, è necessario rendere l'app molto più configurabile rispetto a quando si esegue il live. È possibile che contenga ancora config nel codice, ma ciò richiede che il pubblico di destinazione comprenda il proprio codice. Se si utilizza un approccio di configurazione comune (ad esempio Spring), è più semplice per gli utenti finali adattarsi e risolvere i problemi nella loro produzione.
Ma una rubrica è: la configurabilità è un sostituto per la comunicazione.
Cosa intendi per "configurazione"? –
Ho trovato quello che ti manca: la conformità alle parole chiave. ;-) –
In primavera, la configurazione sarebbe il cablaggio insieme dei fagioli solitamente eseguiti tramite il file XML applicationContext.xml –