ਜਾਣੋ ਕਿ ਕਦੋਂ Blue/Green ਜਾਂ Canary ਵਰਤਣੇ ਚਾਹੀਦੇ ਨੇ, ਟ੍ਰੈਫਿਕ ਕਿਵੇਂ ਸੋਧੀ ਜਾਂਦੀ ਹੈ, ਕੀ ਮਾਨੀਟਰ ਕਰਨਾ ਹੈ, ਅਤੇ ਸੁਰੱਖਿਅਤ ਰੋਲਆਊਟ ਅਤੇ ਰੋਲਬੈਕ ਕਦਮ ਕੀ ਹਨ।

ਨਵਾਂ ਕੋਡ ਸ਼ਿਪ ਕਰਨਾ ਖਤਰਨਾਕ ਹੋ ਸਕਦਾ ਹੈ ਕਿਉਂਕਿ ਅਸਲ ਵਰਤੋਂਕਾਰਾਂ ਦੇ ਟਰੈਫਿਕ ਦੇ ਨਾਲ ਹੀ ਤੁਹਾਨੂੰ ਪਤਾ ਚਲਦਾ ਹੈ ਕਿ ਕੋਡ ਕਿਵੇਂ ਵਰਤਦਾ ਹੈ। ਬਲੂ/ਗ੍ਰੀਨ ਅਤੇ ਕੈਨੇਰੀ ਦੋ ਆਮ ਤਰੀਕੇ ਹਨ ਜੋ ਇਸ ਜੋਖਮ ਨੂੰ ਘਟਾਉਂਦੇ ਹਨ ਅਤੇ ਡਾਊਨਟਾਈਮ ਨੂੰ ਨਜ਼ਦੀਕੀ ਜ਼ੀਰੋ ਰੱਖਦੇ ਹਨ।
ਬਲੂ/ਗ੍ਰੀਨ ਡਿਪਲੋਇਮੈਂਟ ਦੋ ਅਲੱਗ ਪਰ ਸਮਾਨ ਪਰਿਵੇਸ਼ (environments) ਵਰਤਦੀ ਹੈ:
ਤੁਸੀਂ Green ਪਿੱਛੇ ਤਿਆਰ ਕਰਦੇ ਹੋ—ਨਵਾਂ ਬਿਲਡ ਡਿਪਲੋਇ, ਚੈੱਕ ਚਲਾਓ, ਵਾਰਮ-ਅੱਪ ਕਰੋ—ਫਿਰ ਜਦੋਂ ਤੁਹਾਨੂੰ ਭਰੋਸਾ ਹੋਵੇ ਤਾਂ Blue ਤੋਂ Green ਨੂੰ ਟ੍ਰੈਫਿਕ ਸਵਿੱਚ ਕਰੋ। ਕੁਝ ਗਲਤ ਹੋਵੇ ਤਾਂ ਤੇਜ਼ੀ ਨਾਲ ਵਾਪਸ ਸਵਿੱਚ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
ਮੁੱਖ ਵਿਚਾਰ "ਦੋ ਰੰਗ" ਨਹੀਂ, ਬਲਕਿ ਇੱਕ ਸਾਫ਼, ਵਾਪਸ ਕਰਨ ਯੋਗ ਕਟਓਵਰ ਹੈ।
ਕੈਨੇਰੀ ਰਿਲੀਜ਼ ਇੱਕ تدريجی ਰੋਲਆਊਟ ਹੈ। ਇਕੱਠੇ ਸਾਰੇ ਨੂੰ ਤੁਰੰਤ ਨਵਾਂ ਵਰਜਨ ਦੇਣ ਦੀ ਥਾਂ, ਪਹਿਲਾਂ ਇੱਕ ਛੋਟਾ ਹਿੱਸਾ (ਉਦਾਹਰਨ ਲਈ 1–5%) ਨੂੰ ਨਵਾਂ ਵਰਜਨ ਦਿਖਾਉਂਦੇ ਹੋ। ਜੇ ਸਭ ਠੀਕ ਲੱਗੇ, ਤਾਂ ਕਦਮ-ਦਰ-ਕਦਮ ਰੋਲਆਊਟ ਵੱਧਾਇਆ ਜਾਂਦਾ ਹੈ ਜਦ ਤੱਕ 100% ਟ੍ਰੈਫਿਕ ਨਵੇਂ ਵਰਜਨ ਤੇ ਨਾ ਹੋ ਜਾਏ।
ਮੁੱਖ ਵਿਚਾਰ ਹੈ ਅਸਲ ਟਰੈਫਿਕ ਤੋਂ ਸਿੱਖਣਾ ਪਹਿਲਾਂ।
ਦੋਹਾਂ ਤਰੀਕਿਆਂ ਦਾ ਮਕਸਦ ਹੈ:
ਬਲੂ/ਗ੍ਰੀਨ ਤੇਜ਼ ਸਵਿੱਚ 'ਤੇ ਧਿਆਨ ਦਿੰਦਾ ਹੈ, ਜਦਕਿ ਕੈਨੇਰੀ ਨਿਰੀਖਣ ਅਤੇ ਟ੍ਰੈਫਿਕ ਸ਼ਿਫਟਿੰਗ ਰਾਹੀਂ ਨਿਯੰਤਰਿਤ ਐਕਸਪੋਜ਼ਰ 'ਤੇ।
ਕੋਈ ਵੀ ਪদ্ধਤੀ ਸਵੈਚਾਲਿਤ ਤੌਰ ਤੇ ਬਿਹਤਰ ਨਹੀਂ। ਸਹੀ ਚੋਣ ਤੁਹਾਡੀ ਉਤਪਾਦ ਵਰਤੋਂ, ਟੈਸਟਿੰਗ ਵਿੱਚ ਭਰੋਸਾ, ਫੀਡਬੈਕ ਦੀ ਲੋੜ ਅਤੇ ਤੁਸੀਂ ਕਿਹੜੇ ਤਰ੍ਹਾਂ ਦੀਆਂ ਗਲਤੀਆਂ ਤੋਂ ਬਚਣਾ ਚਾਹੁੰਦੇ ਹੋ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ।
ਕਈ ਟੀਮਾਂ ਦੋਹਾਂ ਨੂੰ ਮਿਲਾ ਕੇ ਵਰਤਦੀਆਂ ਹਨ—ਸਧਾਰਣਤਾ ਲਈ Blue/Green ਅਤੇ ਉਪਭੋਗਤਾ ਐਕਸਪੋਜ਼ਰ ਲਈ Canary ਤਕਨੀਕਾਂ।
ਅਗਲੇ ਭਾਗਾਂ ਵਿੱਚ ਅਸੀਂ ਦੋਹਾਂ ਦੀ ਤੁਲਨਾ ਕਰਾਂਗੇ ਅਤੇ ਦਿਖਾਵਾਂਗੇ ਕਿ ਕਦੋਂ ਹਰ ਇੱਕ ਸਭ ਤੋਂ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ।
ਬਲੂ/ਗ੍ਰੀਨ ਅਤੇ ਕੈਨੇਰੀ ਦੋਹਾਂ ਨੇ ਬਿਨਾਂ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਰੋਕਿਆ ਬਦਲਾਅਾਂ ਰਿਲੀਜ਼ ਕਰਨ ਦੇ ਤਰੀਕੇ ਹਨ—ਪਰ ਉਹ ਇਸ ਗੱਲ ਵਿੱਚ ਵੱਖਰੇ ਹਨ ਕਿ ਨਵੀਂ ਵਰਜਨ ਨੂੰ ਟ੍ਰੈਫਿਕ ਕਿਵੇਂ ਮਿਲਦੀ ਹੈ।
ਬਲੂ/ਗ੍ਰੀਨ ਦੋ ਪੂਰੇ ਪਰਿਬੇਸ਼ ਚਲਾਉਂਦੀ ਹੈ: "Blue" (ਮੌਜੂਦਾ) ਅਤੇ "Green" (ਨਵਾਂ)। ਤੁਸੀਂ Green ਨੂੰ ਵੈਰੀਫਾਈ ਕਰਕੇ ਫਿਰ ਸਾਰੀ ਟ੍ਰੈਫਿਕ ਇੱਕ ਵਾਰ ਵਿੱਚ ਸਵਿੱਚ ਕਰਦੇ ਹੋ—ਇਕ ਨਿਯੰਤਰਿਤ ਬਟਨ ਵਾਂਗ।
ਕੈਨੇਰੀ ਪਹਿਲਾਂ ਨਵੇਂ ਵਰਜਨ ਨੂੰ ਇੱਕ ਛੋਟੇ ਹਿੱਸੇ (ਉਦਾਹਰਨ ਲਈ 1–5%) ਨੂੰ ਦਿੰਦੀ ਹੈ, ਫਿਰ ਰੋਡਮੈਪ ਅਨੁਸਾਰ ਟ੍ਰੈਫਿਕ ਧੀਰੇ-ਧੀਰੇ ਵਧਾਇਦੀ ਹੈ ਜਦ ਤੱਕ ਤੁਸੀਂ ਅਸਲ-ਦੁਨੀਆ ਕਾਰਗੁਜ਼ਾਰੀ ਵੇਖਦੇ ਹੋ।
| ਫੈਕਟਰ | ਬਲੂ/ਗ੍ਰੀਨ | ਕੈਨੇਰੀ |
|---|---|---|
| ਤੇਜ਼ੀ | ਵੈਰੀਫਿਕੇਸ਼ਨ ਮਗਰੋਂ ਬਹੁਤ ਤੇਜ਼ ਕਟਓਵਰ | ਮੰਤਵਯ ਰੂਪ ਵਿੱਚ ਧੀਮਾ (ਰੈਂਪਡ ਰੋਲਆਊਟ) |
| ਜੋਖਮ | ਮੱਧ: ਸਵਿੱਚ ਤੋਂ ਬਾਅਦ ਬੁਰਾ ਰਿਲੀਜ਼ ਸਾਰੇ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦਾ ਹੈ | ਘੱਟ: ਮੁੱਦੇ ਅਕਸਰ ਪੂਰੇ ਰੋਲਆਊਟ ਤੋਂ ਪਹਿਲਾਂ ਸਾਹਮਣੇ ਆ ਜਾਂਦੇ ਹਨ |
| ਜਟਿਲਤਾ | ਮੋਡਰੇਟ (ਦੋ ਪਰਿਬੇਸ਼, ਸਾਫ਼ ਸਵਿੱਚ) | ਵੱਧ (ਟ੍ਰੈਫਿਕ ਸਪਲਿੱਟਿੰਗ, ਵਿਸ਼ਲੇਸ਼ਣ, ਕਈ ਕਦਮ) |
| ਲਾਗਤ | ਵੱਧ (ਰੋਲਆਊਟ ਦੌਰਾਨ ਸਮਰੱਥਾ ਦੁੱਗਣੀ ਹੋ ਸਕਦੀ ਹੈ) | ਅਕਸਰ ਘੱਟ (ਮੌਜੂਦਾ ਸਮਰੱਥਾ ਨਾਲ ਰੈਂਪ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ) |
| ਸਭ ਤੋਂ ਵਧੀਆ ਲਈ | ਵੱਡੇ, ਸਮਨਵਿਤ ਬਦਲਾਵ | ਅਕਸਰ ਛੋਟੇ, ਬਾਰ-ਬਾਰ ਸੁਧਾਰ |
ਨਿਸ਼ਚਿਤ ਨਾ ਹੋਵੋ ਤਾਂ ਸ਼ੁਰੂ ਕਰਨ ਲਈ Blue/Green ਨਾਲ ਸੁਚਾਲੂਤਾ ਬਣਾ ਲਵੋ, ਫਿਰ ਮਾਨੀਟਰੀੰਗ ਅਤੇ ਰੋਲਬੈਕ ਆਦਤਾਂ ਮਜ਼ਬੂਤ ਹੋਣ 'ਤੇ ਉੱਚ-ਖਤਰੇ ਵਾਲੇ ਸਰਵਿਸਾਂ ਲਈ Canary ਸ਼ਾਮਲ ਕਰੋ।
ਬਲੂ/ਗ੍ਰੀਨ ਉਹ ਵੇਲਾ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਰਿਲੀਜ਼ ਨੂੰ "ਸਵਿੱਚ" ਵਾਂਗ ਮਹਿਸੂਸ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। ਤੁਸੀਂ ਦੋ production-ਜਿਹੇ ਪਰਿਵੇਸ਼ ਚਲਾਉਂਦੇ ਹੋ: Blue (ਮੌਜੂਦਾ) ਅਤੇ Green (ਨਵਾਂ)। ਜਦੋਂ Green ਵੈਰੀਫਾਈ ਹੋ ਜਾਏ, ਤੁਸੀਂ ਉਥੇ ਯੂਜ਼ਰਾਂ ਨੂੰ ਰਾਜ਼ੀਦੇ ਹੋ।
ਜੇ ਤੁਹਾਡੀ ਉਤਪਾਦਿਕ ਪ੍ਰਕਿਰਿਆ maintenance windows ਸਹਿਣ ਨਹੀਂ ਕਰ ਸਕਦੀ—ਜਿਵੇਂ checkout, booking, logged-in ਡੈਸ਼ਬੋਰਡ—ਤਾਂ ਬਲੂ/ਗ੍ਰੀਨ ਮਦਦਗਾਰ ਹੈ ਕਿਉਂਕਿ ਨਵਾਂ ਵਰਜਨ ਪਹਿਲਾਂ ਸ਼ੁਰੂ, ਵਾਰਮ ਅਤੇ ਚੈੱਕ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਜ਼ਿਆਦਾਤਰ deploy ਸਮਾਂ ਗਾਹਕਾਂ ਦੇ ਸਾਹਮਣੇ ਨਹੀਂ ਹੁੰਦਾ।
Rollback ਅਕਸਰ ਸਿਰਫ਼ ਟ੍ਰੈਫਿਕ ਵਾਪਸ Blue 'ਤੇ ਰੀਡਾਇਰੈਕਟ ਕਰਨਾ ਹੁੰਦਾ ਹੈ। ਇਹ ਕੀਮਤੀ ਹੈ ਜਦੋਂ:
ਰੋਲਬੈਕ ਦੇ ਲਈ ਰੀ-ਬਿਲਡ ਜਾਂ ਰੀ-ਡਿਪਲੋਇ ਦੀ ਲੋੜ ਨਹੀਂ ਪੈਂਦੀ—ਇਹ ਟ੍ਰੈਫਿਕ ਸਵਿੱਚ ਹੈ।
ਬਲੂ/ਗ੍ਰੀਨ ਸਭ ਤੋਂ ਆਸਾਨ ਹੈ ਜਦੋਂ database migrations ਪਿਛਲੇ ਵਰਜਨ ਨਾਲ ਕਾਂਪੈਟਿਬਲ ਹੋਣ, ਕਿਉਂਕਿ ਇੱਕ ਸਮੇਂ Blue ਅਤੇ Green ਦੋਹਾਂ ਮੌਜੂਦ ਰਹਿ ਸਕਦੇ ਹਨ।
ਚੰਗੇ ਮਾਮਲੇ:
ਖਤਰਨਾਕ ਮਾਮਲੇ: ਕਾਲਮ ਹਟਾਉਣਾ, ਫੀਲਡ ਰੀਨੇਮ ਕਰਨਾ, ਜਾਂ ਅਰਥ ਬਦਲਣਾ—ਇਹਨਾਂ ਨਾਲ "ਵਾਪਸ ਸਵਿੱਚ" ਦਾ ਵਾਅਦਾ ਟੋਟ ਸਕਦਾ ਹੈ ਜੇ ਤੁਸੀਂ multi-step ਮਾਈਗ੍ਰੇਸ਼ਨ ਨਹੀਂ ਕਰਦੇ।
ਬਲੂ/ਗ੍ਰੀਨ ਵਾਧੂ ਸਮਰੱਥਾ (ਦੋ stacks) ਅਤੇ ਟ੍ਰੈਫਿਕ ਨਿਰਦੇਸ਼ ਲਈ ਇੱਕ ਤਰੀਕੇ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ (ਲੋਡ ਬੈਲਾਂਸਰ, ਇਨਗ੍ਰੈਸ, ਜਾਂ ਪਲੇਟਫਾਰਮ ਰੂਟਿੰਗ)। ਜੇ ਤੁਹਾਡੇ ਕੋਲ ਪ੍ਰੋਵੀਜ਼ਨਿੰਗ ਆਟੋਮੇਸ਼ਨ ਅਤੇ ਸਾਫ਼ ਰਾਟਿੰਗ ਲਿਵਰ ਹੈ, ਤਾਂ ਬਲੂ/ਗ੍ਰੀਨ ਉੱਚ-ਭਰੋਸੇਯੋਗ ਰਿਲੀਜ਼ ਲਈ ਇੱਕ ਅਸਾਨ ਡਿਫੌਲਟ ਬਣ ਸਕਦਾ ਹੈ।
ਕੈਨੇਰੀ ਰੋਲਆਊਟ ਵਿੱਚ ਬਦਲਾਅ ਪਹਿਲਾਂ ਇੱਕ ਛੋਟੇ ਹਿੱਸੇ ਨੂੰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਨਤੀਜੇ ਤੋਂ ਸਿੱਖਿਆ ਜਾਂਦਾ ਹੈ, ਫਿਰ ਵੱਧਾਇਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਤਦੋਂ ٹھੀਕ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਜੋਖਮ ਘਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ ਬਿਨਾਂ ਸਭ ਕੁਝ ਰੋਕੇ।
ਕੈਨੇਰੀ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ ਉੱਚ-ਟਰੈਫਿਕ ਐਪਾਂ ਲਈ ਕਿਉਂਕਿ 1–5% ਟਰੈਫਿਕ ਵੀ ਜਲਦੀ ਮਾਨਯੋਗ ਡੇਟਾ ਦੇ ਸਕਦਾ ਹੈ। ਜੇ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਮੈਟ੍ਰਿਕਸ (error rate, latency, conversion, checkout completion, API timeouts) ਟਰੈਕ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਟੇਸਟ ਇਨਵਾਇਰਨਮੈਂਟਾਂ 'ਤੇ ਹੀ ਨਿਰਭਰ ਰਹਿਣ ਦੀ ਥਾਂ ਅਸਲ ਵਰਤੋਂ ਦੇ ਆਧਾਰ 'ਤੇ ਰਿਲੀਜ਼ ਨੂੰ ਵੈਰੀਫਾਈ ਕਰ ਸਕਦੇ ਹੋ।
ਕੁਝ ਸਮੱਸਿਆਵਾਂ ਸਿਰਫ ਅਸਲ ਲੋਡ ਹੇਠਾਂ ਸਮਣਦੀਆਂ ਹਨ: ਧੀਮੀ DB ਕਵੈਰੀਜ਼, cache misses, ਖੇਤਰੀ ਲੇਟੈਂਸੀ, ਨਿਸ਼ਚਿਤ ਡਿਵਾਈਸ ਜਾਂ ਦੁਲਭ ਯੂਜ਼ਰ ਫਲੋਜ਼। ਕੈਨੇਰੀ ਨਾਲ ਤੁਸੀਂ ਇਹ ਪਹੁੰਚ ਸਕਦੇ ਹੋ ਕਿ ਨਵਾਂ ਬਦਲਾਅ ਗਲਤੀਆਂ ਨਹੀਂ ਵਧਾ ਰਿਹਾ।
ਜੇ ਤੁਹਾਡੇ ਉਤਪਾਦ ਵਿੱਚ ਬਾਰ-ਬਾਰ ਸ਼ਿਪਿੰਗ ਹੁੰਦੀ ਹੈ, ਕਈ ਟੀਮਾਂ ਯੋਗਦਾਨ ਦਿੰਦੀਆਂ ਹਨ, ਜਾਂ ਬਦਲਾਅ ਨੂੰ ਗ੍ਰੇਡਿ੍ਯੂਅਲ ਤੌਰ ਤੇ ਪੇਸ਼ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਤਾਂ ਕੈਨੇਰੀ ਮਿਲਦੀ-ਝਲਦੀ ਹੈ। ਤੁਸੀਂ 1% → 10% → 50% → 100% ਤੱਕ ਵਧ ਸਕਦੇ ਹੋ।
ਕੈਨੇਰੀ ਫਲੈਗਸ ਨਾਲ ਖਾਸ ਤੌਰ 'ਤੇ ਚੰਗਾ ਮਿਲਦਾ ਹੈ: ਤੁਸੀਂ ਕੋਡ ਸੇਫ਼ ਤਰ੍ਹਾਂ ਡਿਪਲੋਇ ਕਰਦੇ ਹੋ, ਫਿਰ ਕੁਝ ਉਪਭੋਗਤਾਵਾਂ, ਖੇਤਰਾਂ ਜਾਂ ਖਾਤਿਆਂ ਲਈ ਫੰਕਸ਼ਨਲਟੀ enable ਕਰਦੇ ਹੋ। ਰੋਲਬੈਕ ਘਟਨਾ ਅਕਸਰ ਸਿਰਫ ਫਲੈਗ ਬੰਦ ਕਰਕੇ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
ਜੇ ਤੁਸੀਂ progressive delivery ਵੱਲ ਬਣਾ ਰਹੇ ਹੋ, ਤਾਂ ਕੈਨੇਰੀ ਅਕਸਰ ਸਭ ਤੋਂ ਲਚਕੀਲਾ ਸ਼ੁਰੂਆਤੀ ਬਿੰਦੂ ਹੁੰਦਾ ਹੈ।
See also: /blog/feature-flags-and-progressive-delivery
ਟ੍ਰੈਫਿਕ ਸ਼ਿਫਟਿੰਗ ਦਾ ਸਿੱਧਾ ਮਤਲਬ ਹੈ ਇਹ ਨਿਯੰਤਰਿਤ ਕਰਨਾ ਕਿ "ਕੌਣ" ਨਵਾਂ ਵਰਜਨ ਪਾਉਂਦਾ ਹੈ ਅਤੇ "ਕਦੋਂ"। ਸਾਰੇ ਨੂੰ ਇੱਕ ਵਾਰ ਵਿੱਚ ਫਲਿੱਪ ਕਰਨ ਦੀ ਥਾਂ, ਤੁਸੀਂ ਰਿਕੁਐਸਟਾਂ ਨੂੰ ਧੀਰੇ-ਧੀਰੇ (ਜਾਂ ਚੁਣਿੰਦਾ) ਤੌਰ ਤੇ ਪੁਰਾਣੇ ਤੋਂ ਨਵੇਂ ਵੱਲ ਮੋੜਦੇ ਹੋ। ਇਹੀ ਦੋਨੋ ਬਲੂ/ਗ੍ਰੀਨ ਓਰ ਕੈਨੇਰੀ ਦਾ ਲੋੜੀਦਾ ਹਿਰਦਾ ਹੈ—ਅਤੇ ਇਹੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਜ਼ੀਰੋ ਡਾਊਨਟਾਈਮ ਡਿਪਲੋਇ ਹਕੀਕਤ ਵਿੱਚ ਸਾਫ਼ ਲਗੇ।
ਟ੍ਰੈਫਿਕ ਨੂੰ ਤੁਸੀਂ ਸਟੈਕ ਦੇ ਕੁਝ ਆਮ ਸਥਾਨਾਂ 'ਤੇ ਸਵੀਚ ਕਰ ਸਕਦੇ ਹੋ। ਠੀਕ ਚੋਣ ਇਸ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ ਜੋ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਚਲਾ ਰਹੇ ਹੋ ਅਤੇ ਤੁਹਾਨੂੰ ਕਿੰਨੀ ਬਾਰੀਕੀ ਨਾਲ ਨਿਯੰਤਰਣ ਦੀ ਲੋੜ ਹੈ।
ਹਰ ਲੇਅਰ ਦੀ ਲੋੜ ਨਹੀਂ। ਇੱਕ "source of truth" ਪਿਕ ਕਰੋ ਤਾਂ ਜੋ ਤੁਹਾਡਾ ਰਿਲੀਜ਼ ਮੈਨੇਜਮੈਂਟ ਅਣਵਿਸ਼ਵਾਸਯੋਗ ਨਾ ਬਣੇ।
ਪ੍ਰਤੀਸ਼ਤ ਸਮਝਾਉਣ ਲਈ ਸਭ ਤੋਂ ਆਸਾਨ ਹੈ, ਪਰ ਕੋਹੋਰਟਸ ਅਕਸਰ ਸੁਰੱਖਿਅਤ ਹਨ ਕਿਉਂਕਿ ਤੁਸੀਂ ਇਹ ਨਿਰਧਾਰਿਤ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਕਿਹੜੇ ਯੂਜ਼ਰ ਬਦਲਾਅ ਵੇਖਣਗੇ।
Sticky sessions (session affinity). ਜੇ ਸਿਸਟਮ ਕਿਸੇ ਯੂਜ਼ਰ ਨੂੰ ਇੱਕ ਸਰਵਰ/ਵਰਜਨ ਨਾਲ ਬੰਨ੍ਹਦਾ ਹੈ, ਤਾਂ 10% ਟ੍ਰੈਫਿਕ ਵੰਡ 10% ਵਰਗੀ ਨਹੀਂ ਰਹੇਗੀ। ਇਹ ਵੀੜ-ਪਰਿਵਰਤਨ ਦੌਰਾਨ ਗਲਤੀਆਂ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ। ਸੰਭਵ ਹੋਵੇ ਤਾਂ ਸਾਂਝੀ session ਸਟੋਰੇਜ ਵਰਤੋ ਜਾਂ ਯੂਜ਼ਰ ਨੂੰ ਇਕ-ਸੁਰਤ ਵਰਜਨ 'ਤੇ ਰੱਖੋ।
Cache warming. ਨਵੇਂ ਵਰਜਨ ਅਕਸਰ ਠੰਢੇ ਕੈਸ਼ ਨੂੰ ਮਾਰਦਾ ਹੈ। ਇਹ ਪ੍ਰਦਰਸ਼ਨ ਘਟਾਵੇ ਵਾਂਗ ਲੱਗ ਸਕਦਾ ਹੈ ਭਾਵੇਂ ਕੋਡ ਠੀਕ ਹੋਵੇ। ਵਧੀਆ ਹੈ ਕਿ ਰੈਂਪ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕੈਸ਼ ਵਾਰਮ ਕਰੋ, ਖਾਸ ਕਰਕੇ ਹਾਈ-ਟਰੈਫਿਕ ਪੇਜਾਂ ਅਤੇ ਮਹਿੰਗੇ ਏਂਡਪੌਇੰਟਾਂ ਲਈ।
ਰਾਊਟਿੰਗ ਬਦਲਾਅ ਨੂੰ production ਬਦਲਾਅ ਵਾਂਗ ਹੀ ਦਿਖੋ, ਨਾ ਕਿ ਢਿੱਲੇ-ਢਾਲੇ ਬਟਨ ਕਲਿੱਕ ਵਾਂਗ।
ਦਸਤਾਵੇਜ਼:
ਇਹ ਛੋਟੀ ਗਵਰਨੈਂਸ ਇਸ ਗੱਲ ਤੋਂ ਬਚਾਏਗੀ ਕਿ ਕੋਈ ਵਿਅਕਤੀ "ਸਿਰਫ਼ 50% ਤੇ ਧੱਕ ਦੇ ਦੇਵੇ" ਜਦੋਂ ਤੁਸੀਂ ਅਜੇ ਵੀ ਕੈਨੇਰੀ ਦੀ ਹੇਲਥ ਚੈੱਕ ਕਰ ਰਹੇ ਹੋ।
ਰੋਲਆਊਟ ਸਿਰਫ "ਕੀ ਡਿਪਲੋਇ ਸਫਲ ਹੋਇਆ?" ਨਹੀਂ—ਇਹ ਹੈ "ਕੀ ਅਸਲ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਬੁਰਾ ਅਨੁਭਵ ਮਿਲ ਰਿਹਾ ਹੈ?" ਸਿੱਧਾ ਤਰੀਕਾ ਹੈ ਇੱਕ ਛੋਟੀ ਜਿਹੀ ਸੈੱਟ ਸਿਗਨਲਾਂ ਨੂੰ ਦੇਖਣਾ ਜੋ ਦੱਸਣਗੇ: ਕੀ ਸਿਸਟਮ ਸਿਹਤਮੰਦ ਹੈ, ਅਤੇ ਕੀ ਬਦਲਾਅ ਗਾਹਕਾਂ ਨੂੰ ਨੁਕਸਾਨ ਪਹੁੰਚਾ ਰਿਹਾ ਹੈ?
Error rate: HTTP 5xx, request failures, timeouts, ਅਤੇ dependency errors (DB, payments, ਤੀਜੀਆਂ ਪਾਰਟੀਆਂ) ਨੂੰ ਟ੍ਰੈਕ ਕਰੋ। ਛੋਟੀਆਂ ਗਲਤੀਆਂ ਵੀ ਸਹਾਇਤਾ ਬੋਝ ਵਧਾ ਸਕਦੀਆਂ ਹਨ।
Latency: p50 ਅਤੇ p95 (ਅਤੇ ਜੇ ਹੈ ਤਾਂ p99) ਦੇਖੋ। ਕਿਸੇ ਬਦਲਾਅ ਨਾਲ ਔਸਤ ਠੀਕ ਰਹਿ ਸਕਦਾ ਹੈ ਪਰ ਲੰਬੇ-ਟੇਲ ਸਲੋਡਾਓਨਠ ਬਣ ਸਕਦੇ ਹਨ ਜੋ ਯੂਜ਼ਰ ਮਹਿਸੂਸ ਕਰਨਗੇ।
Saturation: CPU, memory, disk IO, DB connections, queue depth, thread pools—ਇਹ ਦਿਖਾਉਂਦੇ ਹਨ ਕਿ ਸਿਸਟਮ ਕਿੰਨਾ ਭਰਿਆ ਹੋਇਆ ਹੈ। Saturation ਆਮ ਤੌਰ 'ਤੇ outage ਤੋਂ ਪਹਿਲਾਂ ਸੰਕੇਤ ਦਿੰਦੀ ਹੈ।
User-impact signals: ਜੋ ਕੁਝ ਯੂਜ਼ਰ ਅਨੁਭਵ ਕਰਦੇ ਹਨ—checkout failures, sign-in rates, search results, app crash rate, ਮੁੱਖ ਪੇਜ ਲੋਡ ਸਮਾਂ—ਇਹ ਆਮ ਤੌਰ 'ਤੇ ਇੰਫ਼ਰਾਸਟਰਕਚਰ ਅੰਕੜਿਆਂ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦੇ ਹਨ।
ਇੱਕ ਛੋਟਾ ਡੈਸ਼ਬੋਰਡ ਬਣਾਓ ਜੋ ਇੱਕ ਸਕ੍ਰੀਨ 'ਤੇ ਫਿੱਟ ਹੋਵੇ ਅਤੇ ਰਿਲੀਜ਼ ਚੈਨਲ 'ਚ ਸਾਂਝਾ ਕੀਤਾ ਜਾ ਸਕੇ। ਹਰ ਰੋਲਆਊਟ ਲਈ ਇਹ ਇੱਕਸਾਰ ਰੱਖੋ ਤਾਂ ਕਿ ਲੋਕ ਗ੍ਰਾਫਾਂ ਦੀ ਖੋਜ ਵਿੱਚ ਸਮਾਂ ਗਵਾਂ ਨਾ ਦੇਣ।
ਸ਼ਾਮਿਲ ਕਰੋ:
ਕੈਨੇਰੀ ਲਈ, ਮੈਟ੍ਰਿਕਸ ਨੂੰ ਵਰਜਨ/ਇੰਸਟੈਂਸ ਗਰੁੱਪ ਅਨੁਸਾਰ ਸੈਗਮੈਂਟ ਕਰੋ ਤਾਂ ਤੁਸੀਂ canary vs baseline ਦੀ ਤੁਲਨਾ ਕਰ ਸਕੋ। ਬਲੂ/ਗ੍ਰੀਨ ਲਈ, cutover ਵਿੰਡੋ ਦੌਰਾਨ ਨਵਾਂ ਅਤੇ ਪੁਰਾਣਾ ਵਾਤਾਵਰਨ ਤੁਲਨਾ ਕਰੋ।
ਟਰੈਫਿਕ ਸ਼ਿਫਟਿੰਗ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਨਿਯਮ ਤੈਅ ਕਰੋ। ਉਦਾਹਰਨ:
ਅੰਕ ਸੇਵਾ 'ਤੇ ਨਿਰਭਰ ਕਰਨਗੇ, ਪਰ ਮਹੱਤਵਪੂਰਨ ਗੱਲ ਇਹ ਹੈ ਕਿ ਸਭ ਤਿਆਰ ਹੋਣ। ਜੇ ਸਭ ਨੂੰ ਪਤਾ ਹੈ ਕਿ ਰੋਲਬੈਕ ਕਦੋਂ ਕਰਨਾ ਹੈ, ਤਾਂ ਗਾਹਕ ਪ੍ਰਭਾਵ ਦੌਰਾਨ ਵਿਚਾਰ-ਵਟਾਂਦਰਾ ਨਹੀਂ ਹੋਵੇਗਾ।
ਰੋਲਆਊਟ ਦੌਰਾਨ ਅਲਰਟ ਸ਼ਾਮਿਲ ਕਰੋ ਜਾਂ ਅਸਥਾਈ ਤੌਰ 'ਤੇ ਟਾਈਟ ਕਰੋ:
ਅਲਰਟਾਂ actionable ਰੱਖੋ: "ਕੀ ਬਦਲਿਆ, ਕਿੱਥੇ, ਅਤੇ ਅਗਲਾ ਕਦਮ ਕੀ ਹੈ"। ਜੇ ਅਲਰਟ ਸ਼ੋਰ-ਭਰੇ ਹੋਣਗੇ ਤਾਂ ਲੋਕ ਸੰਕੇਤ ਗੁਆ ਦੇਣਗੇ ਜੋ ਰੋਲਆਊਟ ਦੌਰਾਨ ਮਹੱਤਵਪੂਰਨ ਹੈ।
ਅਕਸਰ ਰੋਲਆਊਟ ਫੇਲਿਅਰ ਵੱਡੇ ਬੱਗਾਂ ਕਰਕੇ ਨਹੀਂ, ਬਲਕਿ ਛੋਟੀ ਗਲਤੀਆਂ (ਗੁੰਮ/config, ਨਵੀਂ DB migration, ਮਿਆਦ-ਪੂਰੇ ਸਟੀਕਰ) ਕਾਰਨ ਹੁੰਦੇ ਹਨ। ਪ੍ਰੀ-ਰਿਲੀਜ਼ ਚੈੱਕ ਉਹ ਮੌਕਾ ਹਨ ਜਿੱਥੇ ਤੁਸੀਂ ਇਹ ਸਮੱਸਿਆਵਾਂ ਛੋਟੇ ਹਿੱਸੇ 'ਤੇ ਫੜ ਸਕਦੇ ਹੋ।
ਕਿਸੇ ਵੀ ਟ੍ਰੈਫਿਕ ਸ਼ਿਫਟ ਤੋਂ ਪਹਿਲਾਂ ਨਵੀਂ ਵਰਜਨ ਦੀ ਬੁਨਿਆਦੀ ਸਿਹਤ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ:
ਯੂਨਿਟ ਟੈਸਟਾਂ ਦੇ ਬਾਵਜੂਦ, ਡਿਪਲੋਇਡ ਸਿਸਟਮ ਕੰਮ ਕਰਦਾ ਹੈ ਇਹ ਸਾਬਤ ਕਰਨ ਲਈ ਇੱਕ ਛੋਟੀ automated end-to-end suite ਚਲਾ ਕਰੋ ਜੋ ਮਿੰਟਾਂ ਵਿੱਚ ਖਤਮ ਹੋ ਜਾਵੇ।
ਆਮ ਤੌਰ 'ਤੇ ਉਹ ਫਲੋਜ਼ ਜੋ ਸਰਵਿਸਾਂ ਨੂੰ ਪਾਰ ਕਰਦੇ ਹਨ (web → API → DB → ਤੀਜੀ ਪਾਰਟੀ) 'ਤੇ ਧਿਆਨ ਦਿਓ ਅਤੇ ਪ੍ਰਤੀਕਤੀਕ ਇੱਕ "ਅਸਲ" ਬੇਨਤੀ ਸ਼ਾਮਿਲ ਕਰੋ।
ਆਟੋਮੇਟੇਡ ਟੈਸਟ ਸਭ ਕੁਝ ਨਹੀਂ ਫੜਦੇ। ਮੁੱਖ ਵਰਤੋਂਕਾਰ ஜਾ਼ਈ-ਜੋੜ-ਚੁੱਕੀ ਵਰਕਫਲੋਜ਼ ਦਾ ਮਨੁੱਖੀ ਜਾਂ ਨਿਸ਼ਚਿਤ ਵੇਰੀਫਿਕੇਸ਼ਨ ਕਰੋ:
ਜੇ ਤੁਸੀਂ ਕਈ ਰੋਲ ਸਹਾਇਤ ਕਰਦੇ ਹੋ, ਤਾਂ ਹਰ ਰੋਲ ਲਈ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਯਾਤਰਾ ਨਮੂਨਾ ਕਰੋ।
ਚੈਕਲਿਸਟ ਤਿਆਰੀਯਾਂ ਨੂੰ ਰੀਪੀਟੇਬਲ ਬਣਾਉਂਦਾ ਹੈ:
ਜਦੋਂ ਇਹ ਚੈਕ ਆਮ ਹੁੰਦੇ ਹਨ, ਟ੍ਰੈਫਿਕ ਸ਼ਿਫਟਿੰਗ ਇਕ ਨਿਯੰਤਰਿਤ ਕਦਮ ਬਣ ਜਾਂਦੀ ਹੈ—ਭਰੋਸੇ ਦੀ ਛਾਲ ਨਹੀਂ।
ਬਲੂ/ਗ੍ਰੀਨ ਰੋਲਆਊਟ ਨੂੰ ਚੈੱਕਲਿਸਟ ਵਾਂਗ ਚਲਾਉਣਾ ਸਭ ਤੋਂ ਆਸਾਨ ਹੈ: ਤਿਆਰੀ, ਡਿਪਲੋਇ, ਵੈਰੀਫਾਈ, ਸਵਿੱਚ, ਨਿਰੀਖਣ, ਫਿਰ ਸਫਾਈ।
ਨਵਾਂ ਵਰਜਨ Green environment 'ਤੇ ਸ਼ਿਪ ਕਰੋ ਜਦਕਿ Blue ਅਸਲ ਟ੍ਰੈਫਿਕ ਸਰਵ ਕਰ ਰਿਹਾ ਹੋਵੇ। configs ਅਤੇ secrets ਮੈਚ ਕਰੋ ਤਾਂ ਕਿ Green ਸੱਚਮੁੱਚ ਨਕਲ ਹੋਵੇ।
਼ਉੱਚ-ਸਿਗਨਲ ਚੈੱਕ ਕਰੋ: ਐਪ ਸਾਫ਼ ਤੌਰ 'ਤੇ ਸਟਾਰਟ ਹੋ ਰਿਹਾ ਹੈ, ਮੁੱਖ ਪੇਜ ਲੋਡ ਹੋ ਰਹੇ ਹਨ, payments/login ਕੰਮ ਕਰ ਰਹੇ ਹਨ, ਅਤੇ ਲੌਗਜ਼ ਨਾਰਮਲ ਲੱਗ ਰਹੇ ਹਨ। automated smoke tests ਚਲਾਓ ਅਤੇ Green ਲਈ ਮਾਨੀਟਰੀੰਗ ਡੈਸ਼ਬੋਰਡ ਅਤੇ ਅਲਰਟ ਸੱਕਰੀਆ ਹਨ ਇਹ ਵੇਰਾਭ ਕਰੋ।
ਬਲੂ/ਗ੍ਰੀਨ 'ਚ DB ਬਦਲਾਅ ਮੁਸ਼ਕਲ ਹੁੰਦੇ ਹਨ। expand/contract ਤਰੀਕੇ ਵਰਤੋ:
ਇਸ ਨਾਲ "Green ਚੰਗਾ ਹੈ ਪਰ Blue ਟੁੱਟ ਗਿਆ" ਵਾਲੀ ਸਥਿਤੀ ਤੋਂ ਬਚਿਆ ਜਾ ਸਕਦਾ ਹੈ।
ਟ੍ਰੈਫਿਕ ਸਵਿੱਚ ਤੋਂ ਪਹਿਲਾਂ ਖਾਸ ਕੈਸ਼ ਵਾਰਮ ਕਰੋ ਤਾਂ ਕਿ ਯੂਜ਼ਰਾਂ ਨੂੰ "cold start" ਦਾ ਖ਼ਰਚ ਨਾ ਭੁਗਤਣਾ ਪਏ।
ਬੈਕਗ੍ਰਾਊਂਡ ਨੌਕਰੀਆਂ/ਕ੍ਰੋਨ ਵਰਕਰਾਂ ਲਈ ਫੈਸਲਾ ਕਰੋ:
Blue ਤੋਂ Green ਨੂੰ ਫਲਿਪ ਕਰੋ (load balancer/DNS/ingress)। error rate, latency ਅਤੇ ਬਿਜ਼ਨਸ ਮੈਟਰਿਕਸ ਇੱਕ ਛੋਟੇ ਵਿੰਡੋ ਦੌਰਾਨ ਦੇਖੋ।
ਰੀਅਲ ਯੂਜ਼ਰ-ਸਟਾਇਲ spot check ਕਰੋ, ਫਿਰ Blue ਨੂੰ ਬੈਕਅੱਪ ਵਜੋਂ ਕੁਝ ਸਮਾਂ ਲਈ ਰੱਖੋ। ਜੇ ਸਥਿਰ ਹੋਵੇ, Blue ਕੰਮ ਬੰਦ ਕਰੋ, ਲੌਗਸ ਆਰਕਾਈਵ ਕਰੋ ਅਤੇ Blue ਦੇ ਪ੍ਰੋਵੀਜਨ ਨੂੰ ਰੀਮੂਵ ਕਰਕੇ ਲਾਗਤ ਘਟਾਓ।
ਕੈਨੇਰੀ ਰੋਲਆਊਟ ਸੁਰੱਖਿਅਤ ਤਰੀਕੇ ਨਾਲ ਸਿੱਖਣ ਬਾਰੇ ਹੈ। ਨਵੇਂ ਵਰਜਨ ਨੂੰ ਪਹਿਲਾਂ ਇੱਕ ਛੋਟੇ ਹਿੱਸੇ ਦੇਖੋ, ਨਜ਼ਦੀਕੀ ਤੌਰ 'ਤੇ ਨਿਰੀਖਣ ਕਰੋ, ਫਿਰ ਹੀ ਵਧਾਓ। ਲਕਸ਼ ਇਹ ਨਹੀਂ "ਧੀਮੇ ਜਾਓ"—ਬਲਕਿ ਹਰ ਕਦਮ 'ਤੇ ਸਬੂਤ ਨਾਲ ਸੁਰੱਖਿਆ ਸਾਬਤ ਕਰੋ।
ਨਵਾਂ ਵਰਜਨ ਮੌਜੂਦਾ ਸਥਿਰ ਵਰਜਨ ਨਾਲ ਨਾਲ deploy ਕਰੋ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ ਹਰ ਵਰਜਨ ਲਈ ਨਿਰਧਾਰਿਤ ਪ੍ਰਤੀਸ਼ਤ ਟ੍ਰੈਫਿਕ ਰੂਟ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਦੋਹਾਂ ਵਰਜਨਾਂ ਨੂੰ ਮਾਨੀਟਰੀੰਗ ਵਿੱਚ ਵੱਖਰਾ ਵੇਖ ਸਕਦੇ ਹੋ।
ਛੋਟੇ ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ। ਐਥੇ ਸਪਾਟ ਸਮੱਸਿਆਵਾਂ ਜਲਦੀ ਸਾਹਮਣੇ ਆਉਂਦੀਆਂ ਹਨ: ਟੁੱਟੇ ਏਂਡਪੌਇੰਟ, ਗੁੰਮ config, DB ਮਾਈਗ੍ਰੇਸ਼ਨ ਦੀਆਂ ਅਚਾਨਕ ਗੜਬੜਾਂ, ਜਾਂ ਲੈਟੈਂਸੀ।
ਇਸ ਸਟੇਜ ਲਈ ਨੋਟ ਰੱਖੋ:
ਜੇ ਪਹਿਲਾ ਸਟੇਜ ਠੀਕ ਰਹੇ, ਤਾਂ ਲਗਭਗ ਇੱਕ ਚੌਥਾਈ ਟ੍ਰੈਫਿਕ ਤੱਕ ਵਧਾਓ। ਹੁਣ ਤੁਸੀਂ ਵੱਖ-ਵੱਖ ਯੂਜ਼ਰ ਬਿਹੇਵਿਅਰ, ਲੰਬੇ-ਟੇਲ ਡਿਵਾਈਸ, ਐਡਜ ਕੇਸ ਅਤੇ ਵੱਧ concurrency ਦੇਖੋਗੇ।
ਅੱਧੀ ਟ੍ਰੈਫਿਕ ਉੱਥੇ ਬਣਨ 'ਤੇ capacity ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ ਸਮੱਸਿਆਵਾਂ ਵਧਕੇ ਸਾਫ਼ ਹੁੰਦੀਆਂ ਹਨ।
ਜਦੋਂ ਮੈਟ੍ਰਿਕਸ ਸਥਿਰ ਹੋਣ ਤੇ user-impact ਮਨੋਯੋਗ ਹੋਵੇ, ਸਾਰੀ ਟ੍ਰੈਫਿਕ ਨਵੀਂ ਵਰਜਨ ਤੇ ਸ਼ਿਫਟ ਕਰੋ ਅਤੇ ਇਸਨੂੰ promote ਘੋਸ਼ਿਤ ਕਰੋ।
ਟਾਈਮ ਦੀ ਲੰਬਾਈ ਰਿਸਕ ਅਤੇ ਟਰੈਫਿਕ ਵਾਲੀਅਮ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ:
ਕਾਰੋਬਾਰੀ ਚੱਕਰ ਵੀ ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ—ਜੇ ਤੁਹਾਡਾ ਉਤਪਾਦ ਟ੍ਰੈਫਿਕ ਸਪੀਕਸ ਰੱਖਦਾ ਹੈ, ਤਾਂ ਕੈਨੇਰੀ ਕੁਝ ਐਸੇ ਢੰਗਾਂ 'ਤੇ ਚਲਾਓ ਜੋ ਅਮੂਮਨ ਮੁਸ਼ਕਲੀਆਂ ਪੈਦਾ ਕਰਦੀਆਂ ਹਨ।
ਮੈਨੂਅਲ ਰੋਲਆਊਟ ਹੇਚਕਿਚਾਹਟ ਅਤੇ ਅਸੰਗਤਤਾ ਲਿਆਉਂਦੇ ਹਨ। ਜਿੱਥੇ ਸੰਭਵ ਹੋਵੇ, ਆਟੋਮੇਟ:
ਆਟੋਮੇਸ਼ਨ ਮਨੁੱਖੀ ਫੈਸਲੇ ਨਹੀਂ ਹਟਾਉਂਦੀ—ਇਹ ਦੇਰੀ ਹਟਾਂਦੀ ਹੈ।
ਹਰ ramp ਕਦਮ ਲਈ ਲਿਖੋ:
ਇਹ ਨੋਟਸ ਤੁਹਾਡੇ ਰੋਲਆਊਟ ਇਤਿਹਾਸ ਨੂੰ ਅਗਲੇ ਰਿਲੀਜ਼ ਲਈ ਪਲੇਬੁਕ ਬਣਾਉਂਦੀਆਂ ਹਨ ਅਤੇ ਭਵਿੱਖੀ ਘਟਨਾਵਾਂ ਦਾ ਨਿਰਾਕਰਨ ਆਸਾਨ ਕਰਦੀਆਂ ਹਨ।
ਰੋਲਬੈਕ ਤਦੋਂ ਆਸਾਨ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਤੈਅ ਕਰ ਲੈਂਦੇ ਹੋ ਕਿ "ਬੁਰਾ" ਕਿਵੇਂ ਲੱਗਦਾ ਹੈ ਅਤੇ ਕੌਣ ਬਟਨ ਦਬਾ ਸਕਦਾ ਹੈ। ਰੋਲਬੈਕ ਪਲਾਨ ਨਿਰਾਸ਼ਾਵਾਦ ਨਹੀਂ—ਇਹ ਤਰੀਕਾ ਹੈ ਛੋਟੇ ਮੁੱਿਆਂ ਨੂੰ ਲੰਬੇ ਆਉਟੇਜ ਨਾਲੋਂ ਪਹਿਲਾਂ ਰੋਕਣ ਦਾ।
ਛੋਟੀ ਸੂਚੀ ਚੁਣੋ ਅਤੇ ਨਿਰਧਾਰਤ ਥ੍ਰੇਸ਼ਹੋਲਡ ਰਖੋ ਤਾਂ ਕਿ ਘਟਨਾ ਦੌਰਾਨ ਵਿਚਾਰ-ਵਟਾਂਦਰਾ ਨਾ ਹੋਵੇ। ਆਮ ਟ੍ਰिगਰ:
ਟ੍ਰਿਗਰ ਮਾਪਯੋਗ ਹੋਣ ("p95 > 800ms for 10 minutes") ਅਤੇ ਇੱਕ ਮਾਲਕ ਨਾਲ ਜੁੜੇ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ (on-call, release manager) ਜਿਸਨੂੰ ਤੁਰੰਤ ਕਾਰਵਾਈ ਦੀ ਇਜਾਜ਼ਤ ਹੋਵੇ।
ਸਪੀਡ ਸੋਭਾਵਾਨੀ ਤੋਂ ਜ਼ਿਆਦਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਤੁਹਾਡਾ ਰੋਲਬੈਕ ਇਹਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ:
"ਮੈਨੂਅਲ ਫਿਕਸ ਫਿਰ ਜਾਰੀ ਰੋਲਆਊਟ" ਨੂੰ ਪਹਿਲੀ ਚੋਣ ਨਾ ਬਣਾਓ। ਪਹਿਲਾਂ ਸਥਿਰ ਕਰੋ, ਫਿਰ ਜਾਂਚ ਕਰੋ।
ਕੈਨੇਰੀ ਨਾਲ, ਕੁਝ ਯੂਜ਼ਰਾਂ ਨੇ ਨਵੀਂ ਵਰਜਨ 'ਤੇ ਡੇਟਾ ਬਣਾਇਆ ਹੋ ਸਕਦਾ ਹੈ। ਪਹਿਲਾਂ ਤੈਅ ਕਰੋ:
ਜਦੋਂ ਸਥਿਰ ਹੋ ਜਾਓ, ਇੱਕ ਛੋਟੀ after-action ਨੋਟ ਲਿਖੋ: ਕੀ ਰੋਲਬੈਕ ਦਾ ਕਾਰਨ ਬਣਿਆ, ਕਿਹੜੇ ਸਿਗਨਲ ਲਾਪਤਾ ਰਹੇ, ਅਤੇ ਚੈਕਲਿਸਟ ਵਿੱਚ ਕੀ ਤਬਦੀਲੀਆਂ ਲਿਆਉਗੇ। ਇਸਨੂੰ ਦੋਸ਼ ਦਾ ਮਾਮਲਾ ਨਾ ਬਣਾਓ—ਇਹ ਤੁਹਾਡੇ ਰਿਲੀਜ਼ ਪ੍ਰਕਿਰਿਆ ਲਈ ਨਿਰੰਤਰ ਸੁਧਾਰ ਹੈ।
ਫੀਚਰ ਫਲੈਗਸ ਤੁਹਾਨੂੰ deploy (ਕੋਡ production 'ਤੇ ਲਾਉਣ) ਅਤੇ release (ਉਹ ਲੋਕਾਂ ਲਈ ਚਲੂ ਕਰਨਾ) ਨੂੰ ਵੱਖਰਾ ਕਰਨ ਦਿੰਦੀਆਂ ਹਨ। ਇਹ ਮੁੱਖ ਹੈ ਕਿਉਂਕਿ ਤੁਸੀਂ ਉਹੀ ਡਿਪਲੋਇਮੈਂਟ ਪਾਈਪਲਾਈਨ—ਬਲੂ/ਗ੍ਰੀਨ ਜਾਂ ਕੈਨੇਰੀ—ਵਰਤ ਕੇ ਐਕਸਪੋਜ਼ਰ ਨੂੰ ਇੱਕ ਸਧਾਰਣ ਸੁਇਚ ਨਾਲ ਨਿਯੰਤਰਿਤ ਕਰ ਸਕਦੇ ਹੋ।
ਫਲੈਗਸ ਨਾਲ ਤੁਸੀਂ ਮਰਜ ਅਤੇ ਡਿਪਲੋਇ ਸੁਰੱਖਿਅਤ ਤਰੀਕੇ ਨਾਲ ਕਰ ਸਕਦੇ ਹੋ ਭਾਵੇਂ ਫੀਚਰ ਹਰੇਕ ਲਈ ਤਿਆਰ ਨਾ ਹੋਵੇ। ਕੋਡ ਮੌਜੂਦ ਹੈ ਪਰ ਅਰਾਮਕ ਹੈ। ਜਦੋਂ ਭਰੋਸਾ ਹੋਵੇ, ਫਲੈਗ ਨੂੰ ਧੀਰੇ-ਧੀਰੇ enable ਕਰੋ—ਅਕਸਰ ਨਵੀਂ build ਪੁਸ਼ ਕਰਨ ਨਾਲੋਂ ਤੇਜ਼—ਅਤੇ ਜੇ ਕੁਝ ਗਲਤ ਹੋਵੇ, ਫਲੈਗ ਨੂੰ ਬੰਦ ਕਰ ਕੇ ਤੁਰੰਤ ਰوکਿਆ ਜਾ ਸਕਦਾ ਹੈ।
ਪਰੋਗਰੇਸਿਵ ਡਿਲਿਵਰੀ ਅਰਥ ਹੈ ਜੁੜਾਈ ਨੂੰ ਨਿਯਤ ਕਦਮਾਂ ਵਿੱਚ ਵਧਾਉਣਾ। ਫਲੈਗ enable ਹੋ ਸਕਦਾ ਹੈ:
ਜੇਕਰ ਕੈਨੇਰੀ ਦੱਸਦਾ ਹੈ ਕਿ ਨਵੀਂ ਵਰਜਨ ਸਿਹਤਮੰਦ ਹੈ, ਪਰ ਤੁਸੀਂ ਫੀਚਰ-ਖਤਰੇ ਨੂੰ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਸੰਭਾਲਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਇਹ ਖਾਸ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ ਹੈ।
ਫੀਚਰ ਫਲੈਗਪਾਵਰਫੁਲ ਹਨ ਪਰ ਸਹੀ ਗਵਰਨੈਂਸ ਲੋੜੀਂਦੀ ਹੈ:
ਪ੍ਰਯੋਗੀ ਨਿਯਮ: ਜੇ ਕੋਈ ਇਸਦਾ ਜਵਾਬ ਨਹੀਂ ਦੇ ਸਕਦਾ "ਇਹ ਬੰਦ ਕਰਨ 'ਤੇ ਕੀ ਹੁੰਦਾ?" ਤਾਂ ਫਲੈਗ ਤਿਆਰ ਨਹੀਂ ਹੈ।
For deeper guidance on using flags as part of a release strategy, see /blog/feature-flags-release-strategy.
ਬਲੂ/ਗ੍ਰੀਨ ਤੇ ਕੈਨੇਰੀ ਵਿੱਚ ਚੋਣ "ਕਿਹੋ ਜਿਹਾ ਵਧੀਆ" ਨਹੀਂ—ਇਹ ਇਸ ਬਾਰੇ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿਸ ਕਿਸਮ ਦੇ ਜੋਖਮ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਅਤੇ ਆਪਣੀ ਟੀਮ ਅਤੇ ਟੂਲਿੰਗ ਨਾਲ ਹਕੀਕਤ 'ਚ ਕੀ ਚਲਾ ਸਕਦੇ ਹੋ।
ਪ੍ਰਯੋਗੀ ਨਿਯਮ: ਉਸ ਤਰੀਕੇ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ ਜੋ ਤੁਸੀਂ ਰਾਤ 2 ਵਜੇ ਸਥਿਰਤਾ ਨਾਲ ਚਲਾ ਸਕੋ।
ਇੱਕ ਸਰਵਿਸ (ਜਾਂ ਇਕ ਯੂਜ਼ਰ-ਫੇਸਿੰਗ ਵਰਕਫਲੋ) ਪਿਕ ਕਰੋ ਅਤੇ ਕੁਝ ਰਿਲੀਜ਼ਾਂ ਲਈ ਪਾਇਲਟ ਕਰੋ। ਉਹ ਕੁਝ ਮਹੱਤਵਪੂਰਨ ਹੋਵੇ ਪਰ ਬਹੁਤ ਜਰੂਰੀ ਨਾ ਕਿ ਹਰ ਕੋਈ ਹਿੱਲ ਜਾਏ। ਟੀਚਾ ਹੈ ਟ੍ਰੈਫਿਕ ਸ਼ਿਫਟਿੰਗ, ਮਾਨੀਟਰੀੰਗ, ਅਤੇ ਰੋਲਬੈਕ 'ਤੇ ਮਾਸਪੇਸ਼ੀ ਬਣਾਉਣਾ।
ਇੱਕ ਪੰਨਾ ਕਾਫੀ ਹੈ:
ਮਾਲਕ ਰੱਖੋ—ਇੱਕ ਰਣਨੀਤੀ ਬਿਨਾਂ ਮਾਲਕ ਇੱਕ ਸੁਝਾਵ ਹੀ ਰਹਿ ਜਾਂਦੀ ਹੈ।
ਨਵੀਂ ਪਲੇਟਫਾਰਮਾਂ ਜੋੜਨ ਤੋਂ ਪਹਿਲਾਂ, ਉਹ ਟੂਲ ਜੋ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਵਰਤਦੇ ਹੋ ਵੇਖੋ: ਲੋਡ ਬੈਲਾਂਸਰ ਸੈੱਟਿੰਗ, ਡਿਪਲੋਇ ਸਕ੍ਰਿਪਟ, ਮੌਜੂਦਾ ਮਾਨੀਟਰੀੰਗ, ਅਤੇ ਆਪਣਾ INCIDENT PROCESS। ਨਵਾਂ ਟੂਲ ਓਸ ਸਮੇਂ ਹੀ ਜੋੜੋ ਜਦੋਂ ਉਹ ਪਾਇਲਟ ਵਿੱਚ ਅਸਲ ਰਕਾਵਟ ਦੂਰ ਕਰੇ।
ਜੇ ਤੁਸੀਂ ਤੇਜ਼ੀ ਨਾਲ ਨਵੀਂ ਸਰਵਿਸ ਬਣਾਉਂਦੇ ਅਤੇ ਸ਼ਿਪ ਕਰਦੇ ਹੋ, ਤਾਂ ਕੁਝ ਪਲੇਟਫਾਰਮز ਜੋ ਐਪ ਜਨਰੇਸ਼ਨ ਅਤੇ ਡਿਪਲੋਇ ਕੰਟਰੋਲ ਇਕੱਠੇ ਦਿੰਦੇ ਹਨ, ਆਪਰੇਸ਼ਨਲ ਮਿਹਨਤ ਘਟਾ ਸਕਦੇ ਹਨ। ਉਦਾਹਰਨ ਵਜੋਂ, Koder.ai ਇੱਕ vibe-coding ਪਲੇਟਫਾਰਮ ਹੈ ਜੋ ਟੀਮਾਂ ਨੂੰ ਚੈਟ ਇੰਟਰਨਫ਼ੇਸ ਤੋਂ ਵੈਬ, ਬੈਕਐਂਡ ਅਤੇ ਮੋਬਾਈਲ ਐਪ ਬਣਾਉਣ ਦਿੰਦਾ—ਅਤੇ ਫਿਰ ਉਨ੍ਹਾਂ ਨੂੰ ਡਿਪਲੋਇ ਅਤੇ ਹੋਸਟ ਕਰਨ ਦੀ ਸਹੂਲਤ ਦਿੰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ practical safety features ਜਿਵੇਂ snapshots and rollback, custom domains, ਅਤੇ source code export ਦੀ ਸਮਰਥਾ ਹੈ। ਇਹ ਸੁਵਿਧਾਵਾਂ ਇਸ ਲੇਖ ਦੇ ਮੁੱਖ ਲਕਸ਼ ਨੂੰ ਮੇਲ ਖਾਂਦੀਆਂ ਹਨ: ਰਿਲੀਜ਼ ਨੂੰ ਰੀਪੀਟੇਬਲ, ਨਿਰੀਖਣਯੋਗ ਅਤੇ ਵਾਪਸ ਕਰਨ ਯੋਗ ਬਣਾਉਣਾ।
ਜੇ ਤੁਸੀਂ ਨਿਰਦੇਸ਼ਕ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿਕਲਪ ਅਤੇ ਸਮਰਥਿਤ ਵਰਕਫਲੋਜ਼ ਦੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ, review /pricing and /docs/deployments। ਫਿਰ ਆਪਣਾ ਪਹਿਲਾ ਪਾਇਲਟ ਰਿਲੀਜ਼ ਸ਼ਡਿਊਲ ਕਰੋ, ਜੋ ਚੰਗਾ ਚੱਲਿਆ ਉਸਨੂੰ ਕੈਪਚਰ ਕਰੋ, ਅਤੇ ਹਰ ਰੋਲਆਊਟ ਤੋਂ ਬਾਅਦ ਆਪਣੇ ਰਨਬੁੱਕ ਨੂੰ ਦੁਹਰਾਓ।