Architecture Decision Record

Active theme: Light

← నిర్ణయ రికార్డు ఉదాహరణలు

ఎన్విరాన్మెంట్ వేరియబుల్ కాన్ఫిగరేషన్

విషయసూచిక:

సారాంశం

సమస్య

ఆర్టిఫాక్ట్లు/బైనరీలు/సోర్స్ దాటి మా అప్లికేషన్లను కాన్ఫిగర్ చేయగలగాలని మేము కోరుకుంటున్నాం, తద్వారా ఒకే బిల్డ్ దాని డిప్లాయ్మెంట్ వాతావరణాన్ని బట్టి వేర్వేరుగా ప్రవర్తించగలదు.

  • దీన్ని సాధించడానికి, మేము ఎన్విరాన్మెంట్ వేరియబుల్ కాన్ఫిగరేషన్ను వాడాలనుకుంటున్నాం.

  • వెర్షన్ నియంత్రణలో ఉంచగల ఫైళ్లను వాడి కాన్ఫిగరేషన్ను నిర్వహించాలనుకుంటున్నాం.

  • ఏమి కాన్ఫిగర్ చేయవచ్చో, సంబంధిత డిఫాల్ట్లు ఏమిటో తెలుసుకోవడం వంటి కొన్ని డెవలపర్ అనుభవ సౌలభ్యాలను అందించాలనుకుంటున్నాం.

నిర్ణయం

సంబంధిత డిఫాల్ట్ ఫైల్, స్కీమా ఫైల్తో .env ఫైళ్లను నిర్ణయించాం.

స్థితి

నిర్ణయించబడింది. కొత్త సామర్థ్యాలు వచ్చినప్పుడు వాటిని పరిగణనలోకి తీసుకోవడానికి సిద్ధంగా ఉన్నాం.

వివరాలు

ఊహలు

అప్లికేషన్ కోడ్ను, వాతావరణ కోడ్ను వేరు చేయడానికి మేము మొగ్గు చూపుతాం. డెవలప్మెంట్ వాతావరణం, టెస్ట్ వాతావరణం, డెమో వాతావరణం, ప్రొడక్షన్ వాతావరణం మొదలైన వేర్వేరు వాతావరణాలలో యాప్ వేర్వేరుగా పనిచేయాలని మేము ఊహిస్తున్నాం.

"12 factor app" పరిశ్రమ ఆచరణకు, ఇంకా ఎక్కువగా దానికి సంబంధించిన "15 factor app" ఆచరణకు మేము మొగ్గు చూపుతాం.

మా గత ప్రాజెక్టులలో చాలా వరకు .env ఫైల్ లేదా అలాంటి .env డైరెక్టరీ సంప్రదాయాన్ని వాడాయి. వీటిని వెర్షన్ నియంత్రణ నుండి దూరంగా ఉంచి, బదులుగా వాటిని డిప్లాయ్ చేయడానికి, వెర్షన్ చేయడానికి, నిర్వహించడానికి మరొక మార్గాన్ని వాడే సాధారణ ఆచరణ ఉంది.

పరిమితులు

రహస్యాలను మా సోర్స్ కోడ్ నిర్వహణ (SCM) వెర్షన్ నియంత్రణ వ్యవస్థ (VCS) నుండి దూరంగా ఉంచాలని మేము కోరుకుంటున్నాం.

ప్రజాదరణ పొందిన సాఫ్ట్వేర్ ఫ్రేమ్వర్క్లు, లైబ్రరీలతో అనుకూలతను లక్ష్యంగా పెట్టుకోవాలని మేము కోరుకుంటున్నాం. ఉదాహరణకు, ఎన్విరాన్మెంట్ వేరియబుల్ కాన్ఫిగరేషన్ను చదవడానికి Nodeకు "dotenv" మాడ్యూల్ ఉంది.

వైఖరులు

మేము కొన్ని విధానాలను పరిగణించాం:

  • config.js ఫైల్ వంటి ఫైల్లో యాప్లో కాన్ఫిగరేషన్ను నిల్వ చేయడం.

  • .env ఫైల్ వంటి ఫైల్లో వాతావరణంలో కాన్ఫిగరేషన్ను నిల్వ చేయడం.

  • లైసెన్స్ సర్వర్ వంటి తెలిసిన స్థానం నుండి కాన్ఫిగరేషన్ను తెచ్చుకోవడం.

వాదన

మేము .env ఫైల్ విధానాన్ని ఎంచుకున్నాం ఎందుకంటే:

  • ఇది నిపుణులతో సహా విస్తృతంగా ప్రాచుర్యం పొందింది.

  • ఇది మా బృందాలు అనేక ప్రాజెక్టులలో చాలాసార్లు విజయవంతంగా వాడిన .env ఫైళ్ల నమూనాను అనుసరిస్తుంది.

  • ఇది సరళమైనది. ముఖ్యంగా, లైసెన్స్ సర్వర్ విధానంతో పోలిస్తే ఆడిట్ సామర్థ్యాలు లేకపోవడం వంటి మేము చూస్తున్న గణనీయమైన రాజీలతో ప్రస్తుతానికి మేము సరిపెట్టుకోగలం.

పర్యవసానాలు

పబ్లిక్గా ఉండే ఎన్విరాన్మెంట్ వేరియబుల్ కాన్ఫిగరేషన్ను రహస్యాల నిర్వహణ నుండి వేరు చేసే మార్గాన్ని మనం కనుగొనాలి.

సంబంధితాలు

సంబంధిత నిర్ణయాలు

మా అప్లికేషన్లన్నీ ఈ విధానాన్ని వాడాలని మేము ఆశిస్తున్నాం.

బైనరీలో లేదా సోర్స్ కోడ్లో హార్డ్కోడింగ్ వంటి తక్కువ సామర్థ్యం గల విధానాన్ని వాడే మా అప్లికేషన్లను అప్గ్రేడ్ చేయడానికి మేము ప్రణాళిక వేస్తాం.

లైసెన్సింగ్ సర్వర్ వంటి ఎక్కువ సామర్థ్యం గల విధానాన్ని వాడే మా అప్లికేషన్లను ఉన్నవి ఉన్నట్లే ఉంచుతాం.

సంబంధిత అవసరాలు

హుక్స్, పరీక్షలు, నిరంతర ఇంటిగ్రేషన్తో సహా ఫైళ్ల కోసం డెవ్ఆప్స్ సామర్థ్యాలను జోడిస్తాం.

ఈ నిర్ణయంపై డెవలపర్ సహచరులందరికీ శిక్షణ ఇవ్వాలి.

సంబంధిత రచనలు

మేము డిప్లాయ్ చేసే ప్రతి ప్రాంతానికి దాని స్వంత .env ఫైల్, సంబంధిత ఫైళ్లు అవసరం.

సంబంధిత సూత్రాలు

సులభంగా వెనక్కి తీసుకోగలగడం.

గమనికలు

ఉదాహరణ ఫైల్ .env:

NAME=Alice Anderson
EMAIL=alice@example.com

ఉదాహరణ ఫైల్ .env.defaults:

NAME=Joe Doe
EMAIL=joe@example.com

కీలు మాత్రమే ఉన్న ఉదాహరణ ఫైల్ .env.schema:

NAME
EMAIL