ਹਫ਼ਤਿਆਂ ਤੱਕ, Elevare Digital ਵਿਖੇ ਇੱਕ cron job ਨਿਰਧਾਰਤ ਸਮੇਂ 'ਤੇ ਜਾਗਦੀ ਸੀ, ਆਪਣੀ ਕਿਊ (queue) ਦੀ ਜਾਂਚ ਕਰਦੀ ਸੀ, ਅਤੇ ਸਫਲਤਾ ਦਾ ਰਿਕਾਰਡ ਲਗਾਉਂਦੀ ਸੀ। ਇਸਨੇ ਬਿਲਕੁਲ ਵੀ ਕੋਈ ਡਰਾਫਟ (draft) ਮਨਜ਼ੂਰ ਨਹੀਂ ਕੀਤੇ। ਉਲਟ (content) ਦੀਆਂ ਉਨ੍ਹੀਸ ਵਸਤੂਆਂ ਉਡੀਕ ਰਹੀਆਂ ਸਨ। ਟੀਮ ਨੂੰ ਇਸਦਾ ਪਤਾ ਬਾਅਦ ਵਿੱਚ ਲੱਗਿਆ, ਜਦੋਂ ਇਹ ਚੁੱਪਚਾਪ ਖਾਲੀਪਨ ਇੱਕ ਅਜੀਬ ਗੱਲ ਤੋਂ ਵੱਧ ਕੇ ਇੱਕ ਛੋਟੇ ਬੈਕਲੌਗ (backlog) ਵਿੱਚ ਬਦਲ ਗਿਆ। ਕੁਝ ਵੀ ਕਰੈਸ਼ ਨਹੀਂ ਹੋਇਆ ਸੀ। ਕੋਈ ਪੇਜਿੰਗ ਅਲਰਟ (paging alert) ਨਹੀਂ ਆਇਆ। ਸਿਸਟਮ ਤਕਨੀਕੀ ਤੌਰ 'ਤੇ ਸਿਹਤਮੰਦ ਸੀ ਪਰ ਕੰਮ ਦੇ ਮਾਮਲੇ ਵਿੱਚ ਮਰ ਚੁੱਕਾ ਸੀ।
ਇਹ ਖੁਦਮੁਖਤਿਆਰ (autonomous) ਪਾਈਪਲਾਈਨਾਂ ਦਾ ਚੁੱਪਚਾਪ ਡਰ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚੋਂ ਇਨਸਾਨ ਨੂੰ ਬਾਹਰ ਕੱਢ ਦਿੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਉਸ ਵਿਅਕਤੀ ਨੂੰ ਵੀ ਹਟਾ ਦਿੰਦੇ ਹੋ ਜੋ ਇਹ ਨੋਟ ਕਰਦਾ ਹੈ ਕਿ ਕੁਝ ਵੀ ਨਹੀਂ ਹੋ ਰਿਹਾ।
ਉਹ ਪਾਈਪਲਾਈਨ ਜੋ ਆਪਣੇ ਆਪ ਚੱਲਦੀ ਰਹੀ
Elevare Digital ਇੱਕ ਪੂਰੀ ਤਰ੍ਹਾਂ ਆਟੋਮੇਟਿਡ ਕੰਟੈਂਟ ਵਰਕਫਲੋ (content workflow) ਚਲਾਉਂਦਾ ਹੈ। ਸਾਫਟਵੇਅਰ ਏਜੰਟ ਡਰਾਫਟ ਤਿਆਰ ਕਰਦੇ ਹਨ। ਇੱਕ ਸ਼ਡਿਊਲਡ ਅਪਰੂਵਰ (approver) cron ਗੇਟਕੀਪਰ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ, ਉਹਨਾਂ ਡਰਾਫਟਾਂ ਦੀ ਸਮੀਖਿਆ ਕਰਦਾ ਹੈ ਅਤੇ ਮਨਜ਼ੂਰ ਕੀਤੇ ਗਏ ਆਈਟਮਾਂ ਨੂੰ ਸਿੱਧਾ ਪਬਲਿਸ਼ਿੰਗ (publishing) ਲਈ ਭੇਜ ਦਿੰਦਾ ਹੈ। ਕੋਈ ਵੀ ਇਨਸਾਨ ਹਰ ਬੈਚ ਨੂੰ ਮਨਜ਼ੂਰੀ ਦੇਣ ਲਈ ਡੈਸ਼ਬੋਰਡ ਨਹੀਂ ਖੋਲ੍ਹਦਾ। ਇਸਦਾ ਮੁੱਖ ਮਕਸਦ ਇਹ ਹੈ ਕਿ ਮਸ਼ੀਨ ਸਾਰਾ ਮਿਹਨਤ ਵਾਲਾ ਕੰਮ ਸੰਭਾਲ ਲਵੇ ਤਾਂ ਜੋ ਟੀਮ ਦੂਜੇ ਮਸਲਿਆਂ ਵੱਲ ਧਿਆਨ ਦੇ ਸਕੇ।
ਇਸ ਮਾਡਲ ਦੇ ਤਹਿਤ, ਭਰੋਸਾ ਹੀ ਤੁਹਾਡਾ ਮੁੱਖ ਇੰਟਰਫੇਸ ਬਣ ਜਾਂਦਾ ਹੈ। ਤੁਸੀਂ ਸ਼ਡਿਊਲਰ (scheduler) 'ਤੇ ਭਰੋਸਾ ਕਰਦੇ ਹੋ ਕਿ ਉਹ ਚੱਲੇਗਾ। ਤੁਸੀਂ ਜੌਬ (job) ਦੇ ਚੱਲਣ 'ਤੇ ਭਰੋਸਾ ਕਰਦੇ ਹੋ। ਤੁਸੀਂ ਐਗਜ਼ਿਟ ਕੋਡ (exit code) 'ਤੇ ਭਰੋਸਾ ਕਰਦੇ ਹੋ। ਜਦੋਂ ਲੌਗਸ (logs) 200 OK ਰਿਸਪਾਂਸ ਦੀ ਇੱਕ ਸਥਿਰ ਦਰ ਦਿਖਾਉਂਦੇ ਹਨ, ਤਾਂ ਤੁਸੀਂ ਮੰਨ ਲੈਂਦੇ ਹੋ ਕਿ ਕੰਮ ਹੋ ਰਿਹਾ ਹੈ। ਹਫ਼ਤਿਆਂ ਤੱਕ, ਉਹ ਦਰ ਬਿਲਕੁਲ ਸਹੀ ਸੀ। cron ਹਰ ਵਾਰ ਸਮੇਂ ਸਿਰ ਚੱਲਦਾ ਸੀ। ਪਰ ਇਸਨੇ ਕਦੇ ਵੀ ਅਸਲ ਕੰਮ ਨਹੀਂ ਕੀਤਾ।
ਉਨ੍ਹੀਸ ਡਰਾਫਟ ਅਤੇ ਕੋਈ ਅਲਾਰਮ ਨਹੀਂ
ਇਹ ਖੋਜ ਅਚਾਨਕ ਹੋਈ। ਕਿਸੇ ਨੇ ਅੰਤ ਵਿੱਚ ਨੋਟ ਕੀਤਾ ਕਿ ਪਬਲਿਸ਼ਿੰਗ ਕਿਊ (publishing queue) ਸ਼ਾਂਤ ਹੋ ਗਈ ਸੀ, ਜਾਂ ਸ਼ਾਇਦ ਉਨ੍ਹਾਂ ਨੇ ਕਿਸੇ ਡਾਊਨਸਟ੍ਰੀਮ ਮੈਟ੍ਰਿਕ (downstream metric) ਦੀ ਜਾਂਚ ਕੀਤੀ ਅਤੇ ਦੇਖਿਆ ਕਿ ਕੋਈ ਗਤੀ ਨਹੀਂ ਸੀ। ਉਨ੍ਹਾਂ ਨੂੰ ਉਨ੍ਹੀਸ ਡਰਾਫਟਾਂ ਦਾ ਇੱਕ ਢੇਰ ਮਿਲਿਆ ਜੋ ਬਿਲਕੁਲ ਅਛੂਤੇ ਪਏ ਸਨ। ਅਪਰੂਵਰ ਆਪਣੀ ਡਿਊਟੀ ਪੂਰੀ ਮਿਹਨਤ ਨਾਲ ਕਰ ਰਿਹਾ ਸੀ, ਹਰ ਰੋਜ਼ ਸਫਲਤਾ ਦਾ ਰਿਕਾਰਡ ਲਗਾ ਰਿਹਾ ਸੀ, ਪਰ ਉਸਨੇ ਉਹਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਨੂੰ ਵੀ ਪ੍ਰੋਸੈਸ ਨਹੀਂ ਕੀਤਾ ਸੀ।
ਇੱਕ ਮੈਨੂਅਲ ਵਰਕਫਲੋ ਵਿੱਚ, ਇੱਕ ਮਨੁੱਖੀ ਰਿਵਿਊਅਰ ਪਹਿਲੇ ਦਿਨ ਹੀ ਖਾਲੀ ਇਨਬਾਕਸ ਜਾਂ ਪੈਂਡਿੰਗ ਆਈਟਮਾਂ ਦੇ ਢੇਰ ਨੂੰ ਨੋਟ ਕਰ ਲੈਂਦਾ। ਆਟੋਮੇਟਿਡ ਵਰਜ਼ਨ ਵਿੱਚ, ਗਤੀ ਦੀ ਅਣਹੋਂਦ ਬਿਲਕੁਲ ਕੰਮ ਦੀ ਅਣਹੋਂਦ ਵਰਗੀ ਲੱਗੀ। cron ਕੋਲ ਅਜਿਹਾ ਕੋਈ ਮੈਨੇਜਰ ਨਹੀਂ ਸੀ ਜਿਸ ਨੂੰ ਉਹ ਨਿਰਾਸ਼ ਕਰ ਸਕੇ। ਇਹ ਬਸ ਸਮੇਂ ਸਿਰ ਕੰਮ 'ਤੇ ਆਉਂਦਾ ਰਿਹਾ ਅਤੇ ਜਲਦੀ ਘਰ ਚਲਾ ਜਾਂਦਾ ਸੀ।
ਦੋ ਬੱਗਸ, ਇੱਕ ਖ
Elevare Digital ਨੇ ਆਪਣੀ ਨਿਗਰਾਨੀ (monitoring) ਦੀ ਵਿਧੀ ਬਦਲ ਕੇ ਸਮੱਸਿਆ ਦਾ ਹੱਲ ਕੀਤਾ। ਉਹਨਾਂ ਨੇ ਸਿਰਫ਼ ਗਲਤੀਆਂ ਦੀ ਦਰ (error rates) ਅਤੇ ਸਫਲਤਾ ਦੀ ਸਥਿਤੀ (success statuses) 'ਤੇ ਨਿਰਭਰ ਕਰਨਾ ਬੰਦ ਕਰ ਦਿੱਤਾ। ਇਸ ਦੀ ਬਜਾਏ, ਉਹਨਾਂ ਨੇ ਉਪਲਬਧ ਕੰਮ ਅਤੇ ਮੁਕੰਮਲ ਕੀਤੇ ਗਏ ਕੰਮ ਦੇ ਵਿਚਕਾਰਲੇ ਅੰਤਰ (gap) 'ਤੇ ਅਲਰਟ ਜਾਰੀ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰ ਦਿੱਤਾ।
ਹਰ ਬੈਚ ਤੋਂ ਬਾਅਦ, ਉਹ ਹੁਣ ਇੱਕ ਸਧਾਰਨ ਇਨਵੈਰੀਐਂਟ ਚੈੱਕ (invariant check) ਕਰਦੇ ਹਨ:
- ਜੇਕਰ
processed0 ਹੈ ਅਤੇpendingਰੋਅਜ਼ (rows) 0 ਤੋਂ ਵੱਧ ਹਨ, ਤਾਂ ਉੱਚ ਗੰਭੀਰਤਾ ਵਾਲਾ ਅਲਰਟ (high severity alert) ਜਾਰੀ ਕਰੋ।
ਇਹ ਨਿਯਮ ਜਾਣਬੁੱਝ ਕੇ ਕਾਰਨਾਂ ਤੋਂ ਸੁਤੰਤਰ (agnostic) ਰੱਖਿਆ ਗਿਆ ਹੈ। ਇਸ ਨੂੰ ਇਸ ਨਾਲ ਕੋਈ ਫਰਕ ਨਹੀਂ ਪੈਂਦਾ ਕਿ ਗਲਤੀ ਕਿਸੇ ਖ਼ਰਾਬ ਫਿਲਟਰ, ਟੁੱਟੇ ਹੋਏ ਜੁਆਇਨ (join), ਜਾਂ ਗਲਤ ਲਿਖੇ ਹੋਏ enum string ਕਾਰਨ ਹੋਈ ਹੈ। ਇਸ ਨੂੰ ਸਿਰਫ਼ ਇਸ ਗੱਲ ਦੀ ਪਰਵਾਹ ਹੈ ਕਿ ਕੰਮ ਮੌਜੂਦ ਹੈ ਪਰ ਕੋਈ ਕੰਮ ਹੋਇਆ ਨਹੀਂ। ਇਹ ਨਿਗਰਾਨੀ ਨੂੰ “ਕੀ ਪ੍ਰਕਿਰਿਆ ਨੇ ਸ਼ਿਕਾਇਤ ਕੀਤੀ?” ਤੋਂ ਬਦਲ ਕੇ “ਕੀ ਕੰਮ ਹੋਇਆ?” 'ਤੇ ਲਿਆ ਆਉਂਦਾ ਹੈ।
ਇਸ ਦਾ ਸਮਰਥਨ ਕਰਨ ਲਈ, ਉਹ ਕਿਊ ਡੈਪਥ (queue depth) ਨੂੰ ਇੱਕ ਪ੍ਰਮੁੱਖ ਮੈਟ੍ਰਿਕ (first-class metric) ਵਜੋਂ ਮੰਨਦੇ ਹਨ, ਜਿਸ ਨੂੰ ਸਮੇਂ ਦੇ ਨਾਲ ਟ੍ਰੈਕ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਨਾ ਕਿ ਸਿਰਫ਼ ਇੱਕ ਸਮੇਂ-ਸਮੇਂ 'ਤੇ ਕੀਤੀ ਜਾਂਚ ਵਜੋਂ। ਜੇਕਰ ਪ੍ਰੋਡਿਊਸਰ (producer) ਰੋਅਜ਼ ਜੋੜਦਾ ਰਹਿੰਦਾ ਹੈ ਜਦੋਂ ਕਿ ਕੰਜ਼ਿਊਮਰ (consumer) ਲਗਾਤਾਰ ਸਫਲਤਾ ਦੀ ਰਿਪੋਰਟ ਕਰਦਾ ਹੈ, ਤਾਂ ਡੈਪਥ ਦਾ ਰੁਝਾਨ ਇੱਕ ਸਪੱਸ਼ਟ ਸਬੂਤ (smoking gun) ਬਣ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਸਥਿਰ ਸਨੈਪਸ਼ੌਟ (static snapshot) ਝੂਠ ਬੋਲ ਸਕਦਾ ਹੈ, ਪਰ ਲਗਾਤਾਰ ਵਧ ਰਿਹਾ ਬੈਕਲੌਗ (backlog) ਕਦੇ ਝੂਠ ਨਹੀਂ ਬੋਲਦਾ।
ਆਟੋਨੋਮਸ ਸਿਸਟਮਾਂ (Autonomous Systems) ਲਈ ਸਬਕ
Elevare ਦੀ ਘਟਨਾ ਉਹਨਾਂ ਸਾਰਿਆਂ ਲਈ ਕੁਝ ਵਿਵਹਾਰਕ ਨਿਯਮਾਂ ਨਾਲ ਭਰਪੂਰ ਹੈ ਜੋ ਹੈਂਡਜ਼-ਆਫ (hands-off) ਪਾਈਪਲਾਈਨਾਂ ਚਲਾ ਰਹੇ ਹਨ।
ਸਕੈਨ ਕੀਤੇ ਗਏ ਰੋਅਜ਼ (scanned rows) ਨੂੰ ਪ੍ਰੋਸੈਸਡ ਰੋਅਜ਼ (processed rows) ਤੋਂ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਲੌਗ ਕਰੋ। ਕੰਜ਼ਿਊਮਰ ਇੱਕ ਅਜਿਹੀ ਕੁਐਰੀ (query) ਚਲਾ ਸਕਦਾ ਹੈ ਜੋ ਚਾਲੀ ਰੋਅਜ਼ ਨੂੰ ਛੂਹਦੀ ਹੈ, ਉਹਨਾਂ ਸਾਰਿਆਂ ਨੂੰ ਖ਼ਰਾਬ ਮਾਪਦੰਡਾਂ ਰਾਹੀਂ ਫਿਲਟਰ ਕਰ ਦਿੰਦੀ ਹੈ, ਅਤੇ processed: 0 ਦੀ ਰਿਪੋਰਟ ਕਰਦੀ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਸਿਰਫ਼ ਅੰਤਿਮ ਗਿਣਤੀ ਨੂੰ ਲੌਗ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਉਸ ਅਦਿੱਖ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਗੁਆ ਦਿੰਦੇ ਹੋ। ਸਕੈਨ ਕੀਤੇ ਰੋਅਜ਼ ਦਾ ਮੈਟ੍ਰਿਕ ਇਹ ਦੱਸਦਾ ਹੈ ਕਿ ਵਰਕਰ ਆਇਆ, ਕੰਮ ਨੂੰ ਦੇਖਿਆ, ਅਤੇ ਉਲਝਣ ਵਿੱਚ ਵਾਪਸ ਚਲਾ ਗਿਆ। ਸਕੈਨ ਕੀਤੇ ਅਤੇ ਪ੍ਰੋਸੈਸਡ ਰੋਅਜ਼ ਦੇ ਵਿਚਕਾਰਲਾ ਉਹ ਅੰਤਰ ਅਕਸਰ ਤੁਹਾਡਾ ਸਭ ਤੋਂ ਪਹਿਲਾ ਸੰਕੇਤ ਹੁੰਦਾ ਹੈ।
ਕਿਊ ਡੈਪਥ (queue depth) ਨੂੰ ਟਾਈਮ-ਸੀਰੀਜ਼ (time-series) ਵਜੋਂ ਟ੍ਰੈਕ ਕਰੋ। ਇੱਕ ਕਿਊ ਜੋ ਅਸਥਾਈ ਤੌਰ 'ਤੇ ਖਾਲੀ ਹੈ, ਉਹ ਠੀਕ ਹੈ। ਇੱਕ ਕਿਊ ਜੋ ਵਰਕਰਾਂ ਦੇ ਸਹੀ (green) ਰਹਿਣ ਦੇ ਬਾਵਜੂਦ ਲਗਾਤਾਰ ਵਧਦੀ ਜਾ ਰਹੀ ਹੈ, ਉਹ ਠੀਕ ਨਹੀਂ ਹੈ। ਡੈਪਥ ਨੂੰ ਕੰਜ਼ਿਊਮਰ ਥਰੂਪੁੱਟ (consumer throughput) ਦੇ ਵਿਰੁੱਧ ਪਲਾਟ ਕਰੋ। ਜਦੋਂ ਇਹ ਦੋਵੇਂ ਵੱਖ ਹੋ ਜਾਣ, ਤਾਂ ਤੁਰੰਤ ਜਾਂਚ ਕਰੋ, ਭਾਵੇਂ ਹਰ ਹੈਲਥ ਚੈੱਕ ਪਾਸ ਹੋ ਰਿਹਾ ਹੋਵੇ।
ਕੰਜ਼ਿਊਮਰਾਂ ਦਾ ਟੈਸਟ ਅਸਲ ਪ੍ਰੋਡਿਊਸਰ ਆਊਟਪੁੱਟ ਦੇ ਵਿਰੁੱਧ ਕਰੋ, ਨਾ ਕਿ ਸਿਰਫ਼ ਮੌਕਸ (mocks) ਦੇ ਵਿਰੁੱਧ। ਮੌਕਡ ਡੇਟਾ (mocked data) ਵਾਲੇ ਯੂਨਿਟ ਟੈਸਟ ਟੈਸਟਰ ਦੀਆਂ ਕਲਪਨਾਵਾਂ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ। ਜੇਕਰ ਮੌਕ ਫੈਕਟਰੀ thread ਕਿਸਮਾਂ ਪੈਦਾ ਕਰਦੀ ਹੈ ਅਤੇ ਕੰਜ਼ਿਊਮਰ thread ਕਿਸਮਾਂ ਦੀ ਉਮੀਦ ਕਰਦਾ ਹੈ, ਤਾਂ ਤੁਹਾਡੇ ਟੈਸਟ ਪਾਸ ਹੋ ਜਾਣਗੇ ਪਰ ਪ੍ਰੋਡਕਸ਼ਨ ਫੇਲ ਹੋ ਜਾਵੇਗੀ। ਅਜਿਹੇ ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਟੈਸਟ ਚਲਾਓ ਜੋ ਪ੍ਰੋਡਿਊਸਰ ਦੇ ਆਊਟਪੁੱਟ ਤੋਂ ਅਸਲ ਰਿਕਾਰਡ ਲੈਂਦੇ ਹਨ। ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਕੰਜ਼ਿਊਮਰ ਸੱਚਮੁੱਚ ਉਹ ਦੇਖ ਸਕਦਾ ਹੈ ਜੋ ਪ੍ਰੋਡਿਊਸਰ ਲਿਖਦਾ ਹੈ।
ਡੇਟਾ ਕਿਸਮਾਂ (data types) ਅਤੇ enum ਮੁੱਲਾਂ ਨੂੰ ਇਕਰਾਰਨਾਮੇ (contracts) ਵਜੋਂ ਮੰਨੋ। JSON ਬਲੌਬਸ ਵਿੱਚ ਲੂਜ਼ ਸਟ੍ਰਿੰਗ ਟੈਗਸ ਉਦੋਂ ਤੱਕ ਸੁਵਿਧਾਜਨਕ ਹੁੰਦੇ ਹਨ ਜਦੋਂ ਤੱਕ ਉਹ ਅਦਿੱਖ ਅਸਫਲਤਾ ਦੇ ਬਿੰਦੂ ਨਹੀਂ ਬਣ ਜਾਂਦੇ। ਸਕੀਮਾਵਾਂ (schemas) ਨੂੰ ਸਪੱਸ਼ਟ ਰੂਪ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ। ਕੰਸਟੈਂਟਸ (constants) ਸਾਂਝੇ ਕਰੋ। ਪ੍ਰੋਡਿਊਸਰ ਅਤੇ ਕੰਜ਼ਿਊਮਰ ਦੇ ਵਿਚਕਾਰਲੇ ਜੋੜ 'ਤੇ ਪੇਲੋਡਸ (payloads) ਦੀ ਜਾਂਚ ਕਰੋ। ਜੇਕਰ ਇਕਰਾਰਨਾਮਾ ਟੁੱਟਦਾ ਹੈ, ਤਾਂ ਸਿਸਟਮ ਨੂੰ ਸੀਮਾ (boundary) 'ਤੇ ਸਾਫ਼ ਤੌਰ 'ਤੇ ਫੇਲ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਨਾ ਕਿ ਕਿਸੇ WHERE ਕਲਾਜ਼ ਦੇ ਅੰਦਰ ਚੁੱਪਚਾਪ।
ਅਸਲ ਸਿੱਖਿਆ
ਆਟੋਨੋਮਸ ਸਿਸਟਮ ਇਨਸਾਨਾਂ ਵਾਂਗ ਫੇਲ ਨਹੀਂ ਹੁੰਦੇ। ਉਹ ਬਿਮਾਰ ਹੋਣ ਦਾ ਬਹਾਨਾ ਨਹੀਂ ਬਣਾਉਂਦੇ, ਹਰ ਵਾਰ ਐਕਸੈਪਸ਼ਨ (exceptions) ਨਹੀਂ ਸੁੱਟਦੇ, ਜਾਂ ਸਪੱਸ਼ਟ ਕ੍ਰੈਸ਼ ਡੰਪਸ (crash dumps) ਨਹੀਂ ਛੱਡਦੇ। ਉਹ 200 OK ਰਿਟਰਨ ਕਰਦੇ ਹਨ ਅਤੇ ਇਨਵੈਂਟਰੀ ਨੂੰ ਖ਼ਰਾਬ ਹੋਣ ਦਿੰਦੇ ਹਨ। ਜੇਕਰ ਤੁਹਾਡੇ ਅਲਰਟ ਸਿਰਫ਼ ਚੀਕਾਂ ਸੁਣਦੇ ਹਨ, ਤਾਂ ਤੁਸੀਂ ਸਭ ਤੋਂ ਮਹਿੰਗੀਆਂ ਅਸਫਲਤਾਵਾਂ ਨੂੰ ਗੁਆ ਦੇਵੋਗੇ—ਉਹ ਜਿੱਥੇ ਸਭ ਕੁਝ ਠੀਕ ਲੱਗਦਾ ਹੈ ਪਰ ਕੁਝ ਵੀ ਨਹੀਂ ਹੁੰਦਾ।
ਆਪਣੀ ਅਬਜ਼ਰਵੇਬਿਲਟੀ (observability) ਨੂੰ ਅੰਤਰ (gap) 'ਤੇ ਨਜ਼ਰ ਰੱਖਣ ਲਈ ਡਿਜ਼ਾਈਨ ਕਰੋ। ਅੰਦਰ ਆਉਣ ਵਾਲੇ ਕੰਮ ਦੀ ਤੁਲਨਾ ਬਾਹਰ ਜਾਣ ਵਾਲੇ ਕੰਮ ਨਾਲ ਕਰੋ। ਜਦੋਂ ਇਹ ਦੋਵੇਂ ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ, ਤਾਂ ਮੰਨ ਲਓ ਕਿ ਮਸ਼ੀਨ ਤੁਹਾਡੇ ਨਾਲ ਝੂਠ ਬੋਲ ਰਹੀ ਹੈ। ਕਿਉਂਕਿ ਕਦੇ-ਕਦੇ, ਇੱਕ ਸੰਪੂਰਨ ਸਫਲਤਾ ਲੌਗ (success log) ਇੱਕ ਅਜਿਹੇ ਸਿਸਟਮ ਦਾ ਇਕਲੌਤਾ ਲੱਛਣ ਹੁੰਦਾ ਹੈ ਜੋ ਪੂਰੀ ਤਰ੍ਹਾਂ ਅੰਨ੍ਹਾ ਹੋ ਚੁੱਕਾ ਹੈ।
