ਛੋਟੀ ਟੀਮਾਂ ਲਈ ਸਟੇਜਿੰਗ ਵਿਰੁੱਧ ਪ੍ਰੋਡਕਸ਼ਨ: ਕਿਹੜੇ ਹਿੱਸੇ ਮਿਲਾਉਣੇ ਹਨ (DB, auth, ਡੋਮੇਨ) ਅਤੇ ਕਿਹੜੇ ਨਕਲੀ ਰੱਖਣੇ ਹਨ (payments, email) ਨਾਲ ਇੱਕ ਵਰਤੋਂਯੋਗ ਚੈਕਲਿਸਟ।

ਜਿਆਦਾਤਰ “ਸਟੇਜਿੰਗ ਵਿੱਚ ਚੱਲਿਆ” ਬੱਗ ਅਜਿਹੇ ਰਹੱਸ ਨਹੀਂ ਹੁੰਦੇ। ਸਟੇਜਿੰਗ ਅਕਸਰ ਅਸਲੀ ਅਤੇ ਨਕਲੀ ਚੀਜ਼ਾਂ ਨੂੰ ਮਿਲਾ ਦੇਂਦੀ ਹੈ: ਇੱਕ ਵੱਖਰਾ ਡੇਟਾਬੇਸ, ਵੱਖਰੇ environment variables, ਵੱਖਰਾ ਡੋਮੇਨ, ਅਤੇ ਕਈ ਵਾਰੀ ਵੱਖਰਾ ਲੌਗਇਨ ਸੈੱਟਅੱਪ। UI ਇਕੋ ਜਿਹਾ ਲੱਗਦਾ ਹੈ, ਪਰ ਅੰਦਰੂਨੀ ਨਿਯਮ ਵੱਖਰੇ ਹੋ ਸਕਦੇ ਹਨ।
ਸਟੇਜਿੰਗ ਦਾ ਮਕਸਦ ਪ੍ਰੋਡਕਸ਼ਨ-ਵਰਗੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਪਹਿਲਾਂ surface ਕਰਨਾ ਹੈ, ਜਦੋਂ ਠੀਕ ਕਰਨਾ ਸਸਤਾ ਅਤੇ ਘੱਟ ਤਣਾਓ ਵਾਲਾ ਹੁੰਦਾ ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਉਹ ਹਿਸ਼ੇ ਮਿਲਾਉ ਜੋ ਅਸਲ ਹਾਲਤਾਂ ਹੇਠ ਕੰਮ ਕਰਨ ਦੇ ਤਰੀਕੇ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਦੇ ਹਨ: ਡੇਟਾਬੇਸ ਸਕੀਮਾ ਬਦਲਾਅ, auth ਫਲੋ, HTTPS ਅਤੇ ਡੋਮੇਨ, ਬੈਕਗ੍ਰਾਊਂਡ ਜੌਬ, ਅਤੇ ਉਹ environment variables ਜੋ ਕੋਡ ਦਾ ਚਲਣ ਤਰੀਕਾ ਫੈਸਲਾ ਕਰਦੀਆਂ ਹਨ।
ਇੱਥੇ ਇਕ ਅਟੱਲ ਵਪਾਰ ਹੈ: ਜਿੰਨਾ ਜ਼ਿਆਦਾ ਸਟੇਜਿੰਗ “ਅਸਲੀ” ਬਣੇਗੀ, ਓਨਾ ਹੀ ਖਰਚ ਵਧੇਗਾ ਅਤੇ ਖਤਰਾ (ਗਲਤੀ ਨਾਲ ਕਾਰਡ ਚਾਰਜ ਹੋਣਾ, ਅਸਲ ਯੂਜ਼ਰ ਨੂੰ ਈਮੇਲ ਜਾਣਾ, ਡੇਟਾ ਲੀਕ ਹੋਣਾ) ਵੱਧਵੇਗਾ। ਛੋਟੀ ਟੀਮਾਂ ਨੂੰ ਐਸਾ ਸਟੇਜਿੰਗ ਚਾਹੀਦਾ ਹੈ ਜੋ ਭਰੋਸੇਯੋਗ ਹੋਵੇ ਬਿਨਾਂ ਦੂਜੇ ਪ੍ਰੋਡਕਸ਼ਨ ਬਣਨ ਦੇ।
ਇੱਕ ਵਰਤਣਯੋਗ ਮਨੋਮਾਡਲ:
ਪ੍ਰੋਡਕਸ਼ਨ ਅਸਲੀ ਸਿਸਟਮ ਹੈ: ਅਸਲ ਯੂਜ਼ਰ, ਅਸਲ ਪੈਸਾ, ਅਸਲ ਡੇਟਾ। ਜੇ ਇਹ ਟੁੱਟਦਾ ਹੈ, ਲੋਕ ਤੁਰੰਤ ਨੋਟਿਸ ਕਰਦੇ ਹਨ। ਸੁਰੱਖਿਆ ਅਤੇ ਕੰਪਲਾਇੰਸ ਉਮੀਦਾਂ ਸਭ ਤੋਂ ਉੱਚੀਆਂ ਹੁੰਦੀਆਂ ਹਨ ਕਿਉਂਕਿ ਤੁਸੀਂ ਗਾਹਕ ਦੀ ਜਾਣਕਾਰੀ ਸੰਭਾਲ ਰਹੇ ਹੋ।
ਸਟੇਜਿੰਗ ਉਹ ਥਾਂ ਹੈ ਜਿੱਥੇ ਤੁਸੀਂ ਰਿਲੀਜ਼ ਤੋਂ ਪਹਿਲਾਂ ਤਬਦੀਲੀਆਂ ਦੀ ਜਾਂਚ ਕਰਦੇ ਹੋ। ਐਪ ਦੇ ਨਜ਼ਰੀਏ ਤੋਂ ਇਹਨੂੰ ਪ੍ਰੋਡਕਸ਼ਨ ਵਰਗਾ ਮਹਿਸੂਸ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਪਰ ਛੋਟਾ blast radius ਹੋਵੇ। ਲਕਸ਼ ਹੈ ਹੈਰਾਨੀਆਂ ਫੜ ਲੈਣੀਆਂ: ਅਜਿਹਾ ਮਾਈਗਰੇਸ਼ਨ ਜੋ ਫੇਲ ਹੁੰਦਾ ਹੈ, ਓਹ auth ਕਾਲਬੈਕ ਜੋ ਗਲਤ ਡੋਮੇਨ ਵਲ ਇਸ਼ਾਰਾ ਕਰਦਾ ਹੈ, ਜਾਂ ਬੈਕਗ੍ਰਾਊਂਡ ਜੌਬ ਜੋ ਅਸਲ ਰੂਪ ਵਿੱਚ ਭਿੰਨ ਤਰੀਕੇ ਨਾਲ ਚਲਦਾ ਹੈ।
ਛੋਟੀ ਟੀਮਾਂ ਅਕਸਰ ਇਨ੍ਹਾਂ ਪੈਟਰਨਾਂ ਵਿੱਚੋਂ ਕਿਸੇ 'ਤੇ ਸਟੇਲ ਹੁੰਦੀਆਂ ਹਨ:
ਜੇ ਤੁਹਾਡਾ ਐਪ ਬਹੁਤ ਛੋਟਾ ਹੈ, ਬਦਲਾਅ редਰਦਰ ਹੋ ਰਹੇ ਹਨ, ਅਤੇ ਰੋਲਬੈਕ ਤੁਰੰਤ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਕਈ ਵਾਰੀ ਸਟੇਜਿੰਗ ਛੱਡ ਸਕਦੇ ਹੋ। ਪਰ ਜੇ ਤੁਸੀਂ ਭੁਗਤਾਨ ਲੈਂਦੇ ਹੋ, ਮਹੱਤਵਪੂਰਨ ਈਮੇਲ ਭੇਜਦੇ ਹੋ, ਅਕਸਰ ਮਾਈਗਰੇਸ਼ਨ ਚਲਾਂਦੇ ਹੋ, ਜਾਂ ਕਈ ਲੋਕ ਮਿਲਾ ਕੇ ਕੰਮ ਕਰ ਰਹੇ ਹਨ, ਤਾਂ ਸਟੇਜਿੰਗ ਛੱਡੋ ਨਾ।
ਤਾਲਮੇਲ ਦਾ ਮਤਲਬ ਇਹ ਨਹੀਂ ਕਿ ਸਟੇਜਿੰਗ ਨੂੰ ਪ੍ਰੋਡਕਸ਼ਨ ਦਾ ਛੋਟਾ ਨਕਲ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਇੱਕੋ ਟ੍ਰੈਫਿਕ ਤੇ ਇੱਕੋ ਖਰਚ ਹੋਵੇ। ਮਤਲਬ ਇਹ ਹੈ ਕਿ ਉਹੀ ਕਾਰਵਾਈਆਂ ਉਹੀ ਨਤੀਜੇ ਦਿਣ।
ਜੇ ਇੱਕ ਯੂਜ਼ਰ ਸਾਈਨਅਪ ਕਰਦਾ, ਪਾਸਵਰਡ ਰੀਸੈੱਟ ਕਰਦਾ, ਫਾਇਲ ਅਪਲੋਡ ਕਰਦਾ, ਜਾਂ ਬੈਕਗ੍ਰਾਊਂਡ ਜੌਬ trigger ਕਰਦਾ ਹੈ, ਤਾਂ ਸਟੇਜਿੰਗ ਨੂੰ ਉਹੀ ਲਾਜਿਕ ਫਾਲੋ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ ਜੋ ਪ੍ਰੋਡਕਸ਼ਨ ਕਰੇਗੀ। ਤੁਹਾਨੂੰ ਪ੍ਰੋਡਕਸ਼ਨ-ਸਾਈਜ਼ ਇੰਫ੍ਰਾਸਟਰੱਕਚਰ ਦੀ ਲੋੜ ਨਹੀਂ ਕਿ ਪ੍ਰੋਡਕਸ਼ਨ-ਮੁਹੱਈਆ ਬੱਗ ਪਕੜਨ ਲਈ, ਪਰ ਉਹੀ ਅਨੁਮਾਨ ਲੋੜੀਂਦੇ ਹਨ।
ਇੱਕ ਸਧਾਰਣ ਨਿਯਮ:
ਜੇ ਕੋਈ ਫਰਕ ਕੰਟਰੋਲ ਫਲੋ, ਡੇਟਾ ਦੀ ਸ਼ਕਲ ਜਾਂ ਸੁਰੱਖਿਆ ਨੂੰ ਬਦਲ ਸਕਦਾ ਹੈ, ਤਾਂ ਉਸ ਨੂੰ ਪ੍ਰੋਡਕਸ਼ਨ ਨਾਲ ਮਿਲਾਉ।
ਜੇ ਕੋਈ ਫਰਕ ਮੁੱਖ ਤੌਰ 'ਤੇ ਲਾਗਤ ਜਾਂ ਖਤਰੇ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦਾ ਹੈ, ਤਾਂ ਉਸ ਨੂੰ ਨਕਲੀ ਕਰੋ।
ਅਮਲੀ ਤੌਰ 'ਤੇ ਇਹ ਅਕਸਰ ਇਸ ਤਰ੍ਹਾਂ ਵਿਭਾਜਿਤ ਹੁੰਦਾ ਹੈ:
ਜਦੋਂ ਤੁਸੀਂ ਕੋਈ ਛੂਟ ਦਿੰਦੇ ਹੋ, ਤਾਂ ਉਸਨੂੰ ਇਕਥੇ ਲਿਖੋ। ਇੱਕ ਛੋਟਾ “ਸਟੇਜਿੰਗ ਨੋਟਸ” ਡੌਕ ਕਾਫੀ ਹੈ: ਕਿਸ ਚੀਜ਼ 'ਚ ਫਰਕ ਹੈ, ਕਿਉਂ ਹੈ, ਅਤੇ ਤੁਸੀਂ ਅਸਲ ਚੀਜ਼ ਨੂੰ ਕਿਵੇਂ ਸੁਰੱਖਿਅਤ ਤਰੀਕੇ ਨਾਲ ਟੈਸਟ ਕਰਦੇ ਹੋ। ਇਹ ਛੋਟੀ ਆਦੀ ਬਹੁਤ ਸਾਰੇ ਬਾਦ ਦੇ ਘੁੰਮਣ-ਫਿਰਣ ਨੂੰ ਰੋਕਦੀ ਹੈ।
ਜੇ ਸਟੇਜਿੰਗ ਟੀਮ ਨੂੰ ਹੈਰਾਨ ਕਰਨ ਲਈ ਬਣਾਇਆ ਗਿਆ ਹੈ, ਤਾਂ ਡੇਟਾਬੇਸ ਉਹ ਜਗ੍ਹਾ ਹੈ ਜਿੱਥੇ ਜ਼ਿਆਦਾਤਰ ਹੈਰਾਨੀਆਂ ਲੁਕਦੀਆਂ ਹਨ। ਨਿਯਮ ਸਧਾਰਣ ਹੈ: ਸਟੇਜਿੰਗ ਦਾ ਸਕੀਮਾ ਪ੍ਰੋਡਕਸ਼ਨ ਵਰਗਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਭਾਵੇਂ ਸਟੇਜਿੰਗ ਵਿੱਚ ਡੇਟਾ ਕਾਫੀ ਘੱਟ ਹੋਵੇ।
ਉਹੀ ਮਾਈਗਰੇਸ਼ਨ ਟੂਲ ਅਤੇ ਉਹੀ ਪ੍ਰਕਿਰਿਆ ਵਰਤੋ। ਜੇ ਪ੍ਰੋਡਕਸ਼ਨ deploy ਦੌਰਾਨ ਮਾਈਗਰੇਸ਼ਨ ਆਟੋਮੈਟਿਕ ਚਲਾਉਂਦਾ ਹੈ, ਤਾਂ ਸਟੇਜਿੰਗ ਵੀ ਕਰੋ। ਜੇ ਪ੍ਰੋਡਕਸ਼ਨ ਨੂੰ ਮਨਜ਼ੂਰੀ ਕਦਮ ਚਾਹੀਦਾ ਹੈ, ਤਾਂ ਸਟੇਜਿੰਗ ਵਿੱਚ ਵੀ ਉਸੇ ਤਰ੍ਹਾਂ ਦੀ ਨਕਲ ਰੱਖੋ। ਇੱਥੇ ਫਰਕ ਉਹੀ ਕਲਾਸਿਕ ਸਥਿਤੀ ਬਣਦਾ ਹੈ ਜਿੱਥੇ ਕੋਡ ਸਟੇਜਿੰਗ ਵਿੱਚ ਚੱਲਦਾ ਹੈ ਕਿਉਂਕਿ ਸਕੀਮਾ drift ਹੋ ਗਈ।
ਸਟੇਜਿੰਗ ਡੇਟਾ ਚੋਟਾ ਰੱਖੋ, ਪਰ ਬਣਤਰ ਇੱਕੋ ਜਿਹੀ ਰੱਖੋ: indexes, constraints, default values, ਅਤੇ extensions. ਇੱਕ ਗੁੰਮ ਹੋਇਆ index ਸਟੇਜਿੰਗ ਨੂੰ ਤੇਜ਼ ਮਹਿਸੂਸ ਕਰਵਾ ਸਕਦਾ ਹੈ ਜਦੋਂ ਕਿ ਪ੍ਰੋਡਕਸ਼ਨ ਧੀਮੇ ਹੋਵੇ। ਇੱਕ ਗੁੰਮ constraints ਅਸਲ ਗਲਤੀਆਂ ਨੂੰ ਲੁਕਾ ਸਕਦਾ ਹੈ।
ਦੇਸ਼ਟ੍ਰਕਟਿਵ ਬਦਲਾਅ ਨੂੰ ਵਧ ਚਿੰਤਾ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। rename, drop ਅਤੇ backfill ਉਹ ਜਗ੍ਹਾ ਹਨ ਜਿੱਥੇ ਛੋਟੀ ਟੀਮਾਂ ਜ਼ਿਆਦਾ ਜ਼ਖਮੀ ਹੁੰਦੀਆਂ ਹਨ। ਸਟੇਜਿੰਗ ਵਿੱਚ ਪੂਰਾ ਸਿਕੁਏਂਸ ਟੈਸਟ ਕਰੋ: migrate up, ਐਪ ਚਲਾਓ, ਅਤੇ ਜੇ ਤੁਹਾਡੀ ਪ੍ਰਕਿਰਿਆ rollback ਸਮਰਥਨ ਕਰਦੀ ਹੈ ਤਾਂ rollback ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। backfills ਲਈ ਕਾਫੀ ਰਿਕਾਰਡਾਂ ਨਾਲ ਟੈਸਟ ਕਰੋ ਤਾਂ ਜੋ timeout ਜਾਂ lock ਸਮੱਸਿਆਵਾਂ ਸਾਹਮਣੇ ਆ ਜਾਵਣ।
ਸੁਰੱਖਿਅਤ ਰੀਸੈਟ ਦੀ ਯੋਜਨਾ ਬਣਾਓ। ਸਟੇਜਿੰਗ ਡੇਟਾਬੇਸ ਗੰਦੇ ਹੋ ਜਾਂਦੇ ਹਨ, ਇਸ ਲਈ ਉਨ੍ਹਾਂ ਨੂੰ ਆਸਾਨੀ ਨਾਲ ਮੁੜ ਬਣਾਉਣਾ ਅਤੇ ਸਾਰੀਆਂ ਮਾਈਗਰੇਸ਼ਨ ਫਿਰ ਚਲਾਉਣਾ ਸਹੁਲਤਯੋਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।
ਸਟੇਜਿੰਗ deploy 'ਤੇ ਭਰੋਸਾ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਜਾਂਚ ਕਰੋ:
ਜੇ ਸਟੇਜਿੰਗ ਉਹੀ ਸਾਈਨ-ਇਨ ਫਲੋ ਨਹੀਂ ਵਰਤਦਾ ਜੋ ਪ੍ਰੋਡਕਸ਼ਨ ਵਰਤਦਾ, ਤਾਂ ਇਹ ਤੁਹਾਨੂੰ ਗਲਤ ਦਿਖਾਏਗਾ। ਤਜ਼ਰਬਾ ਇਕੋ ਰੱਖੋ: ਉਹੀ redirects, callback paths, password ਨਿਯਮ, ਅਤੇ ਦੂਜੇ ਫੈਕਟਰ (SSO/OAuth/magic links/2FA) ਜੋ ਤੁਸੀਂ ਰਿਲੀਜ਼ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ।
ਇਸੇ ਸਮੇਂ, ਸਥਗਿੰਗ ਵਿੱਚ ਹਰ ਥਾਂ ਵੱਖਰੇ ਕ੍ਰਿਡੈਂਸ਼ਲ ਵਰਤੋ। ਸਟੇਜਿੰਗ ਲਈ ਅਲੱਗ OAuth apps, client IDs, ਅਤੇ secrets ਬਣਾਓ, ਭਾਵੇਂ ਇਕੋ identity provider ਵਰਤ ਰਹੇ ਹੋ। ਇਹ ਪ੍ਰੋਡਕਸ਼ਨ ਖਾਤਿਆਂ ਦੀ ਰੱਖਿਆ ਕਰਦਾ ਹੈ ਅਤੇ ਤੁਹਾਨੂੰ secrets ਸੁਰੱਖਿਅਤ ਤਰੀਕੇ ਨਾਲ ਰੋਟੇਟ ਕਰਨ ਦੇ ਸਕਦਾ ਹੈ।
ਅਕਸਰ ਫੇਲ ਹੋਣ ਵਾਲੇ ਹਿੱਸਿਆਂ ਦੀ ਜਾਂਚ ਕਰੋ: cookies, sessions, redirects, ਅਤੇ callback URLs। ਜੇ ਪ੍ਰੋਡਕਸ਼ਨ HTTPS ਅਤੇ ਅਸਲ ਡੋਮੇਨ ਵਰਤਦਾ ਹੈ, ਤਾਂ ਸਟੇਜਿੰਗ ਨੂੰ ਵੀ ਵੀਹੋ ਜਿਵੇਂ ਹੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। localhost ਤੇ cookie flags ਜਿਵੇਂ Secure ਅਤੇ SameSite ਵੱਖਰੇ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹਨ।
ਪ੍ਰਮੀਸ਼ਨ ਵੀ ਟੈਸਟ ਕਰੋ। ਸਟੇਜਿੰਗ ਅਕਸਰ ਖਾਮੋਸ਼ੀ ਨਾਲ “ਹਰ ਕੋਈ admin” ਬਣ ਜਾਂਦੀ ਹੈ, ਫਿਰ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਅਸਲੀ ਭੂਮਿਕਾਵਾਂ ਹੋਣ 'ਤੇ ਗਲਤੀਆਂ ਹੁੰਦੀਆਂ ਹਨ। ਫੈਸਲਾ ਕਰੋ ਕਿ ਕਿਹੜੀਆਂ ਭੂਮਿਕਾਵਾਂ ਹੋਣ ਅਤੇ ਘੱਟੋ-ਘੱਟ ਇੱਕ non-admin ਰਸਤਾ ਟੈਸਟ ਕਰੋ।
ਇੱਕ ਸਧਾਰਣ ਪਹੁੰਚ ਕਈ ਪਛਾਣੇ ਗਏ ਖਾਤਿਆਂ ਨੂੰ seed ਕਰਨ ਦੀ ਹੈ:
ਬਹੁਤ ਸਾਰੇ “ਸਟੇਜਿੰਗ ਵਿੱਚ ਚੱਲ ਗਿਆ” ਬੱਗ URL ਅਤੇ headers ਤੋਂ ਆਉਂਦੇ ਹਨ, ਨਾ ਕਿ ਬਿਜਨੈਸ ਲਾਜਿਕ ਤੋਂ। ਸਟੇਜਿੰਗ URLs ਨੂੰ ਪ੍ਰੋਡਕਸ਼ਨ ਵਰਗਾ ਬਣਾਉ, ਇੱਕ ਸਾਫ਼ ਐਪੀ ਐਕਸੈਂਟ ਜਾਂ subdomain ਰੱਖ ਕੇ۔
ਜੇ ਪ੍ਰੋਡਕਸ਼ਨ app.yourdomain.com ਵਰਤਦਾ ਹੈ, ਤਾਂ ਸਟੇਜਿੰਗ staging.app.yourdomain.com (ਜਾਂ app-staging.yourdomain.com) ਹੋ ਸਕਦਾ ਹੈ। ਇਹ absolute links, callback URLs, ਅਤੇ redirects ਨਾਲ ਸੰਬੰਧਤ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਪਹਿਲਾਂ ਫੜ ਲੈਂਦਾ ਹੈ।
HTTPS ਨੂੰ ਵੀ ਓਹੀ ਤਰੀਕੇ ਨਾਲ ਭਾਵਨਾਵਾਂ ਵਾਲਾ ਬਣਾਓ। ਜੇ ਪ੍ਰੋਡਕਸ਼ਨ HTTPS ਜ਼ਬਰਦਸਤੀ ਕਰਦਾ ਹੈ, ਤਾਂ ਸਟੇਜਿੰਗ ਨੂੰ ਵੀ ਉਹੀ redirect ਨਿਯਮ ਲਗਾਉਣੇ ਚਾਹੀਦੇ ਹਨ। ਨਹੀਂ ਤਾਂ cookies ਸਟੇਜਿੰਗ ਵਿੱਚ ਠੀਕ ਲੱਗ ਸਕਦੀਆਂ ਹਨ ਪਰ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ fail ਹੋ ਸਕਦੀਆਂ ਹਨ ਕਿਉਂਕਿ Secure cookies ਸਿਰਫ HTTPS 'ਤੇ ਭੇਜੇ ਜਾਂਦੇ ਹਨ।
ਬ੍ਰਾੁਜ਼ਰ-ਸੰਬੰਧੀ ਨਿਯਮਾਂ ਉੱਤੇ ਧਿਆਨ ਦਿਓ:
X-Forwarded-Proto, ਜੋ generated links ਅਤੇ auth ਵਿਵਹਾਰ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੇ ਹਨਇਨ੍ਹਾਂ ਵਿੱਚੋਂ ਬਹੁਤ ਕੁਝ environment variables ਵਿੱਚ ਰਹਿੰਦੇ ਹਨ। ਉਨ੍ਹਾਂ ਨੂੰ ਕੋਡ ਵਾਂਗ ਸੰਭਾਲੋ ਅਤੇ ਪਰਖੋ, ਅਤੇ ਵਾਤਾਵਰਨਾਂ ਦੇ ਵਿੱਚ “shape” (ਉਹੀ keys, ਵੱਖ-ਵੱਖ values) ਕਾਇਮ ਰੱਖੋ। ਆਮ ਤੌਰ 'ਤੇ ਦਿਖੀ ਦੇਣ ਵਾਲੇ:
BASE_URL (ਜਾਂ public site URL)CORS_ORIGINSਬੈਕਗ੍ਰਾਊਂਡ ਕੰਮ ਉਹ ਜਗ੍ਹਾ ਹੈ ਜਿੱਥੇ ਸਟੇਜਿੰਗ ਚੁਪਚਾਪ ਤੋੜ-ਮਰੋੜ ਜਾਂਦਾ ਹੈ। ਵੈੱਬ ਐਪ ਠੀਕ ਲੱਗ ਸਕਦਾ ਹੈ, ਪਰ ਸਮੱਸਿਆਵਾਂ ਤਦ ਆਉਂਦੀਆਂ ਹਨ ਜਦੋਂ ਜੌਬ retry ਕਰਦਾ, ਕਿਊ ਭਰ ਜਾਂਦੀ, ਜਾਂ ਫਾਇਲ ਅਪਲੋਡ ਕਿਸੇ ਪਰਮਿਸ਼ਨ ਨਿਯਮ ਤੋਂ ਠੋਕਰ ਖਾਂਦੀ ਹੈ।
ਉਹੀ ਜੌਬ pattern ਵਰਤੋਂ ਜੋ ਤੁਸੀਂ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਵਰਤਦੇ ਹੋ: ਉਹੀ ਕਿਸਮ ਦੀ queue, ਉਹੀ worker ਸੈਟਅੱਪ, ਅਤੇ ਉਹੀ retry ਅਤੇ timeout ਨਿਯਮ। ਜੇ ਪ੍ਰੋਡਕਸ਼ਨ ਇੱਕ ਜੌਬ ਨੂੰ ਪੰਜ ਵਾਰੀ retry ਕਰਦਾ ਹੈ 2 ਮਿੰਟ timeout ਨਾਲ, ਤਾਂ ਸਟੇਜਿੰਗ ਵਿੱਚ ਇੱਕ ਵਾਰੀ ਬਿਨਾਂ timeout ਦੇ ਚਲਾਉਣਾ ਉਤਨਾ ਟੈਸਟ ਨਹੀਂ ਕਰ ਰਿਹਾ। ਇਹ ਇੱਕ ਵੱਖਰਾ ਉਤਪਾਦ ਪਰਖਣਾ ਹੈ।
ਸ਼ੈਡਿਊਲ ਕੀਤੀਆਂ ਨੌਕਰੀਆਂ (scheduled jobs) ਨੂੰ ਖ਼ਾਸ ਧਿਆਨ ਦੀ ਲੋੜ ਹੈ। ਟਾਈਮਜ਼ੋਨ ਦੀਆਂ ਧਾਰਣਾਵਾਂ ਸੁੱਝ-ਬੁਝ ਗਲਤੀਆਂ ਪੈਦਾ ਕਰਦੀਆਂ ਹਨ: ਰਿੰਆਪਤ ਰਿਪੋਰਟਾਂ ਗਲਤ ਘੰਟੇ 'ਤੇ, ਟ੍ਰਾਇਲ ਜਲਦੀ ਖਤਮ ਹੋਣਾ, ਜਾਂ ਕਲੀਨਅੱਪ ਤਾਜ਼ਾ ਫਾਇਲਾਂ ਨੂੰ ਮਿਟਾ ਦੇਣਾ। ਪ੍ਰੋਡਕਸ਼ਨ ਵਰਗੀ ਟਾਈਮਜ਼ੋਨ ਸੈਟਿੰਗ ਰੱਖੋ, ਜਾਂ ਫਰਕ ਨੂੰ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਦਸਤਾਵੇਜ਼ ਕਰੋ।
ਸਟੋਰੇਜ ਅਸਲ ਤਰੀਕੇ ਨਾਲ ਫੇਲ ਹੋਣ ਵਾਲੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਜੇ ਪ੍ਰੋਡਕਸ਼ਨ object storage ਵਰਤਦਾ ਹੈ, ਤਾਂ ਸਟੇਜਿੰਗ ਨੂੰ ਲੋਕਲ ਫੋਲਡਰ 'ਤੇ ਲਿਖਣ ਦੀ ਆਗਿਆ ਨਾ ਦਿਓ। ਨਹੀਂ ਤਾਂ URLs, access control, ਅਤੇ size limits ਵੱਖਰੇ ਤਰੀਕੇ ਨਾਲ ਵਰਤਣਗੇ।
ਭਰੋਸਾ ਬਣਾਉਣ ਲਈ ਤੇਜ਼ طريقੇ:
Idempotency ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦੀ ਹੈ ਜਦ ਪੈਸਾ, ਸੁਨੇਹੇ ਜਾਂ webhook ਸ਼ਾਮਲ ਹੋਣ। ਸਟੇਜਿੰਗ ਵਿੱਚ ਵੀ, ਜੌਬ ਇਸ ਤਰ੍ਹਾਂ ਡਿਜ਼ਾਇਨ ਕਰੋ ਕਿ ਦੁਹਰਾਵਾਂ duplicate charges, duplicate emails, ਜਾਂ ਰੀਪੀਟ ਹੋਣ ਵਾਲੀਆਂ state changes ਨਾ ਬਣਾਉਣ।
ਸਟੇਜਿੰਗ ਨੂੰ ਪ੍ਰੋਡਕਸ਼ਨ ਵਰਗਾ ਮਹਿਸੂਸ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਪਰ ਇਹ ਅਸਲੀ ਕਾਰਡ ਚਾਰਜ ਨਾ ਕਰੇ, ਅਸਲ ਯੂਜ਼ਰਾਂ ਨੂੰ spam ਨਾ ਕਰੇ, ਜਾਂ ਚੌਕਾਨੇ ਵਾਲੇ API ਬਿੱਲ ਨਾ ਪੈਦਾ ਕਰੇ। ਲਕਸ਼ ਹੈ ਹਕੀਕਤ ਵਾਂਗ ਵਰਤਾਰਾ ਪਰ ਸੁਰੱਖਿਅਤ ਨਤੀਜਾ।
ਪੇਮੈਂਟ ਆਮ ਤੌਰ 'ਤੇ ਪਹਿਲੇ ਨਕਲੀ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। ਪ੍ਰੋਵਾਇਡਰ ਦੀ sandbox ਮੋਡ ਅਤੇ ਟੈਸਟ ਕੀਜ਼ ਵਰਤੋ, ਫਿਰ ਓਹ ਕੇਸ ਸਿਮੁਲੇਟ ਕਰੋ ਜੋ ਆਸਾਨੀ ਨਾਲ ਦੁਹਰਾਉਣੇ ਨਹੀਂ ਹੁੰਦੇ: failed charges, disputed payments, delayed webhook events।
ਈਮੇਲ ਅਤੇ ਸੂਚਨਾਵਾਂ (notifications) ਦੂਜਾ ਆਉਂਦਾ ਹੈ। ਅਸਲੀ ਸੁਨੇਹਿਆਂ ਨੂੰ ਭੇਜਣ ਦੀ ਥਾਂ, ਸਭ ਕੁਝ ਇੱਕ capture mailbox ਜਾਂ ਇੱਕ ਸੁਰੱਖਿਅਤ ਇਨਬਾਕਸ 'ਤੇ ਰੀਡਾਇਰੈਕਟ ਕਰੋ। SMS ਅਤੇ push ਲਈ, ਸਿਰਫ਼ ਟੈਸਟ ਰਿਸੀਪੀਐਂਟ ਵਰਤੋਂ, ਜਾਂ ਸਟੇਜਿੰਗ-ਕੇਵਲ ਸੈਂਡਰ ਵਰਤੋਂ ਜੋ ਸੁਨੇਹੇ ਲੌਗ ਕਰਦਾ ਅਤੇ ਡ੍ਰੌਪ ਕਰ ਦਿੰਦਾ ਹੈ ਪਰ ਸਮੱਗਰੀ ਦੀ ਜਾਂਚ ਕਰਨ ਦਿੰਦਾ ਹੈ।
ਇੱਕ ਅਮਲੀ ਸਟੇਜਿੰਗ ਮੌਕ ਸੈਟਅੱਪ ਅਕਸਰ ਸ਼ਾਮਿਲ ਕਰਦਾ ਹੈ:
ਮੌਕ ਕੀਤੇ ਰਾਜ਼ ਨੂੰ ਵਿਆਪਕ ਬਣਾਓ। ਨਹੀਂ ਤਾਂ ਲੋਕ ਉਹਨਾਂ ਵਿਹਾਰਾਂ ਬਾਰੇ ਬੱਗ ਫਾਇਲ ਕਰਨਗੇ ਜੋ ਉਮੀਦਯੋਗ ਹਨ।
ਸ਼ੁਰੂ ਕਰੋ ਹਰ ਡੀਪੈਂਡੈਂਸੀ ਦੀ ਲਿਸਟ ਬਣਾਕੇ ਜੋ ਤੁਹਾਡਾ ਐਪ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਛੂਹਦਾ ਹੈ: database, auth provider, storage, email, payments, analytics, webhooks, background jobs।
ਫਿਰ ਦੋ sets of environment variables ਬਣਾਓ: staging ਅਤੇ production। keys ਇਕੋ ਰੱਖੋ ਤਾਂ ਕਿ ਕੋਡ ਹਰ ਜਗ੍ਹਾ ਤੱਕ branch ਨਾ ਕਰੇ। ਕੇਵਲ values ਬਦਲਦੀਆਂ ਹਨ: ਵੱਖਰਾ ਡੇਟਾਬੇਸ, ਵੱਖਰੇ API keys, ਵੱਖਰਾ ਡੋਮੇਨ।
ਸੈਟਅੱਪ ਦੁਹਰਾਣਯੋਗ ਰੱਖੋ:
Deploy ਤੋਂ ਬਾਅਦ, ਇੱਕ ਛੋਟੀ smoke test ਕਰੋ:
ਇਹ ਆਦਤ ਬਣਾਓ: ਕੋਈ ਵੀ ਪ੍ਰੋਡਕਸ਼ਨ ਰਿਲੀਜ਼ ਇੱਕ ਸਾਫ਼ ਸਟੇਜਿੰਗ ਪਾਸ ਬਿਨਾਂ ਨਾ ਹੋਵੇ।
ਕਲਪਨਾ ਕਰੋ ਇੱਕ ਸਧਾਰਣ SaaS ਦੀ: ਯੂਜ਼ਰ ਸਾਈਨਅਪ ਕਰਦੇ, ਪਲੈਨ ਚੁਨਦੇ, ਚੰਦਾਂ ਭੁਗਤਾਨ ਕਰਦੇ, ਅਤੇ ਰਸੀਦ ਪ੍ਰਾਪਤ ਕਰਦੇ।
ਕਾਪੀ ਕਰੋ ਉਹ ਚੀਜ਼ਾਂ ਜੋ ਕੋਰ ਵਿਹਾਰ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੀਆਂ ਹਨ। ਸਟੇਜਿੰਗ ਡੇਟਾਬੇਸ ਉਹੀ ਮਾਈਗਰੇਸ਼ਨ ਚਲਾਉਂਦਾ ਹੈ ਜੋ ਪ੍ਰੋਡਕਸ਼ਨ ਚਲਾਉਂਦਾ ਹੈ, ਇਸ ਲਈ ਟੇਬਲ, indexes, ਅਤੇ constraints ਮਿਲਦੇ ਹਨ। ਲੌਗਿਨ ਉਹੀ redirects ਅਤੇ callback paths ਫਾਲੋ ਕਰਦਾ ਹੈ, ਇੱਕੋ identity provider ਨਿਯਮਾਂ ਦੇ ਨਾਲ, ਪਰ ਵੱਖਰੇ client IDs ਅਤੇ secrets ਨਾਲ। ਡੋਮੇਨ ਅਤੇ HTTPS ਸੈਟਿੰਗਜ਼ ਉਹੀ ਆਕਾਰ ਰੱਖਦੀਆਂ ਹਨ (cookie settings, redirect ਨਿਯਮ), ਭਾਵੇਂ hostname ਵੱਖਰਾ ਹੋਵੇ।
ਖਤਰਨਾਕ ਇੰਟਿਗ੍ਰੇਸ਼ਨਜ਼ ਨੂੰ ਨਕਲੀ ਕਰੋ। payments test mode ਜਾਂ stub ਵਿੱਚ ਚਲਾਓ ਜੋ success ਜਾਂ failure ਵਾਪਸ ਕਰ ਸਕਦਾ ਹੈ। ਈਮੇਲ ਸੁਰੱਖਿਅਤ ਇਨਬਾਕਸ ਜਾਂ ਅੰਦਰੂਨੀ ਆਉਟਬਾਕਸ ਵਿੱਚ ਜਾਵੇ ਜਾਂ ਰੀਡਾਇਰੈਕਟ ਹੋਵੇ ਤਾਂ ਜੋ ਤੁਸੀਂ ਰਸੀਦ ਦੀ ਸਮੱਗਰੀ ਦੀ ਪੁਸ਼ਟੀ ਕਰ ਸਕੋ ਬਿਨਾਂ ਅਸਲ ਰਸੀਦ ਭੇਜੇ। webhook events ਨੂੰ ਜਿੰਨ੍ਹਾਂ ਦਾ ਤੁਹਾਨੂੰ ਟੈਸਟ ਕਰਨਾ ਹੈ ਉਹ saved samples ਤੋਂ replay ਕਰ ਸਕਦੇ ਹੋ।
ਸਧਾਰਣ ਰਿਲੀਜ਼ ਫਲੋ:
ਜੇ ਸਟੇਜਿੰਗ ਅਤੇ ਪ੍ਰੋਡਕਸ਼ਨ ਇਰਾਦੇ ਨਾਲ ਵੱਖਰੇ ਹੋਣ (ਜਿਵੇਂ ਸਟੇਜਿੰਗ ਵਿੱਚ payments mocked ਹਨ), ਤਾਂ ਉਸ ਨੂੰ ਇੱਕ ਛੋਟੇ “known differences” ਨੋਟ ਵਿੱਚ ਦਰਜ ਕਰੋ।
ਅਧਿਕਤਰ ਸਟੇਜਿੰਗ ਹੈਰਾਨੀਆਂ ਛੋਟੇ ਫਰਕਾਂ ਤੋਂ ਆਉਂਦੀਆਂ ਹਨ ਜੋ ਸਿਰਫ਼ ਅਸਲ ਪਛਾਣ ਨਿਯਮਾਂ, ਅਸਲ ਸਮਾਂ-ਸੰਬੰਧੀਤਾ, ਜਾਂ ਗੰਦੀਆਂ ਡੇਟਾ 'ਤੇ ਹੀ ਸਾਹਮਣੇ ਆਉਂਦੀਆਂ ਹਨ। ਤੁਸੀਂ ਹਰ ਵੇਲੇ ਹਰ ਇਕ ਵਿਸ਼ੇ ਨੂੰ mirror ਨਹੀਂ ਕਰ ਰਹੇ — ਤੁਸੀਂ ਅਹਿਮ ਵਿਹਾਰ ਨੂੰ ਮਿਲਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹੋ।
ਬਾਰ-ਬਾਰ ਆਉਣ ਵਾਲੀਆਂ ਗਲਤੀਆਂ:
ਇਕ ਹਕੀਕਤੀ ਉਦਾਹਰਣ: ਤੁਸੀਂ ਸਟੇਜਿੰਗ ਵਿੱਚ “upgrade plan” ਟੈਸਟ ਕਰਦੇ ਹੋ, ਪਰ ਸਟੇਜਿੰਗ email verification enforce ਨਹੀਂ ਕਰਦਾ। ਫਲੋ ਪਾਸ ਹੋ ਜਾਂਦਾ ਹੈ। ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ, unverified users upgrade ਨਹੀਂ ਕਰ ਸਕਦੇ ਅਤੇ support flooded ਹੋ ਜਾਂਦਾ ਹੈ।
ਛੋਟੀ ਟੀਮਾਂ ਉਹੀ ਕੁਝ ਚੈਕ ਕਰਕੇ ਜਿੱਤ ਹੁੰਦੀਆਂ ਹਨ।
ਸਟੇਜਿੰਗ ਅਕਸਰ ਪ੍ਰੋਡਕਸ਼ਨ ਨਾਲੋਂ ਕਮਜ਼ੋਰ ਸੁਰੱਖਿਆ ਰੱਖਦੀ ਹੈ, ਪਰ ਇਸ ਵਿੱਚ ਵੀ ਅਸਲੀ ਕੋਡ, ਅਸਲੀ ਸੀਕ੍ਰੇਟ, ਅਤੇ ਕਈ ਵਾਰੀ ਅਸਲੀ ਡੇਟਾ ਹੋ ਸਕਦਾ ਹੈ। ਸਟੇਜਿੰਗ ਨੂੰ ਘੱਟ-ਯੂਜ਼ਰ ਵਾਲੀ ਅਸਲ ਪ੍ਰਣਾਲੀ ਸਮਝੋ, ਨਾ ਕਿ ਖਿਡੌਣਾ।
ਡੇਟਾ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ। ਸਭ ਤੋਂ ਸੁਰੱਖਿਅਤ ਡਿਫਾਲਟ ਇਹ ਹੈ ਕਿ ਸਟੇਜਿੰਗ ਵਿੱਚ ਕੋਈ ਅਸਲੀ ਗਾਹਕੀ ਡੇਟਾ ਨਾ ਰਹੇ। ਜੇ ਕਿਸੇ ਬੱਗ ਨੂੰ ਦੁਹਰਾਉਣ ਲਈ ਪ੍ਰੋਡਕਸ਼ਨ ਡੇਟਾ ਨਕਲ ਕਰਨੀ ਲੋੜੀਂਦੀ ਹੋਵੇ, ਤਾਂ ਸੰਵੇਦਨਸ਼ੀਲ ਖੇਤਰਾਂ ਨੂੰ ਮਾਸਕ ਕਰੋ ਅਤੇ ਕਾਪੀ ਛੋਟੀ ਰੱਖੋ।
ਐਕਸੈਸ ਵੱਖਰਾ ਅਤੇ ਘੱਟ ਤੋਂ ਘੱਟ ਰੱਖੋ। ਸਟੇਜਿੰਗ ਲਈ ਆਪਣੇ ਖਾਤੇ, API keys, ਅਤੇ ਕ੍ਰਿਡੈਂਸ਼ਲ ਰੱਖੋ ਜੋ ਘੱਟ ਤੋਂ ਘੱਟ ਅਨੁਮਤੀਆਂ ਦੇ ਨਾਲ ਹੋਣ। ਜੇ ਸਟੇਜਿੰਗ ਕੀ ਲੀਕ ਹੋ ਜਾਵੇ, ਤਾਂ ਇਹ ਪ੍ਰੋਡਕਸ਼ਨ ਨੂੰ ਖੋਲ੍ਹਣ ਨਾ ਦੇਵੇ।
ਇੱਕ ਅਮਲੀ ਬੇਸਲਾਈਨ:
ਸਟੇਜਿੰਗ ਤਦ ਹੀ ਮਦਦ ਕਰਦਾ ਹੈ ਜਦ ਟੀਮ ਹਫ਼ਤੇ-ਹਫ਼ਤੇ ਇਸਨੂੰ ਚਲਾਉ ਸਕੇ। ਇੱਕ ਸਥਿਰ ਰੁਟੀਨ ਲਈ ਕੋਸ਼ਿਸ਼ ਕਰੋ, ਨਾ ਕਿ ਪ੍ਰੋਡਕਸ਼ਨ ਦਾ perfekte ਨਕਲ।
ਇੱਕ ਹਲਕੀ-ਫੁਲਕੀ standard ਲਿਖੋ ਜੋ ਅਸਲ ਵਿੱਚ follow ਕੀਤੀ ਜਾ ਸਕੇ: ਕੀ ਮਿਲਾਉਣਾ ਹੈ, ਕੀ ਮੌਕ ਹੈ, ਅਤੇ ਕੀ “deploy ਲਈ ਤਿਆਰ” ਗਿਣਿਆ ਜਾਵੇਗਾ। ਇਸਨੂੰ ਇੰਨਾ ਛੋਟਾ ਰੱਖੋ ਕਿ ਲੋਕ ਪੜ੍ਹਨ।
ਉਹ ਚੀਜ਼ਾਂ automate ਕਰੋ ਜੋ ਲੋਕ ਭੁੱਲ ਜਾਂਦੇ ਹਨ। merge 'ਤੇ ਸਟੇਜਿੰਗ ਨੂੰ auto-deploy ਕਰੋ, deploy ਦੌਰਾਨ ਮਾਈਗਰੇਸ਼ਨ ਚਲਾਓ, ਅਤੇ ਕੁਝ smoke tests ਰੱਖੋ ਜੋ ਬੁਨਿਆਦੀ ਚੀਜ਼ਾਂ ਦਾ ਪਰਖ ਦਿੰਦੀਆਂ ਹਨ।
ਜੇ ਤੁਸੀਂ Koder.ai (koder.ai) ਨਾਲ ਬਣਾ ਰਹੇ ਹੋ, ਤਾਂ ਸਟੇਜਿੰਗ ਨੂੰ ਆਪਣਾ ਵੱਖਰਾ environment ਰੱਖੋ, ਵੱਖਰੇ ਸੀਕ੍ਰੇਟ ਅਤੇ ਡੋਮੇਨ ਸੈਟਿੰਗਜ਼ ਰੱਖੋ, ਅਤੇ snapshots ਅਤੇ rollback ਨੂੰ ਨਾਰਮਲ ਰਿਲੀਜ਼ ਰੁਟੀਨ ਦਾ ਹਿੱਸਾ ਬਣਾਓ ਤਾਂ ਕਿ ਇੱਕ ਖਰਾਬ deploy ਇੱਕ ਤੇਜ਼ੀ ਨਾਲ ਹੱਲ ਹੋਣ ਵਾਲੀ ਗਲਤੀ ਬਣੇ, ਲੰਬੀ ਰਾਤ ਨਾ।
ਫੈਸਲਾ ਕਰੋ ਕਿ ਕੌਣ ਚੈਕਲਿਸਟ ਦਾ ਮਾਲਕ ਹੈ ਅਤੇ ਕੌਣ ਰਿਲੀਜ਼ ਮਨਜ਼ੂਰ ਕਰ ਸਕਦਾ ਹੈ। ਸਪਸ਼ਟ ਮਾਲਕੀ ਹਮੇਸ਼ਾ ਵਧੀਆ ਇਰਾਦਿਆਂ ਨੂੰ ਜਿੱਤਾਉਂਦੀ ਹੈ।
ਇਸ ਦਾ ਮਕਸਦ ਇਕੋ ਅਉਟਕਮ ਹੋਣਾ ਹੈ, ਨਹੀਂ ਕਿ ਠੀਕ ਠੀਕ ਉਹੀ ਸਕੇਲ। ਜੇਕਰ ਇਕੋ ਯੂਜ਼ਰ ਕਾਰਵਾਈ ਦੋਹਾਂ ਥਾਵਾਂ ਉਤੇ ਇਕੋ ਕਾਰਨ ਨਾਲ ਸਫਲ ਜਾਂ ਫੇਲ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ, ਤਾਂ ਤੁਹਾਡਾ ਸਟੇਜਿੰਗ ਆਪਣਾ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ — ਭਾਵੇਂ ਮਸ਼ੀਨਾਂ ਛੋਟੀਆਂ ਹੋਣ ਜਾਂ ਡੇਟਾ ਘੱਟ ਹੋਵੇ।
ਜਦੋਂ ਤਬਦੀਲੀਆਂ ਪੈਸਾ, ਡੇਟਾ ਜਾਂ ਐਕਸੈਸ ਨੂੰ ਨੁਕਸਾਨ ਪਹੁੰਚਾ ਸਕਦੀਆਂ ਹੋਣ। ਜੇ ਤੁਸੀਂ ਅਕਸਰ ਮਾਈਗਰੇਸ਼ਨ ਚਲਾਉਂਦੇ ਹੋ, OAuth/SSO ਵਰਤਦੇ ਹੋ, ਮਹੱਤਵਪੂਰਨ ਈਮੇਲ ਭੇਜਦੇ ਹੋ, ਪੇਮੈਂਟ ਪ੍ਰੋਸੈਸ ਕਰਦੇ ਹੋ ਜਾਂ ਕਈ ਲੋਕ ਕੋਡ ਮਿਲਾ ਰਹੇ ਹਨ, ਤਾਂ ਸਟੇਜਿੰਗ ਆਮ ਤੌਰ 'ਤੇ ਖਰਚ ਤੋਂ ਵੱਧ ਸਮਾਂ ਬਚਾਉਂਦੀ ਹੈ।
ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਡੇਟਾਬੇਸ ਮਾਈਗਰੇਸ਼ਨ ਅਤੇ ਸਕੀਮਾ ਨੂੰ ਮਿਲਾਉ — ਇਨ੍ਹਾਂ ਹੀ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ “ਸਟੇਜਿੰਗ ਵਿੱਚ ਚੰਗਾ, ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਖਰਾਬ” ਵਾਲੇ ਅਚਰਜ ਲੁਕਦੇ ਹਨ। ਫਿਰ auth ਫਲੋ ਅਤੇ ਡੋਮੇਨ ਨੂੰ ਪ੍ਰਾਇਰਿਟਾਈਜ਼ ਕਰੋ ਕਿਉਂਕਿ ਕਾਲਬੈਕ, ਕੁਕੀਜ਼ ਅਤੇ HTTPS ਨਿਯਮ ਅਕਸਰ ਹੋਸਟਨੇਮ ਬਦਲਣ 'ਤੇ ਵੱਖਰੇ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹਨ।
ਉਹੀ ਮਾਈਗਰੇਸ਼ਨ ਟੂਲ ਅਤੇ ਇੱਕੋ ਹੀ ਚਲਾਉਣ ਦੀ ਸ਼ਰਤ ਵਰਤੋ ਜੋ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਵਰਤੀ ਜਾਂਦੀ ਹੈ। ਜੇ ਪ੍ਰੋਡਕਸ਼ਨ deploy ਦੌਰਾਨ ਮਾਈਗਰੇਸ਼ਨ ਚਲਾਂਦਾ ਹੈ, ਤਾਂ ਸਟੇਜਿੰਗ ਵੀ ਐਸਾ ਹੀ ਕਰੇ। ਜੇ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਮਨਜ਼ੂਰੀ ਲਾਗੂ ਹੈ ਤਾਂ ਸਟੇਜਿੰਗ ਵਿੱਚ ਵੀ ਉਸੇ ਪੱਧਰ ਦੀ ਨਕਲ ਕਰੋ ਤਾਂ ਕਿ ਆਰਡਰਿੰਗ, ਲਾਕਿੰਗ ਅਤੇ ਰੋਲਬੈਕ ਸਮੱਸਿਆਵਾਂ ਪਹਿਲਾਂ ਪਰਗਟ ਹੋ ਜਾਣ।
ਸੁਰੱਖਿਅਤ ਡਿਫਾਲਟ ਇਹ ਹੈ ਕਿ ਸਟੇਜਿੰਗ ਵਿੱਚ ਅਸਲੀ ਗਾਹਕ ਡੇਟਾ ਨਾ ਰੱਖੋ। ਜੇ ਕਿਸੇ ਬੱਗ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਪ੍ਰੋਡਕਸ਼ਨ ਡੇਟਾ ਲੋੜੀਦਾ ਹੋਵੇ, ਤਾਂ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਸੰਵੇਦਨਸ਼ੀਲ ਫੀਲਡ (ਈਮੇਲ, ਨਾਮ, ਪਤੇ, ਭੁਗਤਾਨ ਡੀਟੇਲ) ਮਾਸਕ ਕਰੋ ਅਤੇ ਹਰ ਕਿਸ ਨੂੰ ਐਕਸੈਸ ਦੀ ਇਜਾਜ਼ਤ ਘੱਟ ਰੱਖੋ।
ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਇਕੋ ਰਹੇ, ਪਰ ਕ੍ਰਿਡੈਂਸ਼ਲ ਵੱਖ-ਵੱਖ ਹੋਣ। ਸਟੇਜਿੰਗ ਲਈ ਅਲੱਗ OAuth/SSO ਐਪ ਬਣਾਓ — ਆਪਣੀ ਵੱਖਰੀ client ID ਅਤੇ secret ਅਤੇ ਅਨੁਮਤ redirect URLs ਦੇ ਨਾਲ — ਤਾਂ ਕਿ ਸਟੇਜਿੰਗ ਦੀ ਗਲਤੀ ਪ੍ਰੋਡਕਸ਼ਨ ਖਾਤਿਆਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਨਾ ਕਰੇ।
ਸਟੇਜਿੰਗ ਡੋਮੇਨ ਵਰਤੋ ਜੋ ਪ੍ਰੋਡਕਸ਼ਨ ਦੀ ਸ਼ਕਲ ਨੂੰ ਮਿਰਰ ਕਰਦਾ ਹੋਵੇ ਅਤੇ ਉਸੇ ਤਰੀਕੇ ਨਾਲ HTTPS ਲਾਗੂ ਕਰੋ। ਇਹ absolute links, cookie flags (ਜਿਵੇਂ Secure ਅਤੇ SameSite), redirect ਨਿਯਮ ਅਤੇ trusted proxy headers ਨਾਲ ਸੰਬੰਧਤ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਪਹਿਲਾਂ ਸਫਾ ਕਰ ਦੇਵੇਗਾ।
ਸਟੇਜਿੰਗ ਵਿੱਚ ਉਹੀ ਕਿਸਮ ਦਾ ਜੌਬ ਸਿਸਟਮ, ਉਨ੍ਹਾਂ ਹੀ retry ਅਤੇ timeout ਨਿਯਮਾਂ ਨਾਲ ਚਲਾਓ ਤਾਂ ਕਿ ਤੁਸੀਂ ਅਸਲੀ ਵਿਹਾਰ ਦੀ ਪਰਖ ਕਰ ਰਹੇ ਹੋ। ਜੇ ਤੁਸੀਂ ਸਟੇਜਿੰਗ ਵਿੱਚ ਬਹੁਤ ਘੱਟ retry ਜਾਂ timeout ਰੱਖ ਦਿਓਗੇ, ਤਾਂ ਉਹਨਾਂ ਖਾਮੀਆਂ ਨੂੰ ਨਹੀਂ ਦੇਖ ਪਾਓਗੇ ਜੋ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਮੁੱਖ ਹੁੰਦੀਆਂ ਹਨ।
ਸੈਂਡਬਾਕਸ ਕੀਆਂ ਅਤੇ ਟੈਸਟ ਕਨਫਿਗਰੈਸ਼ਨ ਵਰਤੋਂ ਤਾਂ ਜੋ ਤੁਸੀਂ ਪੂਰੇ ਫਲੋ ਨੂੰ ਬਿਨਾਂ ਅਸਲੀ ਨੁਕਸਾਨ ਦੇ ਅਭਿਆਸ ਕਰ ਸਕੋ। ਈਮੇਲ ਅਤੇ SMS ਲਈ, ਸੁਨੇਹਿਆਂ ਨੂੰ ਇੱਕ ਸੁਰੱਖਿਅਤ ਇਨਬੁਕਸ ਜਾਂ ਆਂਰਤਿਕ ਆਉਟਬਾਕਸ ਵਿਚ ਰੀਡਾਇਰੈਕਟ ਕਰੋ ਤਾਂ ਜੋ ਤੁਸੀਂ ਸਮੱਗਰੀ ਦੀ ਪੁਸ਼ਟੀ ਕਰ ਸਕੋ ਬਿਨਾਂ ਅਸਲੀ ਗਾਹਕਾਂ ਨੂੰ ਭੇਜੇ।
ਸਟੇਜਿੰਗ ਨੂੰ ਇੱਕ ਘੱਟ-ਉਪਭੋਗਤਾ ਪਰ ਹਕੀਕਤੀ ਪ੍ਰਣਾਲੀ ਸਮਝੋ — ਅੱਗੇ ਕਈ ਨਿਯਮ ਲਗਾਓ: ਵਿਭਿੰਨ ਸੀਕ੍ਰੇਟ, ਘੱਟ-ਪ੍ਰਵਾਨਗੀ ਵਾਲੇ ਖਾਤੇ, ਨਿਯਮਤ ਰੋਟੇਸ਼ਨ ਅਤੇ ਰੀਟੇਨਸ਼ਨ ਨੀਤੀਆਂ। ਸਟੇਜਿੰਗ ਦੀ ਆਸਾਨ ਰੀਸੈਟ ਵਿਵਸਥਾ ਰੱਖੋ ਤਾਂ ਕਿ ਦੁਖਦਾਈ deploy ਤੇਜ਼ੀ ਨਾਲ ਵਾਪਸ ਲਿਆਂਦਾ ਜਾ ਸਕੇ।