Architecture Decision Record

Active theme: Light

← નિર્ણય રેકોર્ડ ઉદાહરણો

પર્યાવરણ ચલ રૂપરેખાંકન

સામગ્રી:

સારાંશ

સમસ્યા

અમે ઇચ્છીએ છીએ કે અમારી એપ્લિકેશનો આર્ટિફેક્ટ્સ/બાઇનરી/સ્રોતથી આગળ રૂપરેખાંકિત થઈ શકે, જેથી એક બિલ્ડ તેના ડિપ્લોયમેન્ટ પર્યાવરણ અનુસાર અલગ રીતે વર્તી શકે.

  • આ પ્રાપ્ત કરવા માટે, અમે પર્યાવરણ ચલ રૂપરેખાંકન વાપરવા માગીએ છીએ.

  • અમે રૂપરેખાંકનને એવી ફાઇલો વાપરીને સંચાલિત કરવા માગીએ છીએ જેનું સંસ્કરણ નિયંત્રણ કરી શકાય.

  • અમે ડેવલપર અનુભવની કેટલીક સગવડો આપવા માગીએ છીએ, જેમ કે શું રૂપરેખાંકિત કરી શકાય અને કોઈપણ સંબંધિત ડિફોલ્ટ્સ જાણવા.

નિર્ણય

સંબંધિત ડિફોલ્ટ ફાઇલ અને સ્કીમા ફાઇલ સાથે .env ફાઇલો પર નિર્ણય લેવાયો.

સ્થિતિ

નિર્ણય લેવાયો. નવી ક્ષમતાઓ આવે તેમ તેમનો વિચાર કરવા માટે ખુલ્લા.

વિગતો

ધારણાઓ

અમે એપ્લિકેશન કોડ અને પર્યાવરણ કોડને અલગ કરવાની તરફેણ કરીએ છીએ. અમે માનીએ છીએ કે એપ્લિકેશને વિવિધ પર્યાવરણોમાં અલગ રીતે કામ કરવું પડે છે, જેમ કે ડેવલપમેન્ટ પર્યાવરણ, ટેસ્ટ પર્યાવરણ, ડેમો પર્યાવરણ, પ્રોડક્શન પર્યાવરણ, વગેરે.

અમે "12 factor app" ની ઉદ્યોગ પ્રથાની અને તેનાથી પણ વધુ સંબંધિત "15 factor app" પ્રથાની તરફેણ કરીએ છીએ.

અમારા અગાઉના ઘણા પ્રોજેક્ટ્સે .env ફાઇલ અથવા સમાન .env ડિરેક્ટરીની પરંપરા વાપરી છે. આને સંસ્કરણ નિયંત્રણથી બહાર રાખવાની અને તેમને ડિપ્લોય કરવા, સંસ્કરણ આપવા અને સંચાલિત કરવા માટે બીજી કોઈ રીત વાપરવાની સામાન્ય પ્રથા છે.

મર્યાદાઓ

અમે ગુપ્ત માહિતીને અમારી સ્રોત કોડ વ્યવસ્થાપન (SCM) સંસ્કરણ નિયંત્રણ સિસ્ટમ (VCS) થી બહાર રાખવા માગીએ છીએ.

અમે લોકપ્રિય સોફ્ટવેર ફ્રેમવર્ક અને લાઇબ્રેરીઓ સાથે સુસંગતતાનું લક્ષ્ય રાખવા માગીએ છીએ. ઉદાહરણ તરીકે, Node પાસે પર્યાવરણ ચલ રૂપરેખાંકન વાંચવા માટે "dotenv" મોડ્યુલ છે.

વલણો

અમે થોડા અભિગમોનો વિચાર કર્યો:

  • રૂપરેખાંકનને એપ્લિકેશનમાં સંગ્રહવું જેમ કે config.js ફાઇલમાં.

  • રૂપરેખાંકનને પર્યાવરણમાં સંગ્રહવું જેમ કે .env ફાઇલમાં.

  • રૂપરેખાંકન જાણીતા સ્થળેથી મેળવવું જેમ કે લાઇસન્સ સર્વરમાંથી.

દલીલ

અમે .env ફાઇલનો અભિગમ પસંદ કર્યો કારણ કે:

  • તે નિષ્ણાતો સહિત લોકપ્રિય છે.

  • તે .env ફાઇલોની પેટર્નને અનુસરે છે જે અમારી ટીમોએ ઘણા પ્રોજેક્ટ્સમાં ઘણી વાર સફળતાપૂર્વક વાપરી છે.

  • તે સરળ છે. ખાસ કરીને, અમે હાલમાં અમે જે મોટા સમાધાનો જોઈએ છીએ તેનાથી ઠીક છીએ, જેમ કે લાઇસન્સ સર્વરના અભિગમની સરખામણીમાં ઓડિટ ક્ષમતાઓની ગેરહાજરી.

અસરો

અમારે જાહેર હોય તેવા પર્યાવરણ ચલ રૂપરેખાંકનને ગુપ્ત માહિતી વ્યવસ્થાપનથી અલગ કરવાની રીત શોધવી પડશે.

સંબંધિત

સંબંધિત નિર્ણયો

અમે અપેક્ષા રાખીએ છીએ કે અમારી તમામ એપ્લિકેશનો આ અભિગમ વાપરશે.

અમે ઓછા સક્ષમ અભિગમ વાપરતી કોઈપણ એપ્લિકેશન, જેમ કે બાઇનરી કે સ્રોત કોડમાં હાર્ડકોડિંગ, ને અપગ્રેડ કરવાની યોજના બનાવીશું.

અમે વધુ સક્ષમ અભિગમ વાપરતી કોઈપણ એપ્લિકેશન, જેમ કે લાઇસન્સિંગ સર્વર, ને જેમ છે તેમ રાખીશું.

સંબંધિત જરૂરિયાતો

અમે ફાઇલો માટે devops ક્ષમતાઓ ઉમેરીશું, જેમાં હૂક્સ, ટેસ્ટ અને સતત ઇન્ટિગ્રેશન શામેલ છે.

અમારે તમામ ડેવલપર સાથીઓને આ નિર્ણય પર તાલીમ આપવી પડશે.

સંબંધિત આર્ટિફેક્ટ્સ

અમે જ્યાં ડિપ્લોય કરીએ છીએ તે દરેક ક્ષેત્રને તેની પોતાની .env ફાઇલ અને સંબંધિત ફાઇલોની જરૂર પડશે.

સંબંધિત સિદ્ધાંતો

સરળતાથી પલટાવી શકાય તેવું.

નોંધો

ઉદાહરણ ફાઇલ .env:

NAME=Alice Anderson
EMAIL=alice@example.com

ઉદાહરણ ફાઇલ .env.defaults:

NAME=Joe Doe
EMAIL=joe@example.com

માત્ર કીઝ સાથેની ઉદાહરણ ફાઇલ .env.schema:

NAME
EMAIL