𝗙𝗿𝗼𝗺 𝗦𝘂𝗽𝗮𝗯𝗮𝘀𝗲 𝘁𝗼 𝗣𝗿𝗼𝗱𝘂𝗰𝘁𝗶𝗼𝗻 𝗚𝗼: 𝗠𝗼𝗻𝘁𝗵 𝟭

दोन महिन्यांपूर्वी, मी Info Links तयार केले. हे Le CNAM Lebanon मधील विद्यार्थ्यांसाठी एक मोफत रिसोर्स प्लॅटफॉर्म आहे. हे ३०० विद्यार्थी आणि ५० कोर्सेसना सेवा देते.

सुरुवातीला, बॅकएंड थेट Supabase वापरत होते. ते काम करत होते, पण तांत्रिक मुलाखतीत (technical interview) मी त्याचे समर्थन करू शकलो नाही. पहिल्या महिन्याचे माझे ध्येय केवळ Go syntax शिकणे हे नव्हते. मला अशी प्रणाली (system) तयार करायची होती ज्याचा एक सिनियर इंजिनिअर आदर करेल.

येथे काय बदलले आहे:

  • बॅकएंड केवळ Supabase वरून Go REST API कडे वळले.
  • कोडबेस ६ फाईल्सपासून १०० हून अधिक फाईल्सपर्यंत वाढला.
  • मी लेअर्ड आर्किटेक्चर (layered architecture) लागू केले: API, Service, Repository, आणि Middleware.
  • ग्लोबल व्हेरिएबल्स काढून टाकण्यासाठी मी dependency injection जोडले.
  • माझ्या निवडी स्पष्ट करण्यासाठी मी ६ Architecture Decision Records (ADRs) लिहिले.

नवीन रचना एका स्पष्ट मार्गाचे अनुसरण करते: HTTP request → Router → Handler → Service → Repository → Postgres.

मी खालील गोष्टींच्या माध्यमातून 'production readiness' वर लक्ष केंद्रित केले:

  • slog सह स्ट्रक्चर्ड लॉगिंग (Structured logging).
  • हेल्थ चेक (Health checks) आणि मेट्रिक्स.
  • गैरवापर रोखण्यासाठी रेट लिमिटिंग (Rate limiting).
  • race detection आणि linting सह CI.
  • Multi-stage Docker builds.
  • उच्च टेस्ट कव्हरेज (API साठी ९३% आणि Service साठी ९६%).

मी k6 वापरून लोड टेस्टिंग (load testing) देखील केले. मी प्रति सेकंद ४,४०० रिक्वेस्ट्ससह API वर ताण दिला. रेट लिमिटरने १ मिलीसेकंद (1ms) पेक्षा कमी वेळात अतिरिक्त ट्रॅफिक रोखले. सिस्टम क्रॅश झाली नाही.

एक मोठा धडा म्हणजे AI वापरण्याबाबतचा माझा नियम. मी दररोज ४५ मिनिटे AI शिवाय काम करतो. मी या वेळेचा वापर कोड रिफॅक्टर (refactor) करण्यासाठी किंवा फाईल मोठ्याने स्पष्ट करण्यासाठी करतो. जर मी ते स्पष्ट करू शकलो नाही, तर मी ते शिप (ship) करत नाही. यामुळे "ते काम करते" आणि "ते का काम करते हे मला समजते" यातील अंतर कमी होते.

आता इंजिनिअरिंग मिशनशी सुसंगत आहे. उत्पादन विद्यार्थ्यांसाठी मोफत आहे, परंतु बॅकएंड आता 'इंटरव्यू-ग्रेड' (interview-grade) आहे.

पुढच्या महिन्यात, मी goroutines आणि context वापरून लिंक हेल्थ तपासण्यासाठी एक पूरक Go सर्व्हिस तयार करेन.

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