நான் எனக்கென ஒரு Tunneling Platform-ஐ உருவாக்கினேன்

எனது லேப்டாப்பில் ஒரு வெப் ஆப்-ஐ (web app) மெருகேற்ற மூன்று நாட்கள் செலவிட்டேன். அது பார்ப்பதற்கு மிகச்சிறப்பாக இருந்தது. பிறகு அதை எனது போனில் சோதித்துப் பார்த்தேன். அனைத்தும் செயலிழந்துவிட்டன.

ஒரு இரண்டாவது சாதனம் தேவைப்படும்போது, லோக்கல் டெவலப்மென்ட் (Local development) சிக்கலானது. ஃபயர்வால் (firewalls) மற்றும் HTTPS சான்றிதழ் (certificate) சிக்கல்களால் லோக்கல் IP-ஐப் பகிர்வது தோல்வியடைகிறது.

நான் Ngrok-ஐ முயற்சி செய்தேன். அது வேலை செய்கிறது, ஆனால் அதன் இலவசப் பதிப்பு (free tier) இணைப்புகளைத் துண்டிக்கிறது. அதன் URL-களும் மிக மோசமாக உள்ளன. a1b2-34-56.ngrok-free.app போன்ற சீரற்ற எழுத்துத் தொடர்கள் (Random strings) கிளையன்ட்கள் அல்லது குழுக்களுடன் பகிர்வதற்குச் சரியாக இருக்காது.

சுத்தமான, எளிதில் வாசிக்கக்கூடிய URL-களைக் கொண்ட ஒரு டன்னல் (tunnel) எனக்குத் தேவைப்பட்டது. எனவே, நானே ஒன்றை உருவாக்கினேன்.

நான் ஒரு தனிப்பயன் டன்னலை (custom tunnel) ஒரு URL shortener-உடன் இணைத்தேன். ஸ்மார்ட் ஸ்லக்ஸ்களை (smart slugs) உருவாக்க AI-ஐச் சேர்த்தேன் மற்றும் பாதுகாப்பு அம்சங்களையும் (security protections) உள்ளமைத்தேன்.

தொழில்நுட்ப அடுக்கு (Tech stack): • Tunnel / Proxy: Django Channels, Daphne, WebSockets, Python & Node.js CLI • Frontend: Next.js, TailwindCSS, Shadcn/UI • Backend: Django 5, Graphene GraphQL • Database: PostgreSQL (Neon) • Auth: JWT, bcrypt • AI: Google Gemini • Security: MaxMind GeoLite2, Google Safe Browsing API

இது எவ்வாறு செயல்படுகிறது:

  • இருவழி WebSocket டன்னலிங் (Bi-directional WebSocket tunneling). HTTP கோரிக்கைகளை முன்னோக்கி அனுப்ப (forward), ஒரு லோக்கல் CLI ஏஜென்ட் Django சர்வரோடு இணைகிறது.
  • Race-condition பாதுகாப்பு. பகுப்பாய்வுகளைத் (analytics) துல்லியமாக வைத்திருக்க, அணுக்கரு மாற்றங்களுக்காக (atomic updates) நான் Django F() expressions-ஐப் பயன்படுத்துகிறேன்.
  • Non-blocking டெலிமெட்ரி (telemetry). லேட்டன்சியைக் (latency) குறைக்க, இருப்பிடம் மற்றும் OS தொடர்பான தேடல்கள் பின்னணித் திரைகளில் (background threads) இயங்குகின்றன.
  • AI ஸ்லக்ஸ் (slugs). சீரற்ற உரத்திற்குப் பதிலாக, அர்த்தமுள்ள ஸ்லக்கை உருவாக்க Gemini இலக்கு URL-ஐப் படிக்கிறது.
  • முன்கூட்டிய பாதுகாப்பு (Proactive security). எந்தவொரு இணைப்பையும் சேமிப்பதற்கு முன், நான் தனிப்பட்ட IP வரம்புகளைத் (private IP ranges) தடுக்கிறேன் மற்றும் Google Safe Browsing சோதனைகளைச் செய்கிறேன்.

பேக்எண்ட் (backend) மற்றும் டன்னலிங் லாஜிக் (tunneling logic) நிலையானவை. பிரண்ட்எண்ட் (frontend) இன்னும் உருவாக்கத்தில் உள்ளது.

நான் தற்போது IITM-இல் தேர்வுகளுக்காகப் படித்துக் கொண்டிருக்கிறேன். எனது படிப்பில் கவனம் செலுத்த புதிய அம்சங்களை (new features) நிறுத்தி வைத்துள்ளேன். குறியீட்டை (code) அப்படியே விட்டுவிடாமல், அதை ஆய்விற்காக (review) வழங்குகிறேன்.

சில விஷயங்களில் உங்கள் கருத்துக்கள் எனக்குத் தேவை:

  • Latency: அதிக அளவிலான பயன்பாட்டில் (high scale) ரீடைரக்ட்களை (redirects) 10ms-க்கும் குறைவாக எவ்வாறு வைத்திருக்கலாம்?
  • Security: SSRF தணிப்பை (mitigation) வலுப்படுத்த சிறந்த வழி எது?
  • Scalability: நீண்ட கால டன்னல்களுக்கு (long-lived tunnels) WebSockets அல்லது TCP ஆகியவற்றைப் பயன்படுத்த வேண்டுமா?
  • Observability: டன்னலின் ஆரோக்கியத்தைக் கண்காணிக்க எந்த அளவீடுகளை (metrics) நான் கண்காணிக்க வேண்டும்?

உங்களுக்கு proxy workers அல்லது system design ஆகியவற்றில் அனுபவம் இருந்தால், உங்கள் கருத்துக்களைப் பகிருங்கள்.

முழு சிஸ்டம் டிசைன் விளக்கம்: [Link] Codebase: [Link]

லோக்கல் டெவலப்மென்ட்டின் போது மொபைல் அனுமதிகளை (mobile permissions) சோதிப்பதை நீங்கள் எவ்வாறு கையாளுகிறீர்கள்? நீங்கள் மூன்றாம் தரப்பு டன்னல்களைப் பயன்படுத்துகிறீர்களா அல்லது தனிப்பயன் கருவிகளைப் பயன்படுத்துகிறீர்களா?

Source: https://dev.to/zallu/my-ngrok-urls-got-so-ugly-i-built-my-own-tunneling-platform-instead-59d