Oggi, io e il mio collega abbiamo avuto opinioni divergenti sull'uso dei valori predefiniti nella configurazione del software. Entrambi abbiamo convenuto che per un software consumer, la configurazione predefinita dovrebbe essere determinata dall'uso più comune e dall'esperienza utente.
Tuttavia, la contesa riguarda l'utilizzo di valori predefiniti per servizi distribuiti di tipo enterprise in cui sono presenti più ambienti di distribuzione (produzione, sviluppo, fase, ecc.). Pensa agli host API, agli endpoint, ai percorsi, alle costanti, ecc. Predefiniti come variabili di configurazione. La mia opinione è che i valori predefiniti dovrebbero essere qualcosa che ha più senso per i clienti di produzione . Tieni presente che questo non include credenziali di autenticazione / sensibili, certificati, ecc., Poiché gli sviluppatori non dovrebbero avere accesso diretto a tali parametri di produzione.
Pro:
- Rende più facile il lavoro di TechOps. Si basano sul paradigma convention over configuration . TechOps può concentrarsi rigorosamente sull'infrastruttura e non sulle impostazioni specifiche dell'applicazione.
- L'ambiente di uno sviluppatore prova a imitare un ambiente di produzione. Uno sviluppatore sa facilmente quali saranno i valori delle impostazioni specifiche, per la maggior parte (se non tutti) i clienti di produzione. Lui / lei ha bisogno di cercare la fonte e non deve
ssh
configurazioni del cliente.
Contro:
- Molto spesso, l'ambiente dello sviluppatore non è compatibile con la produzione perché non tutti i componenti vengono creati da ogni sviluppatore, né ogni sviluppatore è preoccupato per ogni componente. Diventa responsabilità dello sviluppatore impostare la propria configurazione di conseguenza.
- Porta a scrivere un codice difensivo che altrimenti non sarebbe mai necessario per gli scenari di produzione. Ad esempio, nel nostro caso per una configurazione di sviluppo, una connessione HTTP viene ritentata a causa della configurazione predefinita e quindi restituita dopo aver ricevuto un 404. Nella configurazione di produzione, TechOps avrebbe garantito la disponibilità e l'endpoint corretto.
Un giusto compromesso, IMO, consiste nell'impostare diverse configurazioni predefinite per ogni ambiente e utilizzare script per la loro distribuzione. Tuttavia, questo non è il modo in cui il nostro software è progettato al momento.
Nell'età odierna del CICD, (usando la finestra mobile, per esempio) quanto è rilevante il paradigma convenzione sulla configurazione . Quali sono gli approcci preferiti per selezionare tali valori predefiniti?
EDIT: Lettura interessante è Valori predefiniti - sono buoni o cattivi ? che è simile ma mette in dubbio l'esistenza dei valori predefiniti, che non è esattamente la stessa.
EDIT2: per coloro che considerano il downvoting, si prega di considerare di lasciare un commento su cosa dovrebbe essere migliorato o sbagliato nella domanda. Sarà utile per i nuovi arrivati come me su questo SE.