Express APIs ഉപയോഗിക്കുമ്പോൾ ഞാൻ വരുത്തിയ 5 പ്രൊഡക്ഷൻ തെറ്റുകൾ

സങ്കീർണ്ണമായ കോഡ് കാരണമായില്ല APIs തകരാറിലാകുന്നത്.

വിരസമായ ചെറിയ കാര്യങ്ങൾ നിങ്ങൾ അവഗണിക്കുന്നത് കൊണ്ടാണ് അവ തകരാറിലാകുന്നത്.

യഥാർത്ഥ പ്രൊഡക്ഷൻ പിശകുകളിൽ നിന്ന് ഞാൻ പഠിച്ച അഞ്ച് പാഠങ്ങൾ ഇവയാണ്.

  1. ഡാറ്റ നേരത്തെ തന്നെ പരിശോധിക്കുക

മുമ്പ് ഞാൻ ബിസിനസ് ലോജിക്കിനുള്ളിൽ വെച്ചാണ് ഡാറ്റ പരിശോധിക്കാറുള്ളത്. ഇത് പ്രശ്നത്തിന്റെ ഉറവിടത്തിൽ നിന്ന് വളരെ അകലെയായി ബഗുകൾ (bugs) ഉണ്ടാകാൻ കാരണമായി.

ഇപ്പോൾ തെറ്റായ റിക്വസ്റ്റുകളെ (bad requests) ഞാൻ ഉടൻ തന്നെ തടയുന്നു.

ഒരു റിക്വസ്റ്റിൽ ശരിയായ ഇമെയിൽ ഇല്ലെങ്കിൽ, ഉടൻ തന്നെ ഒരു 400 error നൽകുക. തെറ്റായ ഡാറ്റ നിങ്ങളുടെ പ്രധാന ലോജിക്കിലേക്ക് എത്താൻ അനുവദിക്കരുത്.

  1. കൃത്യമായ എറർ കോഡുകൾ ഉപയോഗിക്കുക

ഒരു സാധാരണ 500 error ആർക്കും സഹായകരമല്ല.

ഒരു API key പരാജയപ്പെട്ടാൽ, 401 error നൽകുക. ഒരു ഉപയോക്താവിന് ക്രെഡിറ്റുകൾ ഇല്ലെങ്കിൽ, 402 error നൽകുക.

Slack-ൽ ഒരു എറർ വിശദീകരിക്കേണ്ടി വരുന്നുണ്ടെങ്കിൽ, നിങ്ങളുടെ API മെസ്സേജ് പരാജയപ്പെട്ടു എന്നാണ് അർത്ഥം.

  1. നിങ്ങളുടെ middleware ക്രമം പരിശോധിക്കുക

ഓതന്റിക്കേഷൻ (authentication) പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ ഞാൻ മണിക്കൂറുകൾ ചിലവഴിച്ചു. പ്രശ്നം എന്റെ middleware-ന്റെ ക്രമത്തിൽ മാത്രമായിരുന്നു.

ഈ ക്രമം പിന്തുടരുക:

ഒരു തെറ്റായ വരി എല്ലാം തകരാറിലാക്കും.

  1. ശരിയായ ഡാറ്റ ലോഗ് ചെയ്യുക

ഞാൻ പലതരം ലോഗിംഗ് രീതികൾ പരീക്ഷിച്ചു. മിക്കവയും ഉപയോഗശൂന്യമായിരുന്നു.

സാധാരണ ട്രാക്കിംഗിനായി, method, path, status code എന്നിവ ലോഗ് ചെയ്യുക.

എററുകൾക്കായി, request ID, error message, stack trace എന്നിവ ലോഗ് ചെയ്യുക.

പുലർച്ചെ 3 മണിക്ക് നിങ്ങൾ ഉണരുമ്പോൾ മറ്റെന്തും വെറും ബഹളം മാത്രമായിരിക്കും.

  1. റേറ്റ് ലിമിറ്റുകൾ (rate limits) നിശ്ചയിക്കുക

ഒരു എൻഡ്പോയിന്റിലേക്ക് (endpoint) വൻതോതിൽ റിക്വസ്റ്റുകൾ വന്നത് കാരണം വലിയ സാമ്പത്തിക നഷ്ടം ഉണ്ടാവുന്നത് ഞാൻ കണ്ടു.

പരിധികളില്ലാത്ത ഒരു API വെറും പ്രതീക്ഷയിലാണ് നിലനിൽക്കുന്നത്. പ്രതീക്ഷ ഒരു സുരക്ഷാ തന്ത്രമല്ല.

നിങ്ങളുടെ സെർവറിനെ സംരക്ഷിക്കാൻ express-rate-limit ഉപയോഗിക്കുക.

അടിസ്ഥാന കാര്യങ്ങൾ അവഗണിക്കുന്നത് കൊണ്ടാണ് മിക്ക API പരാജയങ്ങളും ഉണ്ടാകുന്നത്.

നിങ്ങളുടെ പ്ലാനുകളെക്കുറിച്ച് പ്രൊഡക്ഷന് (Production) ആശങ്കയില്ല. നിങ്ങളുടെ സെറ്റപ്പ് (setup) മാത്രമാണ് പ്രധാനം.

Source: https://dev.to/manolito99/5-production-mistakes-that-changed-how-i-build-express-apis-133e