पायाभूत सुविधा विहंगावलोकन
हा लेख Thinvent सार्वजनिक वेबसाइटला चालवणाऱ्या पायाभूत सुविधांचे सर्वसमावेशक विहंगावलोकन प्रदान करतो. आम्ही वेब सर्व्हरपासून डेटाबेस स्तरापर्यंत संपूर्ण तंत्रज्ञान स्टॅक कव्हर करू, आणि सर्व घटक एकत्रितपणे कसे कार्य करतात हे स्पष्ट करू, जेणेकरून जलद, विश्वासार्ह आणि स्केलेबल ई-कॉमर्स अनुभव मिळेल.
वेब अनुप्रयोग स्टॅक
Flask - पाया
आमची वेबसाइट Flask वर बांधलेली आहे, जी एक हलकी आणि लवचिक Python वेब फ्रेमवर्क आहे. Flask मुख्य रूटिंग, विनंती/प्रतिसाद हाताळणी, आणि ब्ल्यूप्रिंट प्रणाली प्रदान करते जी आमच्या अनुप्रयोगाला मॉड्यूलर घटकांमध्ये संघटित करते.
आम्ही वापरत असलेली प्रमुख Flask वैशिष्ट्ये:
-
Blueprints: अनुप्रयोगाला लॉजिकल मॉड्यूल्समध्ये संघटित करतात (web, api, cart, product, इ.)
-
Jinja2 टेम्पलेटिंग: टेम्पलेट इनहेरिटन्ससह सर्व्हर-साइड HTML निर्मिती
-
विनंती संदर्भ: HTTP विनंती आणि सत्रांचे स्वयंचलित हाताळणी
-
Werkzeug: विकास सर्व्हर आणि उपयुक्तता कार्ये
Flask अनुप्रयोग web मॉड्यूलमध्ये आरंभित केला जातो, जिथे आम्ही:
-
web ब्ल्यूप्रिंट तयार करतो
-
आंतरराष्ट्रीयीकरणासाठी Babel आरंभ करतो
-
Valkey सत्र स्टोरेज कॉन्फिगर करतो
-
टेम्पलेट व्हेरिएबल्ससाठी कॉन्टेक्स्ट प्रोसेसर सेट करतो
Gunicorn - उत्पादन सर्व्हर
उत्पादनासाठी, आम्ही Gunicorn (Green Unicorn) वापरतो, जो Python WSGI HTTP सर्व्हर आहे. Gunicorn आमचा Flask अनुप्रयोग अनेक worker प्रक्रियांसह चालवतो.
Gunicorn चे व्यवस्थापन systemd द्वारे केले जाते, जे ते क्रॅश झाल्यास किंवा सर्व्हर रीबूट झाल्यास आपोआप रीस्टार्ट होते याची खात्री देते. यामुळे मॅन्युअल हस्तक्षेपाशिवाय उच्च उपलब्धता मिळते.
Nginx - रिव्हर्स प्रॉक्सी आणि लोड बॅलन्सर
Nginx आमचा रिव्हर्स प्रॉक्सी आणि लोड बॅलन्सर म्हणून कार्य करतो. तो Gunicorn च्या समोर असतो आणि खालील गोष्टी हाताळतो:
-
SSL/TLS टर्मिनेशन: HTTPS एन्क्रिप्शन/डिक्रिप्शन
-
स्थिर फाइल सर्व्हिंग: CSS, JavaScript, प्रतिमा (डिस्कवरून थेट सर्व्ह केल्या जातात)
-
रिव्हर्स प्रॉक्सी: डायनॅमिक विनंत्या Gunicorn कडे पाठवणे
-
रेट लिमिटिंग: गैरवापरापासून संरक्षण
-
विनंती कॉम्प्रेशन: जलद हस्तांतरणासाठी Gzip कॉम्प्रेशन
Ubuntu - ऑपरेटिंग सिस्टम
सर्व EC2 इन्स्टन्सेस Ubuntu वर चालतात, आमची निवडलेली Linux वितरण. आम्ही उपलब्ध असल्यास pip ऐवजी Ubuntu python पॅकेजेस वापरण्यास प्राधान्य देतो.
ठराविक विनंती प्रवाह आहे:
flowchart LR
A[Client Browser] -->|HTTPS Request| B[Nginx]
B -->|Proxy to| C[Gunicorn]
C -->|WSGI| D[Flask App]
D -->|Query| E[Valkey Cache]
E -->|Miss| F[DynamoDB]
F -->|Response| E
E -->|Hit| G[Response]
G --> B
B -->|Response| ACloudFront - कंटेंट डिलिव्हरी नेटवर्क
CloudFront आमचे CDN आहे, जे प्रदान करते:
-
DDoS संरक्षण: वितरित हल्ल्यांविरुद्ध अंगभूत संरक्षण
-
ओरिजिन शिल्डिंग: ट्रॅफिक स्पाइक्सपासून आमच्या ओरिजिन सर्व्हरचे संरक्षण
आमच्या CloudFront वितरणाचे दोन ओरिजिन आहेत:
-
बॅकएंड सर्व्हर: बॅकएंड Flask अनुप्रयोग
-
S3: स्थिर संपत्तीसाठी S3 बकेट
कॅशे वर्तन कॉन्फिगर केलेले:
-
/s/*- स्थिर संपत्ती (CSS, JS, प्रतिमा) २४-तास TTL सह -
/ds/*.pdf- डेटाशीट्स २४-तास TTL सह -
/api/*- API एंडपॉइंट्स कॅशिंगशिवाय -
/cart- कार्ट २४-तास TTL सह -
/set-language- कॅशिंग नाही (डायनॅमिक)
डेटा स्तर
DynamoDB - प्राथमिक डेटाबेस
आम्ही Amazon DynamoDB आमचा प्राथमिक डेटाबेस म्हणून वापरतो. DynamoDB हा NoSQL डेटाबेस आहे.
आमच्या DynamoDB टेबल्समध्ये हे समाविष्ट आहे:
-
शिफारसी: AI-व्युत्पन्न उत्पादन शिफारसी
-
उत्पादन वर्णने: अनेक भाषांमधील उत्पादन वर्णने
-
क्वेरी पेजेस: SEO साठी पार्स केलेली क्वेरी पेजेस
आम्ही PynamoDB वापरतो, DynamoDB साठी एक Pythonic ORM, जे प्रदान करते:
- मॉडेल व्याख्या: डेटाबेस टेबल्ससाठी Python क्लासेस
Valkey - इन-मेमरी कॅश
Valkey (Redis चा एक फॉर्क) आमचा इन-मेमरी कॅश स्तर आहे, जे प्रदान करते:
-
सत्र स्टोरेज: ३०-दिवसांच्या स्लायडिंग कालबाह्यतेसह वापरकर्ता सत्रे
-
वारंवार अॅक्सेस केलेला डेटा: उत्पादनांची संख्या, लोकप्रिय क्वेरी
-
ऑटोकंप्लीट कॅश: शोध सूचना
-
इमेज मॅनिफेस्ट: उत्पादन प्रतिमांची स्थाने
Valkey महत्त्वपूर्ण कार्यप्रदर्शन फायदे प्रदान करते:
-
वाचन ऑपरेशन्ससाठी DynamoDB पेक्षा 100x वेगवान
-
कमी डेटाबेस लोड: कॅश हिट्स DynamoDB क्वेरी टाळतात
-
सत्र स्थिरता: विनंत्यांदरम्यान Valkey-समर्थित सत्रे
आम्ही Valkey वापरतो:
-
सत्रे: वापरकर्ता लॉगिन स्थिती, कार्ट डेटा
-
कॅशिंग: लोकप्रिय क्वेरी, ऑटोकंप्लीट सूचना
-
काउंटर: उत्पादन स्टॉक संख्या (कार्यप्रदर्शनासाठी कॅश केलेले)
-
क्यू: बॅकग्राउंड जॉब प्रोसेसिंग
S3 - ऑब्जेक्ट स्टोरेज
Amazon S3 ही आमची ऑब्जेक्ट स्टोरेज सेवा आहे.
आम्ही S3 वापरतो:
-
उत्पादन प्रतिमा: उच्च-रिझोल्यूशन उत्पादन छायाचित्रे
-
डेटाशीट्स: PDF उत्पादन वैशिष्ट्ये
-
स्थिर संपत्ती: CSS, JS, प्रतिमा
DNS आणि रूटिंग
Route53 - डोमेन व्यवस्थापन
Route53 आमचे DNS व्यवस्थापन हाताळते:
- डोमेन नोंदणी: thinvent.in आणि संबंधित डोमेन
Nginx रूटिंग
Nginx URL पॅटर्ननुसार विनंत्या रूट करते:
-
/→ Flask अनुप्रयोग (होम, उत्पादने, कार्ट, चेकआउट) -
/q/→ Flask अनुप्रयोग (क्वेरी पेजेस, शोध निकाल) -
/api/→ Flask अनुप्रयोग (API एंडपॉइंट्स) -
/static/→ CloudFront/S3 (स्थिर संपत्ती)
शोध आणि AI पायाभूत सुविधा
शोध सेवा
आम्ही शोध कार्यक्षमतेसाठी एक स्वतंत्र Flask अनुप्रयोग चालवतो. ही सेवा प्रदान करते:
-
वेक्टर शोध: संबंधित क्वेरींसाठी सिमेंटिक साम्य
-
ऑटोकंप्लीट: उपसर्ग-आधारित शोध सूचना
-
लोकप्रिय क्वेरी: सर्वाधिक शोधलेल्या संज्ञा
-
फिल्टर एक्स्ट्रॅक्शन: फॅसेट्ससाठी शोध क्वेरी पार्स करणे
शोध सेवा वापरते:
-
Valkey RediSearch: वेक्टर सिमिलॅरिटी शोध
-
SentenceTransformer: एम्बेडिंग निर्मिती
-
फ्रेज मॅपिंग्स: सबस्ट्रिंग मॅचिंगद्वारे फिल्टर एक्स्ट्रॅक्शन
AI प्रदाते
आम्ही वेगवेगळ्या कामांसाठी अनेक AI प्रदाते वापरतो:
DeepSeek
-
मॉडेल: deepseek-chat
-
वापर प्रकरणे: उत्पादन वर्णने, क्वेरी पेज सामग्री, भाषांतर
-
API: Together.ai फॉलबॅकसह DeepSeek API
-
कॅशिंग: प्रॉम्प्ट कॅशिंग कार्यक्षमतेसाठी सिस्टम प्रॉम्प्ट्स
Gemini
-
मॉडेल: Gemini (विशिष्ट मॉडेल)
-
वापर प्रकरणे: सामग्री निर्मिती
-
एकत्रीकरण: थेट API कॉल्स
Amazon Bedrock
-
मॉडेल्स: Nova Pro
-
वापर प्रकरणे: अंतर्गत चॅट
-
एकत्रीकरण: boto3 SDK
Amazon Bedrock
-
मॉडेल्स: Nova Lite
-
वापर प्रकरणे: ग्राहक चॅटबॉट
-
एकत्रीकरण: boto3 SDK
संपूर्ण विनंती प्रवाह
आमच्या पायाभूत सुविधांमधून ठराविक विनंती कशी प्रवाहित होते ते येथे आहे:
flowchart TD
A[Client Browser] -->|DNS Query| B[Route53]
B -->|IP Address| C[CloudFront]
C -->|Cache Check| D{Cache Hit?}
D -->|Yes| E[Return Cached Content]
D -->|No| F[Nginx]
F -->|Proxy| G[Gunicorn]
G -->|WSGI| H[Flask App]
H -->|Cache Check| I[Valkey]
I -->|Hit| J[Return Cached Data]
I -->|Miss| K[DynamoDB]
K -->|Query| L[Return Data]
L --> I
J --> M[Build Response]
E --> M
M --> N[Send to Client]मॉनिटरिंग आणि आरोग्य
UptimeRobot - बाह्य मॉनिटरिंग
आम्ही सर्व सार्वजनिक-मुखी एंडपॉइंट्सच्या बाह्य मॉनिटरिंगसाठी UptimeRobot वापरतो:
-
बॅकएंड सर्व्हर: बॅकएंड वेबसाइट
-
www.thinvent.in: सार्वजनिक वेबसाइट
आरोग्य तपासण्या
-
Gunicorn: systemd रीस्टार्ट व्यवस्थापित करते
-
Flask:
/healthएंडपॉइंट स्थिती परत करते -
Valkey: कनेक्शन आरोग्य मॉनिटर केले जाते
-
DynamoDB: विलंबता आणि थ्रूपुट मॉनिटर केले जाते
लॉगिंग
-
अनुप्रयोग लॉग: Gunicorn error.log
-
अॅक्सेस लॉग: Gunicorn access.log
-
ईमेल: Python ट्रेसबॅकसह गंभीर घटनांसाठी रिअल-टाइम सूचना
सारांश
आमची पायाभूत सुविधा यासाठी डिझाइन केली आहे:
-
कार्यप्रदर्शन: एकाधिक कॅशिंग स्तर, CDN, ऑप्टिमाइझ केलेल्या क्वेरी
-
स्केलेबिलिटी: ऑटो-स्केलिंग डेटाबेस, लोड बॅलन्सिंग
-
खर्च-प्रभावीता: पे-पर-यूज, डेटाबेस लोड कमी करण्यासाठी कॅशिंग
Flask, Gunicorn, Nginx, Ubuntu, DynamoDB, Valkey, CloudFront आणि UptimeRobot यांचे संयोजन आमच्या ई-कॉमर्स प्लॅटफॉर्मसाठी एक मजबूत, स्केलेबल पाया प्रदान करते.
संबंधित लेख
-
विश्लेषण आर्किटेक्चर - आमच्या संकरित विश्लेषण दृष्टीकोनाबद्दल जाणून घ्या
-
SEO पाइपलाइन - शोध क्वेरी उत्पादन पेजेसमध्ये कशा बदलतात हे समजून घ्या
-
शोध सेवा आर्किटेक्चर - आमच्या शोध पायाभूत सुविधांमध्ये खोलवर जा
-
कॅशिंग धोरण - सर्व स्तरांवर कॅशिंग एक्सप्लोर करा
-
डिप्लॉयमेंट आर्किटेक्चर - सिस्टम कशी डिप्लॉय केली जाते ते पहा
-
सुरक्षा विचार - सुरक्षा उपायांचे पुनरावलोकन करा