Express APIs ಬಳಸುವಾಗ ನಾನು ಮಾಡಿದ 5 Production ತಪ್ಪುಗಳು

ಸಂಕೀರ್ಣವಾದ ಕೋಡ್‌ನಿಂದಾಗಿ APIs ಕೆಲಸ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸುವುದಿಲ್ಲ.

ನೀವು ಸಣ್ಣಪುಟ್ಟ ವಿವರಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಿದಾಗ ಅವು ಕೆಲಸ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸುತ್ತವೆ.

ನೈಜ production ತಪ್ಪುಗಳಿಂದ ನಾನು ಈ ಐದು ಪಾಠಗಳನ್ನು ಕಲಿತೆ.

  1. ಡೇಟಾವನ್ನು ಮೊದಲೇ ವ್ಯಾಲಿಡೇಟ್ (Validate) ಮಾಡಿ

ನಾನು ನನ್ನ business logic ಒಳಗೆ ಡೇಟಾವನ್ನು ವ್ಯಾಲಿಡೇಟ್ ಮಾಡುತ್ತಿದ್ದೆ. ಇದರಿಂದ ಮೂಲ ಮೂಲದಿಂದ ದೂರವಿರುವ ಕಡೆಗಳಲ್ಲಿ ಬಗ್‌ಗಳು (bugs) ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತಿದ್ದವು.

ಈಗ ನಾನು ತಪ್ಪು ರಿಕ್ವೆಸ್ಟ್‌ಗಳನ್ನು (bad requests) ತಕ್ಷಣವೇ ತಿರಸ್ಕರಿಸುತ್ತೇನೆ.

ಒಂದು ರಿಕ್ವೆಸ್ಟ್‌ನಲ್ಲಿ ಸರಿಯಾದ ಇಮೇಲ್ ಇಲ್ಲದಿದ್ದರೆ, ತಕ್ಷಣವೇ 400 error ಅನ್ನು ರಿಟರ್ನ್ ಮಾಡಿ. ತಪ್ಪು ಡೇಟಾ ನಿಮ್ಮ ಮುಖ್ಯ ಲಾಜಿಕ್‌ಗೆ ತಲುಪಲು ಬಿಡಬೇಡಿ.

  1. ನಿರ್ದಿಷ್ಟ error ಕೋಡ್‌ಗಳನ್ನು ಬಳಸಿ

ಸಾಮಾನ್ಯವಾದ (generic) 500 error ಯಾರಿಗೂ ಸಹಾಯ ಮಾಡುವುದಿಲ್ಲ.

ಒಂದು API key ಫೇಲ್ ಆದರೆ, 401 error ಅನ್ನು ರಿಟರ್ನ್ ಮಾಡಿ. ಬಳಕೆದಾರರ ಬಳಿ ಕ್ರೆಡಿಟ್‌ಗಳಿಲ್ಲದಿದ್ದರೆ, 402 error ಅನ್ನು ರಿಟರ್ನ್ ಮಾಡಿ.

ನೀವು Slack ನಲ್ಲಿ ಒಂದು error ಅನ್ನು ವಿವರಿಸಬೇಕಾದ ಪರಿಸ್ಥಿತಿ ಬಂದರೆ, ನಿಮ್ಮ API ಸಂದೇಶ ವಿಫಲವಾಗಿದೆ ಎಂದರ್ಥ.

  1. ನಿಮ್ಮ middleware ಕ್ರಮವನ್ನು ಪರಿಶೀಲಿಸಿ

ನಾನು authentication ಸಮಸ್ಯೆಗಳನ್ನು ಡೀಬಗ್ ಮಾಡಲು ಗಂಟೆಗಟ್ಟಲೆ ಸಮಯ ವ್ಯಯಿಸಿದೆ. ಸಮಸ್ಯೆ ಕೇವಲ ನನ್ನ middleware ನ ಕ್ರಮದಲ್ಲಿತ್ತು.

ಈ ಕ್ರಮವನ್ನು ಅನುಸರಿಸಿ:

ಒಂದು ತಪ್ಪು ಸಾಲು ಎಲ್ಲವನ್ನೂ ಹಾಳು ಮಾಡಬಹುದು.

  1. ಸರಿಯಾದ ಡೇಟಾವನ್ನು ಲಾಗ್ (Log) ಮಾಡಿ

ನಾನು ಅನೇಕ logging ಶೈಲಿಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿದೆ. ಹೆಚ್ಚಿನವು ಪ್ರಯೋಜನಕಾರಿಯಾಗಿರಲಿಲ್ಲ.

ಸಾಮಾನ್ಯ ಟ್ರ್ಯಾಕಿಂಗ್‌ಗಾಗಿ, method, path ಮತ್ತು status code ಅನ್ನು ಲಾಗ್ ಮಾಡಿ.

ತಪ್ಪುಗಳಿಗಾಗಿ, request ID, error message ಮತ್ತು stack trace ಅನ್ನು ಲಾಗ್ ಮಾಡಿ.

ಬೆಳಗಿನ 3 ಗಂಟೆಗೆ ನೀವು ಎಚ್ಚರಗೊಂಡಾಗ, ಇವುಗಳಲ್ಲದ ಉಳಿದವುಗಳೆಲ್ಲವೂ ಕೇವಲ ಅನಗತ್ಯ ಮಾಹಿತಿ (noise) ಮಾತ್ರ.

  1. rate limits ನಿಗದಿಪಡಿಸಿ

ಒಂದು endpoint ಮೇಲೆ ಅತಿಯಾದ ರಿಕ್ವೆಸ್ಟ್‌ಗಳ ಹೊಡೆತ ಬಿದ್ದಿದ್ದರಿಂದ, ಅದು ನೈಜ ಹಣದ ನಷ್ಟಕ್ಕೆ ಕಾರಣವಾಗುವುದನ್ನು ನಾನು ನೋಡಿದ್ದೇನೆ.

ಮಿತಿಗಳಿಲ್ಲದ API ಕೇವಲ ಭರವಸೆಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ. ಭರವಸೆಯು ಸುರಕ್ಷತಾ ತಂತ್ರವಲ್ಲ (security strategy).

ನಿಮ್ಮ ಸರ್ವರ್ ಅನ್ನು ರಕ್ಷಿಸಲು express-rate-limit ಬಳಸಿ.

ಹೆಚ್ಚಿನ API ವೈಫಲ್ಯಗಳು ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸುವುದರಿಂದ ಸಂಭವಿಸುತ್ತವೆ.

Production ನಿಮ್ಮ ಯೋಜನೆಗಳ ಬಗ್ಗೆ ತಲೆಕೆಡಿಸಿಕೊಳ್ಳುವುದಿಲ್ಲ. ಅದು ಕೇವಲ ನಿಮ್ಮ setup ಬಗ್ಗೆ ಮಾತ್ರ ಗಮನಹರಿಸುತ್ತದೆ.

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