Architecture Decision Record

Active theme: Light

← Otsusekirjete näited

Keskkonnamuutujatega seadistamine

Sisukord:

Kokkuvõte

Küsimus

Tahame, et meie rakendused oleksid seadistatavad väljaspool artefakte/binaarfaile/lähtekoodi, nii et üks ehitus võiks käituda erinevalt sõltuvalt oma kasutuselevõtukeskkonnast.

  • Selle saavutamiseks tahame kasutada keskkonnamuutujatega seadistamist.

  • Tahame seadistust hallata failidega, mida saame versioonihaldusse panna.

  • Tahame pakkuda mõningast arendajakogemuse ergonoomikat, näiteks teadmist, mida saab seadistada, ja asjakohaseid vaikeväärtusi.

Otsus

Otsustasime .env-failide kasuks koos seotud vaikeväärtuste faili ja skeemifailiga.

Olek

Otsustatud. Oleme avatud uute võimaluste kaalumisele, kui need ilmnevad.

Üksikasjad

Eeldused

Eelistame rakenduse koodi ja keskkonnakoodi eraldamist. Eeldame, et rakendus peab erinevates keskkondades töötama erinevalt, nagu arenduskeskkond, testimiskeskkond, demokeskkond, tootmiskeskkond jne.

Eelistame valdkonna tava "12 factor app" ja veelgi enam sellega seotud tava "15 factor app".

Paljud meie varasemad projektid on kasutanud .env-faili või sarnase .env-kausta konventsiooni. On tavaline hoida neid versioonihaldusest väljas ja kasutada nende kasutusele võtmiseks, versioonimiseks ja haldamiseks mõnda muud viisi.

Piirangud

Tahame hoida saladused oma lähtekoodihalduse (SCM) versioonihaldussüsteemist (VCS) väljas.

Püüame ühilduda populaarsete tarkvararaamistike ja -teekidega. Näiteks Node'il on moodul "dotenv" keskkonnamuutujatega seadistuse lugemiseks.

Seisukohad

Kaalusime mõningaid lähenemisi:

  • Salvestada seadistus rakenduses, näiteks failis config.js.

  • Salvestada seadistus keskkonnas, näiteks failis .env.

  • Tuua seadistus tuntud asukohast, näiteks litsentsiserverist.

Argument

Valisime .env-faili lähenemise, sest:

  • See on populaarne, ka ekspertide seas.

  • See järgib .env-failide mustrit, mida meie meeskonnad on paljudes projektides edukalt palju kordi kasutanud.

  • See on lihtne. Eelkõige oleme praegu rahul oluliste kompromissidega, mida näeme, nagu auditivõimaluste puudumine võrreldes litsentsiserveri lähenemisega.

Tagajärjed

Peame välja mõtlema viisi, kuidas eraldada avalik keskkonnamuutujatega seadistus saladuste haldusest.

Seotud

Seotud otsused

Eeldame, et kõik meie rakendused kasutavad seda lähenemist.

Plaanime uuendada kõik oma rakendused, mis kasutavad vähem võimekat lähenemist, näiteks kõvakodeerimist binaarfailis või lähtekoodis.

Jätame muutmata kõik oma rakendused, mis kasutavad võimekamat lähenemist, näiteks litsentsiserverit.

Seotud nõuded

Lisame failide jaoks devopsi võimalused, sealhulgas konksud, testid ja pideva integratsiooni.

Peame koolitama kõiki arendajatest meeskonnakaaslasi selle otsuse osas.

Seotud artefaktid

Iga ala, kuhu me kasutusele võtame, vajab oma .env-faili ja seotud faile.

Seotud põhimõtted

Hõlpsasti tagasipööratav.

Märkmed

Näidisfail .env:

NAME=Alice Anderson
EMAIL=alice@example.com

Näidisfail .env.defaults:

NAME=Joe Doe
EMAIL=joe@example.com

Näidisfail .env.schema ainult võtmetega:

NAME
EMAIL