ਪੇਮੈਂਟ ਰੀਕੰਸੀਲੀਏਸ਼ਨ ਦੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਸੁਲਝਾਉਣਾ
ਇੱਕ ਕਲਾਇੰਟ ਦੇ 2,000 ਡਾਲਰ ਗੁਆਚ ਗਏ। ਉਨ੍ਹਾਂ ਦੇ ਫਾਈਨਾਂਸ ਲੀਡ ਨੇ ਇਸ ਅੰਤਰ ਨੂੰ ਲੱਭਣ ਲਈ ਚਾਰ ਰਾਤਾਂ ਬਿਤਾ ਦਿੱਤੀਆਂ।
ਸਮੱਸਿਆ ਇੱਕ 'retry job' ਸੀ। ਸਿਸਟਮ ਨੇ 120 ਪੇਮੈਂਟਾਂ ਨੂੰ ਦੋ ਵਾਰ ਪ੍ਰੋਸੈਸ ਕੀਤਾ। ਇਸ ਨੇ ਗਾਹਕਾਂ ਤੋਂ ਦੁਬਾਰਾ ਪੈਸੇ ਨਹੀਂ ਲਏ, ਪਰ ਲੈਜਰ ਵਿੱਚ ਦੋਹਰੇ ਰਿਕਾਰਡ ਜੋੜ ਦਿੱਤੇ।
ਅਸੀਂ ਇਸ ਨੂੰ ਇੱਕ 'idempotency layer' ਨਾਲ ਠੀਕ ਕੀਤਾ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਇੱਕ ਪੇਮੈਂਟ ਸਿਰਫ਼ ਇੱਕ ਵਾਰ ਹੀ ਪ੍ਰੋਸੈਸ ਹੋਵੇ।
ਅਸੀਂ ਇਹ ਇਸ ਤਰ੍ਹਾਂ ਕੀਤਾ:
- ਅਸੀਂ ਦੋਹਰੀਆਂ ਬੇਨਤੀਆਂ ਨੂੰ ਰੋਕਣ ਲਈ ਇੱਕ Redis lock ਦੀ ਵਰਤੋਂ ਕੀਤੀ।
- ਅਸੀਂ ਬੈਕਅੱਪ ਵਜੋਂ ਡਾਟਾਬੇਸ ਵਿੱਚ ਇੱਕ unique index ਜੋੜਿਆ।
- ਅਸੀਂ gateway ਦੇ ਨਾਮ ਅਤੇ transaction ID ਦੇ ਨਾਲ ਇੱਕ key ਦੀ ਵਰਤੋਂ ਕੀਤੀ।
ਅਸੀਂ ਐਕਸਚੇਂਜ ਰੇਟਾਂ ਨੂੰ ਵੀ ਠੀਕ ਕੀਤਾ। ਸਿਸਟਮ ਲਾਈਵ ਰੇਟਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਰਿਹਾ ਸੀ। ਰੇਟ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਬਦਲਦੇ ਹਨ। ਇਸ ਨਾਲ ਅੰਤਰ ਪੈਦਾ ਹੋ ਰਹੇ ਸਨ।
ਹੁਣ ਅਸੀਂ ਆਰਡਰ ਸ਼ੁਰੂ ਹੋਣ ਵੇਲੇ ਰੇਟ ਨੂੰ ਲੌਕ ਕਰ ਦਿੰਦੇ ਹਾਂ। ਗਾਹਕ ਨੂੰ ਇੱਕ ਕੀਮਤ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ। ਫਾਈਨਾਂਸ ਟੀਮ ਨੂੰ ਵੀ ਉਹੀ ਕੀਮਤ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ।
ਅਸੀਂ ਇੱਕ ਰੋਜ਼ਾਨਾ ਰਿਪੋਰਟ ਵੀ ਤਿਆਰ ਕੀਤੀ। ਇਹ ਬੈਂਕ ਦੀਆਂ CSV ਫਾਈਲਾਂ ਦੀ ਸਾਡੇ ਰਿਕਾਰਡਾਂ ਨਾਲ ਤੁਲਨਾ ਕਰਦੀ ਹੈ। ਮਹੀਨਾਵਾਰ ਕੰਮ 15 ਘੰਟਿਆਂ ਤੋਂ ਘਟ ਕੇ 2 ਘੰਟੇ ਰਹਿ ਗਿਆ ਹੈ।
Excel ਅਤੇ ਦੇਰ ਰਾਤ ਤੱਕ ਕੰਮ ਕਰਨ 'ਤੇ ਨਿਰਭਰ ਕਰਨਾ ਬੰਦ ਕਰੋ। ਪੇਮੈਂਟ ਦੀਆਂ ਗਲਤੀਆਂ ਡਿਜ਼ਾਈਨ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਹਨ।
ਡਾਟਾਬੇਸ ਇੰਡੈਕਸ (database index) ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ। ਜਿਵੇਂ-ਜਿਵੇਂ ਤੁਹਾਡਾ ਕੰਮ ਵਧੇ, Redis locks ਜੋੜਦੇ ਜਾਓ। ਕਦੇ ਵੀ ਇਹ ਨਾ ਮੰਨੋ ਕਿ ਪੇਮੈਂਟ ਨੋਟੀਫਿਕੇਸ਼ਨ ਸਿਰਫ਼ ਇੱਕ ਵਾਰ ਹੀ ਆਵੇਗਾ।