Supabase ನಿಂದ Production Go ವರೆಗೆ: ತಿಂಗಳು 1

ಎರಡು ತಿಂಗಳ ಹಿಂದೆ, ನಾನು Info Links ಅನ್ನು ನಿರ್ಮಿಸಿದೆ. ಇದು Le CNAM Lebanon ನ ವಿದ್ಯಾರ್ಥಿಗಳಿಗಾಗಿ ಇರುವ ಉಚಿತ ಸಂಪನ್ಮೂಲ ವೇದಿಕೆಯಾಗಿದೆ. ಇದು 300 ವಿದ್ಯಾರ್ಥಿಗಳು ಮತ್ತು 50 ಕೋರ್ಸ್‌ಗಳಿಗೆ ಸೇವೆ ನೀಡುತ್ತಿದೆ.

ಆರಂಭದಲ್ಲಿ, ಬ್ಯಾಕೆಂಡ್ ನೇರವಾಗಿ Supabase ಅನ್ನು ಬಳಸುತ್ತಿತ್ತು. ಅದು ಕೆಲಸ ಮಾಡಿತು, ಆದರೆ ತಾಂತ್ರಿಕ ಸಂದರ್ಶನದಲ್ಲಿ (technical interview) ಅದನ್ನು ಸಮರ್ಥಿಸಲು ನನಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ನನ್ನ ಮೊದಲ ತಿಂಗಳ ಗುರಿ ಕೇವಲ Go syntax ಕಲಿಯುವುದಷ್ಟೇ ಆಗಿರಲಿಲ್ಲ. ಒಬ್ಬ ಹಿರಿಯ ಇಂಜಿನಿಯರ್ ಗೌರವಿಸುವಂತಹ ವ್ಯವಸ್ಥೆಯನ್ನು ನಿರ್ಮಿಸುವುದು ನನ್ನ ಉದ್ದೇಶವಾಗಿತ್ತು.

ಇಲ್ಲಿ ಬದಲಾವಣೆಗಳಾಗಿವೆ:

  • ಬ್ಯಾಕೆಂಡ್ ಕೇವಲ Supabase ನಿಂದ Go REST API ಗೆ ಬದಲಾಗಿದೆ.
  • ಕೋಡ್ ಬೇಸ್ (codebase) 6 ಫೈಲ್‌ಗಳಿಂದ 100 ಕ್ಕೂ ಹೆಚ್ಚು ಫೈಲ್‌ಗಳಿಗೆ ಬೆಳೆದಿದೆ.
  • ನಾನು ಲೇಯರ್ಡ್ ಆರ್ಕಿಟೆಕ್ಚರ್ (layered architecture): API, Service, Repository, ಮತ್ತು Middleware ಅನ್ನು ಅಳವಡಿಸಿದೆ.
  • ಗ್ಲೋಬಲ್ ವೇರಿಯೇಬಲ್‌ಗಳನ್ನು (global variables) ತೆಗೆದುಹಾಕಲು ನಾನು dependency injection ಅನ್ನು ಸೇರಿಸಿದೆ.
  • ನನ್ನ ಆಯ್ಕೆಗಳನ್ನು ವಿವರಿಸಲು ನಾನು 6 Architecture Decision Records (ADRs) ಬರೆದಿದ್ದೇನೆ.

ಹೊಸ ರಚನೆಯು ಸ್ಪಷ್ಟವಾದ ಹಾದಿಯನ್ನು ಅನುಸರಿಸುತ್ತದೆ: HTTP request → Router → Handler → Service → Repository → Postgres.

ಈ ಕೆಳಗಿನ ಅಂಶಗಳ ಮೂಲಕ ನಾನು production readiness ಮೇಲೆ ಗಮನ ಹರಿಸಿದೆ:

  • slog ಬಳಸಿ structured logging.
  • Health checks ಮತ್ತು metrics.
  • ದುರುಪಯೋಗವನ್ನು ತಡೆಯಲು rate limiting.
  • race detection ಮತ್ತು linting ನೊಂದಿಗೆ CI.
  • Multi-stage Docker builds.
  • ಹೆಚ್ಚಿನ ಟೆಸ್ಟ್ ಕವರೇಜ್ (API ಗೆ 93% ಮತ್ತು Service ಗೆ 96%).

ನಾನು k6 ಬಳಸಿ load testing ಕೂಡ ಮಾಡಿದೆ. ನಾನು ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ 4,400 ರಿಕ್ವೆಸ್ಟ್‌ಗಳೊಂದಿಗೆ API ಅನ್ನು ಪರೀಕ್ಷಿಸಿದೆ. rate limiter ಅತಿಯಾದ ಟ್ರಾಫಿಕ್ ಅನ್ನು 1ms ಕ್ಕಿಂತ ಕಡಿಮೆ ಸಮಯದಲ್ಲಿ ತಡೆಹಿಡಿಯಿತು. ಸಿಸ್ಟಮ್ ಕ್ರ್ಯಾಶ್ ಆಗಲಿಲ್ಲ.

ಒಂದು ದೊಡ್ಡ ಪಾಠವೆಂದರೆ AI ಬಳಸುವ ಬಗ್ಗೆ ನಾನು ಮಾಡಿಕೊಂಡ ನಿಯಮ. ನಾನು ಪ್ರತಿದಿನ 45 ನಿಮಿಷಗಳ ಕಾಲ AI ಇಲ್ಲದೆ ಕೆಲಸ ಮಾಡುತ್ತೇನೆ. ಈ ಸಮಯವನ್ನು ನಾನು ಕೋಡ್ ಅನ್ನು ರಿಫ್ಯಾಕ್ಟರ್ (refactor) ಮಾಡಲು ಅಥವಾ ಒಂದು ಫೈಲ್ ಅನ್ನು ಜೋರಾಗಿ ವಿವರಿಸಲು ಬಳಸುತ್ತೇನೆ. ಒಂದು ವೇಳೆ ನನಗೆ ಅದನ್ನು ವಿವರಿಸಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ, ನಾನು ಅದನ್ನು ಶಿಪ್ (ship) ಮಾಡುವುದಿಲ್ಲ. ಇದು "ಅದು ಕೆಲಸ ಮಾಡುತ್ತದೆ" ಮತ್ತು "ಅದು ಏಕೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬುದು ನನಗೆ ತಿಳಿದಿದೆ" ಎಂಬ ನಡುವಿನ ಅಂತರವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.

ಈಗ ಎಂಜಿನಿಯರಿಂಗ್ ಗುರಿಯೊಂದಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತಿದೆ. ಉತ್ಪನ್ನವು ವಿದ್ಯಾರ್ಥಿಗಳಿಗೆ ಉಚಿತವಾಗಿಯೇ ಉಳಿದಿದೆ, ಆದರೆ ಬ್ಯಾಕೆಂಡ್ ಈಗ ಸಂದರ್ಶನಕ್ಕೆ ಸಿದ್ಧವಾಗಿದೆ (interview-grade).

ಮುಂದಿನ ತಿಂಗಳು, ನಾನು goroutines ಮತ್ತು context ಬಳಸಿ ಲಿಂಕ್ ಹೆಲ್ತ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು ಒಂದು ಸಹವರ್ತಿ Go service ಅನ್ನು ನಿರ್ಮಿಸುತ್ತೇನೆ.

Live site: infolinks.app GitHub: github.com/MohamadObeid9/Info_Links Telegram: @Info_Links9

Source: https://dev.to/mohamadobeid9/from-supabase-only-to-production-go-month-1-of-rebuilding-info-links-3a4p