Servizio di backup significa che il tuo codice dovrebbe essere indipendente dal servizio Database, Binary Storage, ecc che stai utilizzando:
// BAD:
let user = createNewUser(); // assuming it will create a new user to be saved to DB
oracleDatabase.save(user);
// GOOD:
let user = createNewUser(); // assuming it will create a new user to be saved to DB
database.save(user);
In altre parole, dovrebbe esserci un'astrazione di alto livello in modo che l'app interagisca con un adattatore (come un adattatore di database) piuttosto che un componente di basso livello (come un componente del database Oracle).
Per quanto riguarda la configurazione, significa che dovresti memorizzare la tua configurazione in un posto dove per cambiarla, non è necessario ricompilare / ridistribuire / etc. Ad esempio:
Supponiamo che tu abbia un'app Web e una classe come questa:
class Constants {
const DB_HOST = "72.234.45.223";
const DB_USER = "admin";
...
const MAIL_DRIVER = "smtp";
}
Ma il reparto IT sposta il database su un altro server. O vuoi eseguire la tua app nel tuo computer di sviluppo. In entrambi i casi è necessario ricompilare e ridistribuire l'applicazione. Nell'esempio della macchina di sviluppo, dovresti modificare i valori prima di confermare le modifiche al sistema di controllo della versione.
Ora, se lo memorizzi in un file di configurazione, o nelle variabili di ambiente, non dovresti ricompilare o ridistribuire. Invece, l'app leggerà questi valori in runtime e sarà sufficiente modificare il file di configurazione. Inoltre, poiché il file di configurazione non dovrebbe essere nel controllo della versione , non dovrai preoccuparti di commettere una modifica al repository principale che altererebbe questi valori e interromperà l'intera produzione.
Potresti voler controllare dotenv ( ruby , php , python e forse ci sono altre lingue) per un modo semplice per farlo con le variabili di ambiente.