बुनियादी ढांचा: एक सिंहावलोकन

यह लेख Thinvent सार्वजनिक वेबसाइट को शक्ति प्रदान करने वाले बुनियादी ढांचे का एक व्यापक सिंहावलोकन प्रदान करता है। हम वेब सर्वर से लेकर डेटाबेस परत तक पूरी तकनीकी स्टैक को कवर करेंगे, और यह समझाएंगे कि सभी घटक एक तेज़, विश्वसनीय और स्केलेबल ई-कॉमर्स अनुभव प्रदान करने के लिए कैसे एक साथ काम करते हैं।

वेब एप्लिकेशन स्टैक

Flask - आधारशिला

हमारी वेबसाइट Flask पर बनी है, जो एक हल्का और लचीला Python वेब फ्रेमवर्क है। Flask कोर रूटिंग, अनुरोध/प्रतिक्रिया हैंडलिंग, और ब्लूप्रिंट सिस्टम प्रदान करता है जो हमारे एप्लिकेशन को मॉड्यूलर घटकों में व्यवस्थित करता है।

हमारे द्वारा उपयोग की जाने वाली प्रमुख Flask विशेषताएँ:

  • ब्लूप्रिंट्स: एप्लिकेशन को तार्किक मॉड्यूल में व्यवस्थित करना (वेब, एपीआई, कार्ट, उत्पाद, आदि)

  • Jinja2 टेम्प्लेटिंग: टेम्प्लेट इनहेरिटेंस के साथ सर्वर-साइड HTML जनरेशन

  • अनुरोध संदर्भ: HTTP अनुरोधों और सत्रों का स्वचालित हैंडलिंग

  • Werkzeug: विकास सर्वर और उपयोगिता कार्य

Flask एप्लिकेशन को वेब मॉड्यूल में आरंभ किया जाता है जहां हम:

  • वेब ब्लूप्रिंट बनाते हैं

  • अंतर्राष्ट्रीयकरण के लिए Babel को आरंभ करते हैं

  • Valkey सत्र संग्रहण को कॉन्फ़िगर करते हैं

  • टेम्प्लेट चर के लिए संदर्भ प्रोसेसर सेट करते हैं

Gunicorn - प्रोडक्शन सर्वर

प्रोडक्शन के लिए, हम Gunicorn (ग्रीन यूनिकॉर्न) का उपयोग करते हैं, जो एक Python WSGI HTTP सर्वर है। Gunicorn हमारे Flask एप्लिकेशन को कई वर्कर प्रक्रियाओं के साथ चलाता है।

Gunicorn को systemd द्वारा प्रबंधित किया जाता है, जो यह सुनिश्चित करता है कि यदि यह क्रैश हो जाता है या सर्वर रीबूट हो जाता है तो यह स्वचालित रूप से पुनः आरंभ हो जाए। यह हमें बिना किसी मैन्युअल हस्तक्षेप के उच्च उपलब्धता प्रदान करता है।

Nginx - रिवर्स प्रॉक्सी और लोड बैलेंसर

Nginx हमारे रिवर्स प्रॉक्सी और लोड बैलेंसर के रूप में कार्य करता है। यह Gunicorn के सामने बैठता है और संभालता है:

  • SSL/TLS टर्मिनेशन: HTTPS एन्क्रिप्शन/डिक्रिप्शन

  • स्टैटिक फ़ाइल सर्विंग: CSS, JavaScript, छवियाँ (सीधे डिस्क से परोसी जाती हैं)

  • रिवर्स प्रॉक्सी: गतिशील अनुरोधों को Gunicorn को अग्रेषित करना

  • दर सीमित करना: दुरुपयोग से सुरक्षा

  • अनुरोध संपीड़न: तेज़ स्थानांतरण के लिए Gzip संपीड़न

Ubuntu - ऑपरेटिंग सिस्टम

सभी EC2 इंस्टेंस Ubuntu चलाते हैं, हमारा चुना हुआ लिनक्स वितरण। हम pip के बजाय उपलब्ध होने पर Ubuntu python पैकेजों का उपयोग करना पसंद करते हैं।

विशिष्ट अनुरोध प्रवाह है:

flowchart LR
    A[क्लाइंट ब्राउज़र] -->|HTTPS अनुरोध| B[Nginx]
    B -->|प्रॉक्सी करें| C[Gunicorn]
    C -->|WSGI| D[Flask एप्लिकेशन]
    D -->|क्वेरी| E[Valkey कैश]
    E -->|मिस| F[DynamoDB]
    F -->|प्रतिक्रिया| E
    E -->|हिट| G[प्रतिक्रिया]
    G --> B
    B -->|प्रतिक्रिया| A

CloudFront - कंटेंट डिलीवरी नेटवर्क

CloudFront हमारा CDN है, जो प्रदान करता है:

  • DDoS सुरक्षा: वितरित हमलों के खिलाफ अंतर्निहित सुरक्षा

  • ऑरिजिन शील्डिंग: हमारे ऑरिजिन सर्वर को ट्रैफ़िक स्पाइक्स से बचाता है

हमारे CloudFront डिस्ट्रीब्यूशन के दो ऑरिजिन हैं:

  • बैकएंड सर्वर: बैकएंड Flask एप्लिकेशन

  • S3: स्टैटिक एसेट्स के लिए S3 बकेट

कॉन्फ़िगर किए गए कैश व्यवहार:

  • /s/* - स्टैटिक एसेट्स (CSS, JS, छवियाँ) 24-घंटे TTL के साथ

  • /ds/*.pdf - डेटाशीट्स 24-घंटे TTL के साथ

  • /api/* - एपीआई एंडपॉइंट्स बिना कैशिंग के

  • /cart - कार्ट 24-घंटे TTL के साथ

  • /set-language - बिना कैशिंग के (गतिशील)

डेटा लेयर

DynamoDB - प्राथमिक डेटाबेस

हम अपने प्राथमिक डेटाबेस के रूप में Amazon DynamoDB का उपयोग करते हैं। DynamoDB एक NoSQL डेटाबेस है।

हमारी DynamoDB टेबल्स में शामिल हैं:

  • सिफारिशें: AI-जनित उत्पाद सिफारिशें

  • उत्पाद विवरण: कई भाषाओं में उत्पाद विवरण

  • क्वेरी पृष्ठ: SEO के लिए पार्स किए गए क्वेरी पृष्ठ

हम PynamoDB का उपयोग करते हैं, जो DynamoDB के लिए एक पायथनिक ORM है, जो प्रदान करता है:

  • मॉडल परिभाषाएँ: डेटाबेस टेबल्स के लिए Python क्लासेस

Valkey - इन-मेमोरी कैश

Valkey (Redis का एक फोर्क) हमारी इन-मेमोरी कैश लेयर है, जो प्रदान करती है:

  • सत्र संग्रहण: 30-दिवसीय स्लाइडिंग समाप्ति के साथ उपयोगकर्ता सत्र

  • अक्सर एक्सेस किया गया डेटा: उत्पाद गणना, लोकप्रिय क्वेरीज़

  • ऑटोकंप्लीट कैश: खोज सुझाव

  • छवि मेनिफेस्ट: उत्पाद छवि स्थान

Valkey महत्वपूर्ण प्रदर्शन लाभ प्रदान करता है:

  • पढ़ने के संचालन के लिए DynamoDB से 100 गुना तेज़

  • डेटाबेस लोड कम: कैश हिट्स DynamoDB क्वेरी से बचाती हैं

  • सत्र दृढ़ता: अनुरोधों में Valkey-समर्थित सत्र

हम Valkey का उपयोग करते हैं:

  • सत्रों के लिए: उपयोगकर्ता लॉगिन स्थिति, कार्ट डेटा

  • कैशिंग के लिए: लोकप्रिय क्वेरीज़, ऑटोकंप्लीट सुझाव

  • काउंटरों के लिए: उत्पाद स्टॉक गणना (प्रदर्शन के लिए कैश किया गया)

  • कतारों के लिए: पृष्ठभूमि नौकरी प्रसंस्करण

S3 - ऑब्जेक्ट स्टोरेज

Amazon S3 हमारी ऑब्जेक्ट स्टोरेज सेवा है।

हम S3 का उपयोग करते हैं:

  • उत्पाद छवियों के लिए: उच्च-रिज़ॉल्यूशन उत्पाद तस्वीरें

  • डेटाशीट्स के लिए: PDF उत्पाद विशिष्टताएँ

  • स्टैटिक एसेट्स के लिए: CSS, JS, छवियाँ

DNS और रूटिंग

Route53 - डोमेन प्रबंधन

Route53 हमारे DNS प्रबंधन को संभालता है:

  • डोमेन पंजीकरण: thinvent.in और संबंधित डोमेन

Nginx रूटिंग

Nginx URL पैटर्न के आधार पर अनुरोधों को रूट करता है:

  • / → Flask एप्लिकेशन (होम, उत्पाद, कार्ट, चेकआउट)

  • /q/ → Flask एप्लिकेशन (क्वेरी पृष्ठ, खोज परिणाम)

  • /api/ → Flask एप्लिकेशन (एपीआई एंडपॉइंट्स)

  • /static/ → CloudFront/S3 (स्टैटिक एसेट्स)

खोज और AI बुनियादी ढांचा

खोज सेवा

हम खोज कार्यक्षमता के लिए एक स्टैंडअलोन Flask एप्लिकेशन चलाते हैं। यह सेवा प्रदान करती है:

  • वेक्टर खोज: संबंधित क्वेरीज़ के लिए शब्दार्थ समानता

  • ऑटोकंप्लीट: उपसर्ग-आधारित खोज सुझाव

  • लोकप्रिय क्वेरीज़: सबसे अधिक खोजे गए शब्द

  • फ़िल्टर निष्कर्षण: फ़ैसेट्स के लिए खोज क्वेरीज़ को पार्स करना

खोज सेवा उपयोग करती है:

  • Valkey RediSearch: वेक्टर समानता खोज

  • SentenceTransformer: एम्बेडिंग जनरेशन

  • वाक्यांश मैपिंग: सबस्ट्रिंग मिलान के माध्यम से फ़िल्टर निष्कर्षण

AI प्रदाता

हम विभिन्न कार्यों के लिए कई AI प्रदाताओं का उपयोग करते हैं:

DeepSeek

  • मॉडल: deepseek-chat

  • उपयोग के मामले: उत्पाद विवरण, क्वेरी पृष्ठ सामग्री, अनुवाद

  • एपीआई: Together.ai फॉलबैक के साथ DeepSeek एपीआई

  • कैशिंग: प्रॉम्प्ट कैशिंग दक्षता के लिए सिस्टम प्रॉम्प्ट्स

Gemini

  • मॉडल: Gemini (विशिष्ट मॉडल)

  • उपयोग के मामले: सामग्री जनरेशन

  • एकीकरण: सीधे एपीआई कॉल

Amazon Bedrock

  • मॉडल: Nova Pro

  • उपयोग के मामले: आंतरिक चैट

  • एकीकरण: boto3 SDK

Amazon Bedrock

  • मॉडल: Nova Lite

  • उपयोग के मामले: ग्राहक चैटबॉट

  • एकीकरण: boto3 SDK

पूर्ण अनुरोध प्रवाह

यहाँ बताया गया है कि एक विशिष्ट अनुरोध हमारे बुनियादी ढांचे से कैसे गुजरता है:

flowchart TD
    A[क्लाइंट ब्राउज़र] -->|DNS क्वेरी| B[Route53]
    B -->|IP पता| C[CloudFront]
    C -->|कैश जाँच| D{कैश हिट?}
    D -->|हाँ| E[कैश की गई सामग्री लौटाएँ]
    D -->|नहीं| F[Nginx]
    F -->|प्रॉक्सी| G[Gunicorn]
    G -->|WSGI| H[Flask एप्लिकेशन]
    H -->|कैश जाँच| I[Valkey]
    I -->|हिट| J[कैश किया गया डेटा लौटाएँ]
    I -->|मिस| K[DynamoDB]
    K -->|क्वेरी| L[डेटा लौटाएँ]
    L --> I
    J --> M[प्रतिक्रिया बनाएँ]
    E --> M
    M --> N[क्लाइंट को भेजें]

निगरानी और स्वास्थ्य

UptimeRobot - बाहरी निगरानी

हम सभी सार्वजनिक रूप से सामने आने वाले एंडपॉइंट्स की बाहरी निगरानी के लिए UptimeRobot का उपयोग करते हैं:

  • बैकएंड सर्वर: बैकएंड वेबसाइट

  • www.thinvent.in: सार्वजनिक वेबसाइट

स्वास्थ्य जाँच

  • **G