𝗙𝗿𝗼𝗺 𝗦𝘂𝗽𝗮𝗯𝗮𝘀𝗲 𝘁𝗼 𝗣𝗿𝗼𝗱𝘂𝗰𝘁𝗶𝗼𝗻 𝗚𝗼: 𝗠𝗼𝗻𝘁𝗵 𝟭
രണ്ട് മാസം മുമ്പ് ഞാൻ Info Links നിർമ്മിച്ചു. Le CNAM Lebanon-ലെ വിദ്യാർത്ഥികൾക്കായുള്ള ഒരു സൗജന്യ റിസോഴ്സ് പ്ലാറ്റ്ഫോമാണിത്. ഇത് 300 വിദ്യാർത്ഥികൾക്കും 50 കോഴ്സുകൾക്കുമായി സേവനം നൽകുന്നു.
തുടക്കത്തിൽ, ബാക്കെൻഡ് നേരിട്ട് Supabase ഉപയോഗിച്ചായിരുന്നു. അത് പ്രവർത്തിച്ചിരുന്നു, പക്ഷേ ഒരു ടെക്നിക്കൽ ഇന്റർവ്യൂവിൽ എനിക്ക് അത് ന്യായീകരിക്കാൻ കഴിഞ്ഞില്ല. ഒന്നാം മാസത്തെ എന്റെ ലക്ഷ്യം Go സിന്റാക്സ് പഠിക്കുക എന്നത് മാത്രമല്ലായിരുന്നു. ഒരു സീനിയർ എഞ്ചിനീയർ ബഹുമാനിക്കുന്ന തരത്തിലുള്ള ഒരു സിസ്റ്റം നിർമ്മിക്കുക എന്നതായിരുന്നു എന്റെ ലക്ഷ്യം.
മാറ്റങ്ങൾ ഇവയാണ്:
- ബാക്കെൻഡ് Supabase-ൽ മാത്രം നിന്ന് ഒരു 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-ഉം metrics-ഉം.
- ദുരുപയോഗം തടയാൻ Rate limiting.
- race detection-ഉം linting-ഉം ഉള്ള CI.
- Multi-stage Docker builds.
- ഉയർന്ന ടെസ്റ്റ് കവറേജ് (API-ക്ക് 93%, Service-ന് 96%).
ഞാൻ k6 ഉപയോഗിച്ച് ലോഡ് ടെസ്റ്റിംഗും നടത്തി. സെക്കൻഡിൽ 4,400 റിക്വസ്റ്റുകൾ ഉപയോഗിച്ച് ഞാൻ API-യെ പരിശോധിച്ചു. ഒരു മില്ലിസെക്കൻഡിൽ താഴെ സമയം കൊണ്ട് റേറ്റ് ലിമിറ്റർ അധിക ട്രാഫിക്കിനെ തടഞ്ഞു. സിസ്റ്റം ക്രാഷ് ചെയ്തില്ല.
AI ഉപയോഗിക്കുന്ന കാര്യത്തിൽ ഞാൻ പഠിച്ച വലിയൊരു പാഠം എന്റെ ഒരു നിയമമാണ്. എല്ലാ ദിവസവും 45 മിനിറ്റ് ഞാൻ AI ഇല്ലാതെ ജോലി ചെയ്യുന്നു. കോഡ് റീഫാക്ടർ ചെയ്യാനോ അല്ലെങ്കിൽ ഒരു ഫയലിനെക്കുറിച്ച് ഉറക്കെ വിശദീകരിക്കാനോ ഞാൻ ഈ സമയം ഉപയോഗിക്കുന്നു. എനിക്ക് അത് വിശദീകരിക്കാൻ കഴിയില്ലെങ്കിൽ, ഞാൻ അത് ഷിപ്പ് (ship) ചെയ്യില്ല. "ഇത് പ്രവർത്തിക്കുന്നു" എന്നതിനും "എന്തുകൊണ്ടാണ് ഇത് പ്രവർത്തിക്കുന്നത് എന്ന് എനിക്കറിയാം" എന്നതിനും ഇടയിലുള്ള വിടവ് ഇത് ഇല്ലാതാക്കുന്നു.
എൻജിനീയറിംഗ് ഇപ്പോൾ ലക്ഷ്യത്തിന് അനുയോജ്യമാണ്. ഉൽപ്പന്നം വിദ്യാർത്ഥികൾക്കായി സൗജന്യമായി തുടരുന്നു, എന്നാൽ ബാക്കെൻഡ് ഇപ്പോൾ ഇന്റർവ്യൂ നിലവാരത്തിലുള്ളതാണ് (interview-grade).
അടുത്ത മാസം, goroutines-ഉം context-ഉം ഉപയോഗിച്ച് ലിങ്ക് ഹെൽത്ത് പരിശോധിക്കുന്നതിനായി ഒരു കംപാനിയൻ Go സർവീസ് ഞാൻ നിർമ്മിക്കും.
Live site: infolinks.app GitHub: github.com/MohamadObeid9/Info_Links Telegram: @Info_Links9