𝗙𝗿𝗼𝗺 𝗦𝘂𝗽𝗮𝗯𝗮𝘀𝗲 𝘁𝗼 𝗣𝗿𝗼𝗱𝘂𝗰𝘁𝗶𝗼𝗻 𝗚𝗼: 𝗠𝗼𝗻𝘁𝗵 𝟭
இரண்டு மாதங்களுக்கு முன்பு, நான் Info Links-ஐ உருவாக்கினேன். இது Le CNAM Lebanon-ல் உள்ள மாணவர்களுக்கான ஒரு இலவச வளத் தளம் (resource platform). இது 300 மாணவர்கள் மற்றும் 50 பாடப்பிரிவுகளுக்குப் பயன்படுகிறது.
ஆரம்பத்தில், backend நேரடியாக Supabase-ஐப் பயன்படுத்தியது. அது வேலை செய்தது, ஆனால் ஒரு தொழில்நுட்ப நேர்காணலில் (technical interview) அதை என்னால் சரியாக விளக்கவோ அல்லது நியாயப்படுத்தவோ முடியவில்லை. முதல் மாதத்திற்கான எனது இலக்கு வெறும் Go syntax-ஐக் கற்றுக்கொள்வது மட்டுமல்ல. ஒரு மூத்த பொறியாளர் (senior engineer) மதிக்கும் வகையில் ஒரு அமைப்பை (system) உருவாக்க விரும்பினேன்.
இதோ என்ன மாற்றங்கள் நிகழ்ந்தன:
- Backend, 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.
- அதிகப்படியான test coverage (API-க்கு 93% மற்றும் Service-க்கு 96%).
நான் k6 மூலம் load testing-யும் செய்தேன். ஒரு வினாடிக்கு 4,400 requests மூலம் API-ஐச் சோதித்தேன். Rate limiter, 1ms-க்கும் குறைவான நேரத்தில் அதிகப்படியான போக்குவரத்தைத் (excess traffic) தடுத்தது. சிஸ்டம் செயலிழக்கவில்லை (crash ஆகவில்லை).
நான் கற்றுக்கொண்ட ஒரு பெரிய பாடம் AI-ஐப் பயன்படுத்துவதற்கான எனது விதிமுறைதான். ஒவ்வொரு நாளும் 45 நிமிடங்கள் AI இல்லாமல் வேலை செய்கிறேன். இந்த நேரத்தை குறியீட்டை (code) மறுசீரமைக்க (refactor) அல்லது ஒரு கோப்பை சத்தமாக விளக்கிப் பார்க்கப் பயன்படுத்துகிறேன். என்னால் அதை விளக்க முடியாவிட்டால், நான் அதை வெளியிடுவதில்லை (ship செய்வதில்லை). இது "இது வேலை செய்கிறது" என்பதற்கும் "இது ஏன் வேலை செய்கிறது என்று எனக்குத் தெரியும்" என்பதற்கும் இடையிலான இடைவெளியைக் குறைக்கிறது.
இப்போது பொறியியல் (engineering) அந்தத் திட்டத்தின் நோக்கத்திற்கு இணையாக உள்ளது. தயாரிப்பு மாணவர்களுக்கு இலவசமாகவே உள்ளது, ஆனால் backend இப்போது நேர்காணலுக்குத் தகுதியான தரத்தில் (interview-grade) உள்ளது.
அடுத்த மாதம், goroutines மற்றும் context ஆகியவற்றைப் பயன்படுத்தி லிங்க் ஆரோக்கியத்தைச் (link health) சரிபார்க்கும் ஒரு துணை Go service-ஐ உருவாக்குவேன்.
Live site: infolinks.app GitHub: github.com/MohamadObeid9/Info_Links Telegram: @Info_Links9