ਪਲੱਗ ਖਿੱਚ ਲਓ। ਕਿੱਲਸਵਿੱਚ (killswitch) ਦਬਾ ਦਿਓ। ਇਹ ਅੰਤਮੁਖੀ (instincts) ਉਦੋਂ ਕੰਮ ਕਰਦੇ ਹਨ ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਸਿੰਗਲ ਮਸ਼ੀਨ ਦੇ ਕੋਲ ਖੜ੍ਹੇ ਹੁੰਦੇ ਹੋ। ਜਦੋਂ ਤੁਹਾਡਾ AI ਸਿਸਟਮ ਤਿੰਨ ਅਵੇਲੇਬਿਲਟੀ ਜ਼ੋਨਾਂ (availability zones) ਵਿੱਚ ਪੰਜਾਹ ਨੋਡਾਂ (nodes) ਤੱਕ ਫੈਲਿਆ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਇਹ ਫੇਲ ਹੋ ਜਾਂਦੇ ਹਨ। ਜ਼ਿਆਦਾਤਰ ਇੰਜੀਨੀਅਰਿੰਗ ਟੀਮਾਂ ਇਹ ਸਬਕ ਬਹੁਤ ਮਹਿੰਗੀ ਕੀਮਤ ਚੁਕਾ ਕੇ ਸਿੱਖਦੀਆਂ ਹਨ। ਉਹ ਇੱਕ ਕੇਂਦਰੀ ਡਾਟਾਬੇਸ ਨੂੰ ਅਪਡੇਟ ਕਰਦੇ ਹਨ, ਇੱਕ ਬੂਲੀਅਨ (boolean) ਨੂੰ true ਤੋਂ false ਵਿੱਚ ਬਦਲਦੇ ਹਨ, ਅਤੇ ਮੰਨ ਲੈਂਦੇ ਹਨ ਕਿ ਸਿਸਟਮ ਰੁਕ ਗਿਆ ਹੈ। ਅਜਿਹਾ ਨਹੀਂ ਹੁੰਦਾ। ਡਾਟਾਬੇਸ ਸਾਫ਼ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ। ਸਰਵਿਸ ਅਜੇ ਵੀ ਚੱਲ ਰਹੀ ਹੁੰਦੀ ਹੈ।

ਇੱਕ ਸਿੰਗਲ ਸਵਿੱਚ ਦਾ ਭਰਮ

ਇੱਕ ਕੰਟਰੋਲਰ ਦੀ ਕਲਪਨਾ ਕਰੋ ਜੋ ਏਪੋਕ (epoch) 12 'ਤੇ ਇੱਕ ਰਵੋਕੇਸ਼ਨ (revocation) ਨੂੰ ਰਿਕਾਰਡ ਕਰਦਾ ਹੈ। ਇਹ ਬਦਲਾਅ ਨੂੰ ਇੱਕ ਪਰਸਿਸਟੈਂਟ ਸਟੋਰ (persistent store) ਵਿੱਚ ਲਿਖਦਾ ਹੈ ਅਤੇ ਰਾਹਤ ਦੀ ਸਾਹ ਲੈਂਦਾ ਹੈ। ਇਸ ਦੌਰਾਨ, ਵਰਕਰ B ਏਪੋਕ 11 ਤੋਂ ਮਿਲੀ ਇੱਕ ਕੈਸ਼ਡ ਗ੍ਰਾਂਟ (cached grant) 'ਤੇ ਚੱਲ ਰਿਹਾ ਹੁੰਦਾ ਹੈ। ਵਰਕਰ ਨੂੰ ਕਦੇ ਵੀ ਇਹ ਸੂਚਨਾ ਨਹੀਂ ਮਿਲੀ। ਤੀਹ ਸਕਿੰਟਾਂ ਬਾਅਦ, ਇਹ ਇੱਕ ਮਾਡਲ ਇਨਫਰੈਂਸ ਜੌਬ (model inference job) ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ, ਇੱਕ GPU ਕਲੱਸਟਰ ਚਲਾਉਂਦਾ ਹੈ, ਜਾਂ ਕਿਸੇ ਐਕਸਟਰਨਲ API ਨੂੰ ਕਾਲ ਕਰਦਾ ਹੈ। ਆਡਿਟ ਲੌਗ ਕਹਿੰਦਾ ਹੈ ਕਿ ਪਹੁੰਚ (access) ਰੱਦ ਕਰ ਦਿੱਤੀ ਗਈ ਸੀ। ਫਿਰ ਵੀ ਕਾਰਵਾਈ ਹੋ ਗਈ।

ਇਹ ਪਰਸਿਸਟੈਂਸ (persistence) ਅਤੇ ਪ੍ਰੋਪਗੇਸ਼ਨ (propagation) ਵਿਚਕਾਰ ਦਾ ਪਾੜਾ ਹੈ। ਡਾਟਾਬੇਸ ਰਾਈਟ (write) ਸਿਸਟਮ ਸਟੇਟ ਨਹੀਂ ਹੁੰਦੀ। ਇਹ ਇੱਕ ਟੇਬਲ ਵਿੱਚ ਇੱਕ ਰੋਅ (row) ਹੈ, ਅਤੇ ਤੁਹਾਡੇ ਸਿਸਟਮ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ ਐਕਟਰ (actors) ਉਸ ਸਮੇਂ ਉਸ ਟੇਬਲ ਨੂੰ ਪੋਲ (poll) ਨਹੀਂ ਕਰਦੇ ਜਦੋਂ ਉਹਨਾਂ ਨੂੰ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਐਮਰਜੈਂਸੀ ਸਟੌਪ ਨੂੰ ਲਾਈਟ ਸਵਿੱਚ ਵਾਂਗ ਮੰਨਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਦੇਖੋਗੇ ਕਿ ਕਮਰੇ ਦੇ ਕੁਝ ਕੋਨਿਆਂ ਵਿੱਚ ਕਦੇ ਹਨੇਰਾ ਨਹੀਂ ਆਉਂਦਾ।

ਡਿਸਟ੍ਰੀਬਿਊਟਡ ਸਿਸਟਮਜ਼ ਦੀ ਕਠੋਰ ਸੱਚਾਈ

ਤੁਹਾਨੂੰ ਅਸਫਲਤਾ (failure) ਲਈ ਡਿਜ਼ਾਈਨ ਕਰਨਾ ਪਵੇਗਾ। ਸਿਰਫ਼ ਕਦੇ-ਕਦੇ ਹੋਣ ਵਾਲੀ ਅਸਫਲਤਾ ਲਈ ਨਹੀਂ। ਲਗਾਤਾਰ, ਉਲਝਣ ਭਰੀ ਅਤੇ ਸੁਤੰਤਰ ਅਸਫਲਤਾ ਲਈ। ਵਰਕਰ ਕੰਮ ਦੇ ਵਿਚਕਾਰ ਹੀ ਰੀਬੂਟ ਹੋ ਜਾਂਦੇ ਹਨ। ਕਿਊ ਕੰਜ਼ਿਊਮਰਜ਼ (queue consumers) ਮਿੰਟਾਂ ਪਿੱਛੇ ਰਹਿ ਜਾਂਦੇ ਹਨ। ਅਥੋਰਾਈਜ਼ੇਸ਼ਨ ਸਰਵਿਸਿਜ਼ (authorization services) ਪੁਰਾਣਾ ਡਾਟਾ ਵਾਪਸ ਕਰਦੀਆਂ ਹਨ ਕਿਉਂਕਿ ਇੱਕ ਰੈਪਲੀਕਾ (replica) ਅਟਕ ਗਿਆ ਹੈ। ਮੈਸੇਜ ਡੁਪਲੀਕੇਟ ਹੋ ਜਾਂਦੇ ਹਨ। ਮੈਸੇਜ ਗਾਇਬ ਹੋ ਜਾਂਦੇ ਹਨ। ਮੈਸੇਜ ਗਲਤ ਕ੍ਰਮ ਵਿੱਚ ਆਉਂਦੇ ਹਨ। ਤੁਹਾਡਾ NTP ਡੇਮਨ (daemon) ਡਰਿਫਟ ਕਰਦਾ ਹੈ, ਅਤੇ ਅਚਾਨਕ ਇੱਕ ਨੋਡ ਨੂੰ ਲੱਗਦਾ ਹੈ ਕਿ ਉਹ ਦੂਜਿਆਂ ਤੋਂ ਦਸ ਸਕਿੰਟ ਪਿੱਛੇ ਹੈ। ਕਲਾਕਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਹੁੰਦੀਆਂ ਹਨ, ਅਤੇ ਤੁਸੀਂ ਘਟਨਾਵਾਂ ਦੇ ਕ੍ਰਮ ਨੂੰ ਤੈਅ ਕਰਨ ਲਈ ਵਾਲ ਟਾਈਮ (wall time) 'ਤੇ ਭਰੋਸਾ ਨਹੀਂ ਕਰ ਸਕਦੇ।

ਜੇਕਰ ਤੁਹਾਡਾ ਐਮਰਜੈਂਸੀ ਪ੍ਰੋਟੋਕੋਲ ਭਰੋਸੇਯੋਗ ਨੈੱਟਵਰਕਾਂ, ਆਰਡਰਡ ਮੈਸੇਜ ਡਿਲੀਵਰੀ, ਜਾਂ ਸਿੰਕ੍ਰੋਨਾਈਜ਼ਡ ਕਲਾਕਸ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ, ਤਾਂ ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਪ੍ਰੋਟੋਕੋਲ ਨਹੀਂ ਹੈ। ਤੁਹਾਡੇ ਕੋਲ ਸਿਰਫ਼ ਇੱਕ ਇੱਛਾ ਹੈ। ਵਰਕਰ, ਕਿਊ ਕੰਜ਼ਿਊਮਰਜ਼, ਅਤੇ ਅਥੋਰਾਈਜ਼ੇਸ਼ਨ ਸਰਵਿਸਿਜ਼ ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ ਫੇਲ ਹੁੰਦੇ ਹਨ। ਤੁਹਾਡੇ ਸੁਰੱਖਿਆ ਨਿਯਮ ਉਦੋਂ ਵੀ ਬਣੇ ਰਹਿਣੇ ਚਾਹੀਦੇ ਹਨ ਜਦੋਂ ਇਨਫਰਾਸਟ੍ਰਕਚਰ ਬਹੁਤ ਹੀ ਵਿਰੋਧੀ ਮਹਿਸੂਸ ਹੋਵੇ।

ਪੰਜ ਨਿਯਮ ਜੋ ਅਸਲ ਵਿੱਚ ਕੰਮ ਕਰਦੇ ਹਨ

ਸੁਰੱਖਿਆ ਉਹਨ ਇਨਵੈਰੀਐਂਟਸ (invariants) ਤੋਂ ਆਉਂਦੀ ਹੈ ਜੋ ਹਫੜਾ-ਦਫੜੀ ਵਿੱਚ ਵੀ ਬਣੇ ਰਹਿੰਦੇ ਹਨ। ਇੱਥੇ ਉਹ ਨਿਯਮ ਹਨ ਜੋ ਰਵੋਕੇਸ਼ਨ ਨੂੰ ਇੱਕ ਕਲਪਨਾ ਬਣਨ ਤੋਂ ਰੋਕਦੇ ਹਨ।

ਕੋਈ ਵੀ ਕਾਰਵਾਈ ਰਵੋਕੇਸ਼ਨ ਏਪੋਕ (revocation epoch) ਤੋਂ ਘੱਟ ਗ੍ਰਾਂਟ ਏਪੋਕ (grant epoch) ਨਾਲ ਸ਼ੁਰੂ ਨਹੀਂ ਹੁੰਦੀ।
ਇਹ ਤੁਹਾਡੀ ਮੁੱਖ ਗਾਰਡਰੇਲ (guardrail) ਹੈ। ਹਰ ਪਰਮਿਸ਼ਨ ਗ੍ਰਾਂਟ ਇੱਕ ਏਪੋਕ ਨੰਬਰ ਲੈ ਕੇ ਆਉਂਦੀ ਹੈ। ਹਰ ਰਵੋਕੇਸ਼ਨ ਇੱਕ ਨਵਾਂ ਨੰਬਰ ਲੈ ਕੇ ਆਉਂਦੀ ਹੈ। ਕਿਸੇ ਵੀ ਵਰਕਰ ਦੇ ਕੰਮ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਉਹ ਨੰਬਰਾਂ ਦੀ ਤੁਲਨਾ ਕਰਦਾ ਹੈ। ਜੇਕਰ ਵਰਕਰ ਦੀ ਗ੍ਰਾਂਟ ਉਸਦੇ ਦੁਆਰਾ ਦੇਖੇ ਗਏ ਸਭ ਤੋਂ ਨਵੇਂ ਰਵੋਕੇਸ਼ਨ ਨਾਲੋਂ ਪੁਰਾਣੀ ਹੈ, ਤਾਂ ਵਰਕਰ ਰੁਕ ਜਾਂਦਾ ਹੈ। ਏਪੋਕਸ ਤੁਹਾਨੂੰ ਇੱਕ ਲੌਜੀਕਲ ਕਲਾਕ (logical clock) ਦਿੰਦੇ ਹਨ ਜੋ ਸਿਸਟਮ ਕਲਾਕ 'ਤੇ ਨਿਰਭਰ ਨਹੀਂ ਕਰਦੀ। ਇੱਕ ਵਰਕਰ ਜਿਸ ਕੋਲ ਏਪੋਕ 11 ਹੈ, ਉਸਨੂੰ ਕੰਮ ਕਰਨ ਤੋਂ ਇਨਕਾਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਜਦੋਂ ਉਸਨੂੰ ਪਤਾ ਲੱਗਦਾ ਹੈ ਕਿ ਏਪੋਕ 12 ਨੇ ਅਧਾਰ ਅਧਿਕਾਰ ਨੂੰ ਰੱਦ ਕਰ ਦਿੱਤਾ ਹੈ।

ਕੈਸ਼ਡ ਗ੍ਰਾਂਟਸ (Cached grants) ਇੱਕ ਨਿਰਧਾਰਤ ਸਮੇਂ ਦੀ ਸੀਮਾ ਦੇ ਅੰਦਰ ਖਤਮ ਹੋ ਜਾਂਦੇ ਹਨ।
ਇੱਕ ਪਰਮਿਸ਼ਨ ਕਦੇ ਵੀ ਮੈਮੋਰੀ