પેમેન્ટ રિકોન્સિલિએશન ભૂલોનું નિરાકરણ
એક ક્લાયન્ટે ૨,૦૦૦ ડોલર ગુમાવ્યા. તેમના ફાઇનાન્સ લીડે આ તફાવત શોધવા માટે ચાર રાતો વિતાવી.
સમસ્યા એક રીટ્રાય જોબ (retry job) હતી. સિસ્ટમે ૧૨૦ પેમેન્ટ્સ બે વાર પ્રોસેસ કર્યા હતા. તેણે ગ્રાહકો પાસેથી ફરીથી ચાર્જ લીધો ન હતો. તેણે માત્ર લેજર (ledger) માં ડબલ રેકોર્ડ્સ ઉમેર્યા હતા.
અમે આ સમસ્યાને આઈડેમપોટન્સી લેયર (idempotency layer) દ્વારા સુધારી. આ સુનિશ્ચિત કરે છે કે પેમેન્ટ માત્ર એક જ વાર પ્રોસેસ થાય.
અમે આ કેવી રીતે કર્યું તે અહીં છે:
- ડબલ રિક્વેસ્ટ રોકવા માટે અમે Redis lock નો ઉપયોગ કર્યો.
- બેકઅપ તરીકે અમે ડેટાબેઝમાં એક યુનિક ઇન્ડેક્સ (unique index) ઉમેર્યો.
- અમે ગેટવેનું નામ અને ટ્રાન્ઝેક્શન ID ધરાવતી કી (key) નો ઉપયોગ કર્યો.
અમે એક્સચેન્જ રેટ્સ (exchange rates) પણ સુધાર્યા. સિસ્ટમ લાઈવ રેટ્સનો ઉપયોગ કરતી હતી. રેટ્સ ઝડપથી બદલાય છે. આના કારણે તફાવત ઊભા થતા હતા.
હવે જ્યારે ઓર્ડર શરૂ થાય ત્યારે અમે રેટ લોક કરી દઈએ છીએ. ગ્રાહક એક કિંમત જુએ છે. ફાઇનાન્સ ટીમ પણ તે જ કિંમત જુએ છે.
અમે એક ડેઈલી રિપોર્ટ પણ બનાવ્યો. તે બેંકની CSV ફાઇલોની અમારા રેકોર્ડ્સ સાથે સરખામણી કરે છે. માસિક કામ ૧૫ કલાકથી ઘટીને ૨ કલાક થઈ ગયું.
Excel અને મોડી રાતો પર નિર્ભર રહેવાનું બંધ કરો. પેમેન્ટની ભૂલો એ ડિઝાઈન સંબંધિત સમસ્યાઓ છે.
ડેટાબેઝ ઇન્ડેક્સથી શરૂઆત કરો. જેમ જેમ તમારો વ્યવસાય વધે તેમ Redis locks ઉમેરો. ક્યારેય એવું માની ન લો કે પેમેન્ટ નોટિફિકેશન માત્ર એક જ વાર આવશે.