सामग्री पर जाएँ
HexaTransfer
ब्लॉग पर वापस
तकनीकी गहन विश्लेषण

फ़ाइल ट्रांसफर सिस्टम के लिए माइक्रोसर्विस आर्किटेक्चर

माइक्रोसर्विस आर्किटेक्चर से फ़ाइल ट्रांसफर सिस्टम डिज़ाइन करें। सेवा विभाजन, संदेश कतार और मापनीयता पैटर्न की विस्तृत जानकारी।

फाइल ट्रांसफर के लिए माइक्रोसर्विस आर्किटेक्चर सिस्टम को केंद्रित सेवाओं में विभाजित करता है: एक अपलोड के लिए, एक मेटाडेटा के लिए, एक नोटिफिकेशन के लिए, एक वायरस स्कैनिंग के लिए, इत्यादि। प्रत्येक स्वतंत्र रूप से स्केल होता है, स्वतंत्र रूप से विफल होता है, और टीम जब उचित समझे तो विभिन्न भाषाओं में फिर से लिखा जा सकता है। फायदा परिचालन लचीलापन और स्पष्ट स्वामित्व है; लागत वितरित-सिस्टम जटिलता, नेटवर्क ओवरहेड, और ठोस अवलोकन क्षमता की आवश्यकता है। फाइल ट्रांसफर वर्कलोड के लिए व्यावहारिक विभाजन और टुकड़े एक-दूसरे से कैसे बात करते हैं यहाँ दिया गया है।

सेवा सीमाएं जो समझ में आती हैं

हर फ़ंक्शन को अपनी सेवा की ज़रूरत नहीं है। एक फाइल ट्रांसफर प्लेटफॉर्म के लिए उचित विभाजन: Upload Service (presigned URL जनरेशन, multipart समन्वय), Metadata Service (PostgreSQL में ट्रांसफर रिकॉर्ड, शेयरेबल लिंक जनरेशन), Notification Service (SendGrid या Postmark के माध्यम से ईमेल, webhooks), Scanning Service (मैलवेयर जांच के लिए ClamAV या व्यावसायिक AV), Billing Service (Razorpay या Stripe एकीकरण), और एक Frontend API Gateway (Kong, Traefik, या AWS API Gateway)। छह से आठ सेवाएं आमतौर पर मीठे स्थान पर होती हैं: स्वतंत्र स्केलिंग के लिए पर्याप्त पृथक्करण, लेकिन उनके माध्यम से अनुरोध ट्रेस करना पुरातत्व न हो जाए इतना अधिक नहीं।

स्टेटलेस अपलोड सेवाएं

Upload Service स्टेटलेस और क्षैतिज रूप से स्केलेबल होनी चाहिए। इसका काम presigned URL जनरेट करना, multipart अपलोड सत्र समन्वय करना, और auth टोकन सत्यापित करना है। सभी स्टेट कैश (Redis) या डेटाबेस (PostgreSQL, DynamoDB) में रहती है, कभी स्थानीय प्रक्रिया मेमोरी में नहीं। इसका मतलब है कि कोई भी इंस्टेंस कोई भी अनुरोध संभाल सकता है, जिससे blue/green deploys और auto-scaling तुच्छ हो जाते हैं। CPU या अनुरोध दर पर Horizontal Pod Autoscaler स्केलिंग के साथ Kubernetes deployments ट्रैफिक स्पाइक संभालती हैं। अपलोड इनिशियलाइज़ेशन पर sub-100 ms p99 लेटेंसी का लक्ष्य रखें; वास्तविक बाइट्स सीधे क्लाइंट से ऑब्जेक्ट स्टोरेज तक जाते हैं, इस सेवा के माध्यम से नहीं।

असिंक्रोनस काम के लिए मैसेज कतार

एंटीवायरस स्कैनिंग, थंबनेल जनरेशन, webhook डिलीवरी, और ईमेल भेजना असिंक काम है जो अपलोड पूर्णता को ब्लॉक नहीं करना चाहिए। एक मैसेज कतार उपयोग करें: सरलता और लागत के लिए AWS SQS, उच्च थ्रूपुट और रिप्ले के लिए Apache Kafka, लचीले रूटिंग के लिए RabbitMQ, या GCP पर होने पर Google Pub/Sub। जब अपलोड पूरा होता है, Upload Service एक "transfer.created" इवेंट प्रकाशित करता है। सब्सक्राइबर इसे उठाते हैं: Scanning Service ClamAV चलाता है, Notification Service शेयरिंग ईमेल भेजती है, Webhook Service कॉन्फिगर्ड एंडपॉइंट पर POST करती है। प्रत्येक सब्सक्राइबर विफलता पर एक्सपोनेंशियल बैकऑफ़ और जहर संदेशों के लिए डेड-लेटर कतार के साथ रिट्राई करता है।

इवेंट स्कीमा और कॉन्ट्रैक्ट टेस्टिंग

इवेंट स्कीमा पर सहमति बनाएं और उन्हें वर्जन करें। JSON Schema या Avro काम करता है; Protobuf via gRPC दृढ़ता से टाइप किए गए कॉन्ट्रैक्ट के लिए लोकप्रिय है। {"type": "transfer.created", "version": "1.0", "id": "uuid", "sizeBytes": 5242880000, "createdAt": "2026-11-20T12:00:00Z"} जैसा इवेंट आसानी से विकसित होता है यदि नए फ़ील्ड ऐडिटिव हों। ब्रेकिंग परिवर्तन माइग्रेशन अवधि के दौरान दोनों संस्करणों के समर्थन के साथ "transfer.created v2.0" में जाते हैं। Pact जैसे कॉन्ट्रैक्ट टेस्टिंग टूल सत्यापित करते हैं कि प्रोडक्शन के बजाय CI में प्रोड्यूसर और कंज्यूमर तैनाती से पहले सहमत हों।

मेटाडेटा स्टोरेज विकल्प

PostgreSQL अधिकांश फाइल ट्रांसफर मेटाडेटा वर्कलोड को अच्छी तरह संभालता है: ट्रांसफर, उपयोगकर्ता, शेयर, ऑडिट लॉग, बिलिंग रिकॉर्ड। तालिकाएं 100 GB से अधिक होने पर created_at द्वारा विभाजन क्वेरी तेज़ रखती हैं। उच्च थ्रूपुट के लिए, एक कम्पोजिट कुंजी (user_id, created_at) वाला DynamoDB पूर्वानुमानित लेटेंसी के साथ लाखों रिकॉर्ड तक स्केल होता है। रीड-हेवी वर्कलोड रीड रेप्लिका या DB के सामने इन-मेमोरी कैश (Redis, Memcached) से लाभान्वित होते हैं। ट्रांसफर मेटाडेटा S3 में फाइल बाइट्स की तुलना में छोटा है (प्रति रिकॉर्ड कुछ KB), इसलिए उचित इंडेक्सिंग के साथ एक मामूली PostgreSQL इंस्टेंस भी अरबों रिकॉर्ड रख सकता है।

सेवा-से-सेवा संचार

gRPC with Protobuf तेज़ और टाइप-सेफ है, उच्च-RPS आंतरिक APIs के लिए अच्छा है। OpenAPI specs के साथ REST सरल और curl के साथ डीबग करने योग्य है। Istio या Linkerd जैसे सेवा मेश सेवाओं के बीच mTLS जोड़ते हैं, canary deploys के लिए ट्रैफिक शिफ्टिंग, और कोड परिवर्तन के बिना स्वचालित रिट्राई। फाइल ट्रांसफर सिस्टम के लिए, अधिकांश आंतरिक कॉल कम-RPS समन्वय हैं, इसलिए एक छोटी क्लाइंट लाइब्रेरी के साथ REST आमतौर पर पर्याप्त है। हॉट पाथ के लिए gRPC आरक्षित करें: Upload Service से Metadata Service लुकअप हर अपलोड इनिशियलाइज़ पर होते हैं, इसलिए HTTP पर JSON की तुलना में 5 से 10x स्पीडअप मायने रखता है।

सेवाओं में प्रमाणीकरण और प्राधिकरण

प्रत्येक सेवा को जानना होगा कि कौन कॉल कर रहा है। Auth Service (Auth0, Keycloak, या कस्टम) द्वारा जारी JWT अनुरोध श्रृंखला के माध्यम से प्रसारित होता है। प्रत्येक सेवा सीमा पर JWT हस्ताक्षर सत्यापित करें; बिना सत्यापन के कभी दावों पर भरोसा न करें। उपयोगकर्ता संदर्भ के बिना सेवा-से-सेवा कॉल के लिए, SPIFFE/SPIRE के माध्यम से सेवा पहचान के साथ mTLS मज़बूत पहचान प्रदान करता है। OPA (Open Policy Agent) साइडकार प्राधिकरण नीतियाँ मूल्यांकन करते हैं: "क्या उपयोगकर्ता X ट्रांसफर Y पढ़ सकता है?" एकल नीति क्वेरी के रूप में। OPA में नीति केंद्रीकृत करना हर सेवा में "if user.id == transfer.owner_id" जांच बिखेरने से बेहतर है।

अवलोकन क्षमता: लॉग, मेट्रिक्स, और ट्रेस

अवलोकन क्षमता के बिना, माइक्रोसर्विस अपारदर्शी ब्लैक बॉक्स में बदल जाती हैं। OpenTelemetry इंस्ट्रूमेंटेशन Jaeger, Tempo, या Datadog जैसे बैकएंड में ट्रेस, मेट्रिक्स, और लॉग एक्सपोर्ट करता है। एक वितरित ट्रेस पूर्ण अनुरोध दिखाता है: फ्रंटएंड Upload Service को कॉल करता है, जो Metadata Service को कॉल करता है, जो PostgreSQL क्वेरी करता है, कुल 47 ms लेता है जिसमें DB में 12 ms। Prometheus और Grafana में मेट्रिक्स प्रति सेवा RPS, त्रुटि दर, और लेटेंसी ट्रैक करते हैं। Loki या Elasticsearch के माध्यम से JSON में संरचित लॉग ट्रेस ID द्वारा खोजने देते हैं। त्रुटि बजट बर्न पर अलर्टिंग (SRE-स्टाइल SLO) उपयोगकर्ताओं की शिकायत से पहले रिग्रेशन पकड़ती है।

तैनाती पाइपलाइन और रिलीज़ रणनीतियाँ

प्रत्येक सेवा का अपना रेपो और पाइपलाइन है, या प्रति-सेवा बिल्ड वाला मोनोरेपो (Bazel, Nx, Turborepo)। Kubernetes via Helm चार्ट या GitOps के लिए Argo CD के माध्यम से तैनात करें। रिलीज़ रणनीतियाँ: नियमित परिवर्तनों के लिए रोलिंग अपडेट, जोखिम भरे परिवर्तनों के लिए Istio या Flagger via canary deploys, डेटाबेस माइग्रेशन के लिए blue/green। LaunchDarkly या Unleash via फीचर फ्लैग आपको अक्षम कोड शिप करने और 1 प्रतिशत उपयोगकर्ताओं के लिए चालू करने देते हैं। प्रतिदिन लाखों ट्रांसफर संभालने वाली फाइल ट्रांसफर सेवा ऊंची त्रुटि दर पर स्वचालित रोलबैक के साथ canary deploys से लाभान्वित होती है।

विफलता मोड और लचीलापन पैटर्न

वितरित सिस्टम रचनात्मक तरीकों से विफल होते हैं। सर्किट ब्रेकर (Hystrix, resilience4j) निर्भरता धीमी होने पर कैस्केडिंग विफलताएं रोकते हैं। बल्कहेड प्रति डाउनस्ट्रीम सेवा थ्रेड पूल अलग करते हैं। एक्सपोनेंशियल बैकऑफ़ और जिटर के साथ रिट्राई थंडरिंग हर्ड को रोकते हैं। API कॉल पर Idempotency कुंजियाँ क्लाइंटों को डबल-प्रोसेसिंग के बिना रिट्राई करने देती हैं। Chaos Mesh या LitmusChaos जैसे Chaos engineering टूल स्टेजिंग में विफलताएं इंजेक्ट करते हैं यह सत्यापित करने के लिए कि सिस्टम सुंदर रूप से डिग्रेड होता है। फाइल ट्रांसफर के लिए, Upload Service को Metadata Service अनुपलब्ध होने पर नए अपलोड पूरी तरह अस्वीकार करने के बजाय रीड-ओनली मोड में डिग्रेड होना चाहिए।

जब माइक्रोसर्विस अत्यधिक हों

एक या दो डेवलपर और प्रति माह 100,000 ट्रांसफर वाली छोटी फाइल ट्रांसफर सेवा को 8 माइक्रोसर्विस की ज़रूरत नहीं। Go, Node.js, या Rails में अच्छी तरह से संगठित मोनोलिथ उस वर्कलोड को दो मामूली VM पर संभालता है, मिनटों में तैनात होता है, और टीम को सेवा मेश डीबग करने के बजाय फीचर बनाने का समय देता है। माइक्रोसर्विस 20+ इंजीनियरों की टीम आकार पर या जब विभिन्न घटकों की स्केलिंग आवश्यकताएं बहुत अलग हों तब फायदेमंद होती हैं। HexaTransfer का आर्किटेक्चर S3-संगत स्टोरेज और CDN पर भारी निर्भरता के साथ कम संख्या में केंद्रित सेवाओं का उपयोग करता है, परिचालन जटिलता प्रबंधनीय रखते हुए विश्व स्तर पर कम लेटेंसी पर 10 GB ट्रांसफर का समर्थन करता है।

hexatransfer.com पर मुफ्त में आज़माएं — कोई खाता नहीं, 10 GB अधिकतम।

एंड-टू-एंड एन्क्रिप्शन के साथ बड़ी फ़ाइलें सुरक्षित रूप से भेजें

एंड-टू-एंड एन्क्रिप्शन के साथ 10 GB तक की फ़ाइलें मुफ़्त में ट्रांसफ़र करें। अकाउंट की आवश्यकता नहीं। अपलोड से पहले आपकी फ़ाइलें ब्राउज़र में एन्क्रिप्ट की जाती हैं — कोई और उन्हें पढ़ नहीं सकता।

फ़ाइल भेजें