Cosa sono le variabili di ambiente "ortogonali"? [App a 12 fattori]

1

Stavo leggendo l' app a 12 fattori mentre pensavo al design di un progetto personale. Mi piace molto di ciò che ho letto, ma il seguente paragrafo mi ha confuso:

In a twelve-factor app, env vars are granular controls, each fully orthogonal to other env vars. They are never grouped together as “environments”, but instead are independently managed for each deploy. This is a model that scales up smoothly as the app naturally expands into more deploys over its lifetime.

Non capisco cosa significhi che ogni v env sia "completamente ortogonale" agli altri. Nell'uso colloquiale, generalmente considero l'ortogonalità come "essere in grado di cambiare senza riguardo ad altri elementi della collezione". Tuttavia, alcune cose che si interrompono naturalmente in più variabili env (ad esempio host di database, porta, nome utente e password) sono anche abbastanza interdipendenti.

Che cosa significa questa affermazione?

    
posta apnorton 28.03.2018 - 05:38
fonte

3 risposte

3

La chiave per capire che cosa sta dicendo l'autore si trova nel paragrafo precedente:

Another aspect of config management is grouping. Sometimes apps batch config into named groups (often called “environments”) named after specific deploys, such as the development, test, and production environments in Rails...

Quindi, per la parte che stai chiedendo,

In a twelve-factor app, env vars are granular controls, each fully orthogonal to other env vars. They are never grouped together as “environments”, but instead are independently managed for each deploy.

l'autore sta dicendo che ogni variabile d'ambiente può essere cambiata indipendentemente dalle altre. Quindi, piuttosto che limitarsi agli ambienti di sviluppo, test e produzione , puoi avere fattoriali (numero di variabili d'ambiente) ambienti.

È un bizzarro uso della parola "ortogonale", poiché - al di fuori della matematica delle carte x, y e dell'indipendenza statistica - è normalmente usato per indicare "non correlato", piuttosto che "indipendente" come l'autore usa qui, ma questa è solo semantica.

Naturalmente, i tester ti diranno che c'è un difetto nell'usare variabili d'ambiente come questa. Questa indipendenza significa che ci sono anche fattoriali (numero di variabili d'ambiente) per testare la copertura completa del test. Ma spesso la flessibilità e la scalabilità superano questo svantaggio.

    
risposta data 28.03.2018 - 10:06
fonte
1

'Ortogonale' significa indipendente l'uno dall'altro. Ciò implica che nessuna informazione viene duplicata o ripetuta in due variabili, come il nome di un server, e quindi una stringa di connessione che contiene il nome del server.

Nell'esempio, l'host del database, la porta, il nome utente e la password, sarebbero tutti ortogonali, poiché non ripetono nulla e sono modificabili in modo indipendente (a meno che non si ripeta la porta all'interno della variabile host del database, che ha poco senso)

    
risposta data 28.03.2018 - 06:02
fonte
0

Ortogonale significa che le variabili di ambiente si trovano su diversi assi dello spazio di configurazione multidimensionale. La modifica del valore di uno non ha alcun effetto sui valori degli altri.

Immagina la configurazione concreta del tuo sistema come punto in uno spazio multidimensionale in cui ogni dimensione è definita dai possibili valori di una variabile. Le variabili sono ortogonali se è possibile modificarne il valore e il punto (= il sistema) viene spostato solo sull'asse di questa variabile. Il punto non si sposta sull'asse di tutte le altre variabili.

Lo sterzo di un elicottero è non ortogonale. Il pilota deve sempre contrastare gli effetti collaterali di un cambiamento apportato a un elemento di guida, cambiando anche gli altri elementi dello sterzo.

Per rendere la configurazione ortogonale, ad esempio la modifica del nome host del server del database non deve costringere anche a cambiare nome utente e password. Deve essere possibile lasciarli inalterati senza rendere il sistema inutilizzabile.

    
risposta data 28.03.2018 - 07:05
fonte

Leggi altre domande sui tag