पेमेंट रिकॉन्सिलिएशनमधील त्रुटी सोडवणे
एका क्लायंटचे २,००० डॉलर्सचे नुकसान झाले. त्यांच्या फायनान्स लीडने ती तफावत शोधण्यासाठी चार रात्री खर्च केल्या.
समस्या एका 'retry job' मध्ये होती. सिस्टमने १२० पेमेंट्स दोनदा प्रोसेस केल्या. यामुळे ग्राहकांकडून पुन्हा पैसे आकारले गेले नाहीत, परंतु लेजरमध्ये (ledger) फक्त दुहेरी नोंदी जोडल्या गेल्या.
आम्ही 'idempotency layer' वापरून हे ठीक केले. यामुळे पेमेंट फक्त एकदाच प्रोसेस होईल याची खात्री मिळते.
आम्ही हे कसे केले ते खालीलप्रमाणे आहे:
- आम्ही दुहेरी विनंत्या (requests) रोखण्यासाठी Redis lock वापरला.
- बॅकअप म्हणून आम्ही डेटाबेसमध्ये एक unique index जोडला.
- आम्ही गेटवेचे नाव आणि transaction ID असलेला एक key वापरला.
आम्ही एक्सचेंज रेट्स (exchange rates) देखील सुधारले. सिस्टम लाइव्ह रेट्स वापरत होती. दर वेगाने बदलतात, ज्यामुळे तफावत निर्माण होत होती.
आता ऑर्डर सुरू होताच आम्ही तो दर लॉक करतो. ग्राहकाला एक किंमत दिसते आणि फायनान्स टीमलाही तीच किंमत दिसते.
आम्ही एक दैनिक रिपोर्ट (daily report) देखील तयार केला. तो बँकेच्या CSV फाइल्सची आमच्या रेकॉर्डशी तुलना करतो. यामुळे महिन्याचे काम १५ तासांवरून केवळ २ तासांवर आले.
एक्सेल (Excel) आणि रात्री उशिरापर्यंत काम करण्यावर अवलंबून राहणे थांबवा. पेमेंटमधील त्रुटी या डिझाइनच्या समस्या आहेत.
डेटाबेस इंडेक्सपासून सुरुवात करा. जसजशी तुमची व्याप्ती वाढेल, तसतसे Redis locks जोडा. पेमेंट नोटिफिकेशन फक्त एकदाच येईल असे कधीही समजू नका.