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