39 पॉइंट द्वारा xguru 2024-05-16 | 6 टिप्पणियां | WhatsApp पर शेयर करें
  • बाहरी नेटवर्क तक tunneling करने वाला reverse proxy
  • production-स्तर के ट्रैफ़िक को संभालता है, और hosting (खासकर Kubernetes में) आसान रहे, इस तरह डिज़ाइन किया गया है
  • ग्राहक नेटवर्क, BYOC (Bring Your Own Cloud) सेवा की services को expose कर सकता है या IoT devices से कनेक्ट कर सकता है
  • fault tolerance, scalability, और zero-downtime deployment के लिए node cluster के रूप में host किया जा सकता है

Piko कैसे काम करता है

  • upstream service, Piko से कनेक्ट होकर endpoint register करती है
  • Piko, outbound-only connection के ज़रिए registered upstream service तक endpoint की request route करता है
  • इसका मतलब है कि public port खोले बिना भी services को expose किया जा सकता है
  • आने वाली HTTP(S) requests, Host header या x-pico-endpoint header का उपयोग करके target endpoint की ID पहचानती हैं
  • अगर कई upstream services एक ही endpoint register करती हैं, तो Piko उस endpoint की requests को registered upstreams के बीच load balance करता है

Piko के design goals

production ट्रैफ़िक को संभालना

  • Piko को test और development tool के बजाय production ट्रैफ़िक संभालने के लिए डिज़ाइन किया गया है
  • Piko का उपयोग करके customer network तक access किया जा सकता है, BYOC solutions बनाए जा सकते हैं, और IoT devices तक access किया जा सकता है
  • इसे support करने के लिए Piko को fault tolerance, horizontal scaling, और zero-downtime deployment के लिए node cluster के रूप में चलाया जा सकता है
  • इसके अलावा यह monitoring और debugging के लिए observability tools भी प्रदान करता है

hosting में आसानी

  • Piko को Kubernetes में आसानी से host करने के लिए डिज़ाइन किया गया है
  • Piko cluster को HTTP load balancer या Kubernetes Gateway के पीछे Kubernetes StatefulSet के रूप में host किया जा सकता है
  • upstream service connections और proxy client requests को cluster के सभी nodes पर load balance किया जा सकता है, और Piko सही upstream तक request route करने का काम संभालता है

सुरक्षा

  • upstream services, outbound-only connection के माध्यम से Piko से कनेक्ट होती हैं
  • Piko उसी connection के ज़रिए सभी requests को upstream तक route करता है
  • इसलिए upstream को requests प्राप्त करने के लिए port खोलने की ज़रूरत नहीं होती
  • Piko, upstream service के endpoint register करने से पहले authentication को support करता है
  • Piko self-host किया जा सकता है, इसलिए इसे proxy client के समान network में host किया जा सकता है ताकि यह बाहरी नेटवर्क से requests स्वीकार न करे
  • उदाहरण के लिए, authenticated upstream services को TLS के माध्यम से इंटरनेट से register करने दिया जा सकता है, और फिर केवल Piko के समान network में मौजूद proxy clients के लिए internal routes उपलब्ध कराए जा सकते हैं

6 टिप्पणियां

 
halfenif 2024-05-17

इसका मतलब है कि public port खोले बिना भी service को expose किया जा सकता है

इसका मतलब==किस तरह के use case होते हैं, यह जानने की जिज्ञासा है।

 
secret3056 2024-05-17

उदाहरण के लिए, मान लीजिए कि कंप्यूटर इंजीनियरिंग का एक स्नातक छात्र A किसी प्रोजेक्ट पर काम कर रहा है.
मेहनत से डेवलपमेंट करने के बाद, अब प्रेज़ेंटेशन की तारीख करीब आने पर A इस सेवा का डेमो दिखाना चाहता है.
लेकिन A को अभी बस सर्वर प्रोग्राम लिखना आता है, किसी भी सर्वर या instance को चालू करना नहीं आता.
ऊपर से वह हॉस्टल में रहता है, इसलिए port forwarding के जरिए सेवा को expose नहीं कर सकता.
यहीं पर tunneling काम आती है.
हॉस्टल में मौजूद अपने laptop पर ngork http 8080 चलाने पर एक random URL मिल जाता है, और जब क्लासरूम में डेमो के दौरान कोई उपयोगकर्ता इस URL पर पहुँचता है, तो HTTP request ngrok server → ngrok client → A के server program तक पहुँच जाती है, जिससे अलग से port forwarding किए बिना भी सेवा को expose किया जा सकता है.

 
lastorder 2024-05-16

https://github.com/andydunstall/piko/pull/20

लगता है कि प्रोजेक्ट का नाम Pico से बदलकर Piko कर दिया गया है। संभवतः pico नाम का एडिटर पहले से मौजूद होने के कारण टकराव की समस्या से बचने के लिए यह बदलाव किया गया है।

 
dontdieych 2024-05-18

यह जवाब देखकर कि किसी को pico editor के बारे में पता नहीं था, मुझे अपनी उम्र का एहसास हो रहा है। nano से पहले pico हुआ करता था, उफ़ उफ़।

 
xguru 2024-05-16

मैंने इसे कल खोजकर संकलित करके पोस्ट किया था.. लेकिन इस बीच यह बदल गया है, इसलिए मैंने इसे संशोधित कर दिया है।