ನಾನು ನನ್ನದೇ ಆದ ಟನಲಿಂಗ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಅನ್ನು ನಿರ್ಮಿಸಿದೆ
ನಾನು ನನ್ನ ಲ್ಯಾಪ್ಟಾಪ್ನಲ್ಲಿ ಒಂದು ವೆಬ್ ಆಪ್ ಅನ್ನು ಪರಿಷ್ಕರಿಸಲು ಮೂರು ದಿನಗಳನ್ನು ಕಳೆದೆ. ಅದು ಪರಿಪೂರ್ಣವಾಗಿ ಕಾಣುತ್ತಿತ್ತು. ನಂತರ ನಾನು ಅದನ್ನು ನನ್ನ ಫೋನ್ನಲ್ಲಿ ಪರೀಕ್ಷಿಸಲು ಪ್ರಯತ್ನಿಸಿದೆ. ಎಲ್ಲವೂ ಹಾಳಾಯಿತು.
ಎರಡನೇ ಸಾಧನ ಬೇಕಾದಾಗ ಲೋಕಲ್ ಡೆವಲಪ್ಮೆಂಟ್ ಗೊಂದಲಮಯವಾಗುತ್ತದೆ. ಫೈರ್ವಾಲ್ಗಳು ಮತ್ತು HTTPS ಸರ್ಟಿಫಿಕೇಟ್ ಸಮಸ್ಯೆಗಳಿಂದಾಗಿ ಲೋಕಲ್ IP ಅನ್ನು ಹಂಚಿಕೊಳ್ಳುವುದು ವಿಫಲವಾಗುತ್ತದೆ.
ನಾನು Ngrok ಅನ್ನು ಪ್ರಯತ್ನಿಸಿದೆ. ಅದು ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಆದರೆ ಉಚಿತ ಹಂತವು (free tier) ಕನೆಕ್ಷನ್ಗಳನ್ನು ಕಡಿತಗೊಳಿಸುತ್ತದೆ. URL ಗಳು ಕೂಡ ನೋಡಲು ಅಸಹ್ಯವಾಗಿವೆ. a1b2-34-56.ngrok-free.app ನಂತಹ ಯಾದೃಚ್ಛಿಕ ಸ್ಟ್ರಿಂಗ್ಗಳು ಕ್ಲೈಂಟ್ಗಳು ಅಥವಾ ತಂಡಗಳೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಲು ಸರಿಯಲ್ಲ.
ನನಗೆ ಸ್ವಚ್ಛವಾದ, ಓದಲು ಸುಲಭವಾದ URL ಹೊಂದಿರುವ ಟನಲ್ ಬೇಕಿತ್ತು. ಆದ್ದರಿಂದ ನಾನು ನನ್ನದೇ ಆದದ್ದನ್ನು ನಿರ್ಮಿಸಿದೆ.
ನಾನು ಕಸ್ಟಮ್ ಟನಲ್ ಅನ್ನು URL ಶಾರ್ಟ್ನರ್ ಜೊತೆಗೆ ಸಂಯೋಜಿಸಿದೆ. ಸ್ಮಾರ್ಟ್ ಸ್ಲಗ್ಗಳನ್ನು (slugs) ರಚಿಸಲು AI ಅನ್ನು ಸೇರಿಸಿದೆ ಮತ್ತು ಭದ್ರತಾ ರಕ್ಷಣೆಗಳನ್ನು ಒಳಗೊಂಡಿದ್ದೇನೆ.
ತಾಂತ್ರಿಕ ಸ್ಟ್ಯಾಕ್ (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
ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
- ದ್ವಿಮುಖ (Bi-directional) WebSocket ಟನಲಿಂಗ್. HTTP ವಿನಂತಿಗಳನ್ನು (requests) ಫಾರ್ವರ್ಡ್ ಮಾಡಲು ಲೋಕಲ್ CLI ಏಜೆಂಟ್ Django ಸರ್ವರ್ಗೆ ಕನೆಕ್ಟ್ ಆಗುತ್ತದೆ.
- Race-condition ರಕ್ಷಣೆ. ಅನಾಲಿಟಿಕ್ಸ್ ನಿಖರವಾಗಿಡಲು ನಾನು ಅಟಾಮಿಕ್ ಅಪ್ಡೇಟ್ಗಳಿಗಾಗಿ Django F() ಎಕ್ಸ್ಪ್ರೆಶನ್ಗಳನ್ನು ಬಳಸುತ್ತೇನೆ.
- Non-blocking telemetry. ಲೇಟೆನ್ಸಿಯನ್ನು (latency) ಕಡಿಮೆ ಮಾಡಲು ಸ್ಥಳ (location) ಮತ್ತು OS ಹುಡುಕಾಟಗಳು ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಥ್ರೆಡ್ಗಳಲ್ಲಿ ಚಲಿಸುತ್ತವೆ.
- AI ಸ್ಲಗ್ಗಳು. ಯಾದೃಚ್ಛಿಕ ಪಠ್ಯದ ಬದಲಿಗೆ ಅರ್ಥಪೂರ್ಣ ಸ್ಲಗ್ ಅನ್ನು ರಚಿಸಲು Gemini ಗುರಿ URL ಅನ್ನು ಓದುತ್ತದೆ.
- ಮುನ್ನೆಚ್ಚರಿಕೆ ಭದ್ರತೆ. ಯಾವುದೇ ಲಿಂಕ್ ಅನ್ನು ಉಳಿಸುವ ಮೊದಲು ನಾನು ಖಾಸಗಿ IP ಶ್ರೇಣಿಗಳನ್ನು ಬ್ಲಾಕ್ ಮಾಡುತ್ತೇನೆ ಮತ್ತು Google Safe Browsing ಪರಿಶೀಲನೆಗಳನ್ನು ನಡೆಸುತ್ತೇನೆ.
ಬ್ಯಾಕೆಂಡ್ ಮತ್ತು ಟನಲಿಂಗ್ ಲಾಜಿಕ್ ಸ್ಥಿರವಾಗಿದೆ. ಫ್ರಂಟ್ಎಂಡ್ ಇನ್ನೂ ಅಭಿವೃದ್ಧಿ ಹಂತದಲ್ಲಿದೆ.
ನಾನು ಪ್ರಸ್ತುತ IITM ನಲ್ಲಿ ಪರೀಕ್ಷೆಗಳಿಗೆ ಸಿದ್ಧತೆ ನಡೆಸುತ್ತಿದ್ದೇನೆ. ನನ್ನ ಅಧ್ಯಯನದ ಮೇಲೆ ಗಮನ ಹರಿಸಲು ನಾನು ಹೊಸ ಫೀಚರ್ಗಳನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಿದ್ದೇನೆ. ಕೋಡ್ ಅನ್ನು ಹಾಗೆಯೇ ಬಿಡುವ ಬದಲು, ನಾನು ಅದನ್ನು ಪರಿಶೀಲನೆಗಾಗಿ (review) ತೆರೆದಿದ್ದೇನೆ.
ಈ ಕೆಲವು ವಿಷಯಗಳ ಬಗ್ಗೆ ನನಗೆ ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆ ಬೇಕು:
- Latency: ಹೆಚ್ಚಿನ ಪ್ರಮಾಣದಲ್ಲಿ (high scale) ರೀಡೈರೆಕ್ಟ್ಗಳನ್ನು 10ms ಗಿಂತ ಕಡಿಮೆ ಇಡಲು ನಾನು ಹೇಗೆ ಮಾಡಬಹುದು?
- Security: SSRF ತಡೆಗಟ್ಟುವಿಕೆಯನ್ನು (mitigation) ಬಲಪಡಿಸಲು ಅತ್ಯುತ್ತಮ ಮಾರ್ಗ ಯಾವುದು?
- Scalability: ದೀರ್ಘಕಾಲದ ಟನಲ್ಗಳಿಗಾಗಿ ನಾನು WebSockets ಅಥವಾ TCP ಬಳಸಬೇಕೇ?
- Observability: ಟನಲ್ ಆರೋಗ್ಯಕ್ಕಾಗಿ ನಾನು ಯಾವ ಮೆಟ್ರಿಕ್ಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಬೇಕು?
ನಿಮಗೆ proxy workers ಅಥವಾ system design ಬಗ್ಗೆ ಅನುಭವವಿದ್ದರೆ, ದಯವಿಟ್ಟು ನಿಮ್ಮ ಅನಿಸಿಕೆಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಿ.
ಸಂಪೂರ್ಣ ಸಿಸ್ಟಮ್ ಡಿಸೈನ್ ವಿವರಣೆ: [Link] ಕೋಡ್ಬೇಸ್: [Link]
ಲೋಕಲ್ ಡೆವಲಪ್ಮೆಂಟ್ ಸಮಯದಲ್ಲಿ ಮೊಬೈಲ್ ಅನುಮತಿಗಳನ್ನು (permissions) ಪರೀಕ್ಷಿಸುವುದನ್ನು ನೀವು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತೀರಿ? ನೀವು ಥರ್ಡ್-ಪಾರ್ಟಿ ಟನಲ್ಗಳನ್ನು ಬಳಸುತ್ತೀರಾ ಅಥವಾ ಕಸ್ಟಮ್ ಟೂಲ್ಗಳನ್ನು ಬಳಸುತ್ತೀರಾ?
ಮೂಲ: https://dev.to/zallu/my-ngrok-urls-got-so-ugly-i-built-my-own-tunneling-platform-instead-59d
