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

రెండు నెలల క్రితం, నేను Info Linksని రూపొందించాను. ఇది Le CNAM Lebanonలోని విద్యార్థుల కోసం ఒక ఉచిత రిసోర్స్ ప్లాట్‌ఫారమ్. ఇది 300 మంది విద్యార్థులకు మరియు 50 కోర్సులకు సేవలను అందిస్తుంది.

ప్రారంభంలో, బ్యాకెండ్ నేరుగా Supabaseని ఉపయోగించేది. అది పనిచేసింది, కానీ సాంకేతిక ఇంటర్వ్యూలో నేను దానిని సమర్థించలేకపోయాను. మొదటి నెల నా లక్ష్యం కేవలం Go syntax నేర్చుకోవడం మాత్రమే కాదు. ఒక సీనియర్ ఇంజనీర్ గౌరవించే వ్యవస్థను నిర్మించాలని నేను అనుకున్నాను.

ఇక్కడ మారిన అంశాలు:

  • బ్యాకెండ్ Supabase-only నుండి Go REST APIకి మారింది.
  • కోడ్‌బేస్ 6 ఫైళ్ల నుండి 100 కంటే ఎక్కువ ఫైళ్లకు పెరిగింది.
  • నేను లేయర్డ్ ఆర్కిటెక్చర్‌ను (layered architecture) అమలు చేశాను: API, Service, Repository, మరియు Middleware.
  • గ్లోబల్ వేరియబుల్స్‌ను తొలగించడానికి నేను dependency injectionని జోడించాను.
  • నా ఎంపికలను వివరించడానికి నేను 6 Architecture Decision Records (ADRs) రాశాను.

కొత్త నిర్మాణం ఒక స్పష్టమైన మార్గాన్ని అనుసరిస్తుంది: HTTP request → Router → Handler → Service → Repository → Postgres.

ఈ క్రింది అంశాల ద్వారా నేను ప్రొడక్షన్ రెడీనెస్ (production readiness) పై దృష్టి సారించాను:

  • slogతో స్ట్రక్చర్డ్ లాగింగ్ (Structured logging).
  • హెల్త్ చెక్స్ మరియు మెట్రిక్స్ (Health checks and metrics).
  • దుర్వినియోగాన్ని నిరోధించడానికి రేట్ లిమిటింగ్ (Rate limiting).
  • race detection మరియు lintingతో కూడిన CI.
  • మల్టీ-స్టేజ్ Docker బిల్డ్స్ (Multi-stage Docker builds).
  • అధిక టెస్ట్ కవరేజ్ (API కోసం 93% మరియు Service కోసం 96%).

నేను k6తో లోడ్ టెస్టింగ్ కూడా నిర్వహించాను. నేను సెకనుకు 4,400 రిక్వెస్ట్‌లతో APIని పరీక్షించాను. రేట్ లిమిటర్ 1ms కంటే తక్కువ సమయంలోనే అదనపు ట్రాఫిక్‌ను నిరోధించింది. సిస్టమ్ క్రాష్ కాలేదు.

ఒక ముఖ్యమైన పాఠం ఏమిటంటే, AIని ఉపయోగించడంలో నేను పాటించే నియమం. నేను ప్రతిరోజూ 45 నిమిషాల పాటు AI లేకుండా పని చేస్తాను. కోడ్‌ను రీఫ్యాక్టర్ చేయడానికి లేదా ఒక ఫైల్‌ను గట్టిగా వివరించడానికి నేను ఈ సమయాన్ని ఉపయోగిస్తాను. ఒకవేళ నేను దానిని వివరించలేకపోతే, నేను దానిని షిప్ (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