मल्टी-सर्व्हर आर्किटेक्चर: चिंतेचे विभाजन
हा लेख आमची इन्फ्रास्ट्रक्चर चिंतेचे विभाजन या पद्धतीचा वापर करून विशेषीकृत सर्व्हर्सद्वारे स्केलेबिलिटी, रिलायबिलिटी आणि परफॉर्मन्स कशी प्राप्त करते हे स्पष्ट करतो.
समस्या: मोनोलिथिक सर्व्हरच्या मर्यादा
सर्व काही एकाच सर्व्हरवर चालवल्याने होते:
-
संसाधन स्पर्धा: वेब सर्व्हर सर्च सर्व्हिससोबत CPU/मेमरीसाठी स्पर्धा करतो
-
स्केलिंगची अडचण: घटक स्वतंत्रपणे स्केल करता येत नाहीत
-
एकल बिंदू अपयश: एक सर्व्हर डाउन = संपूर्ण सिस्टीम डाउन
-
खर्चाची अकार्यक्षमता: वर्कलोडनुसार इन्स्टन्स प्रकार ऑप्टिमाइझ करता येत नाहीत
-
डेप्लॉयमेंट जोखीम: एका घटकाचे डेप्लॉयमेंट इतर सर्वांवर परिणाम करते
आम्हाला अनेक सर्व्हर्सवर चिंतेचे विभाजन आवश्यक आहे.
उपाय: विशेषीकृत सर्व्हर भूमिका
आम्ही विशेषीकृत सर्व्हर्स चालवतो, प्रत्येक त्याच्या वर्कलोडसाठी ऑप्टिमाइझ केलेले:
graph TB
subgraph prod[प्रोडक्शन ERP सर्व्हर]
erp[अंतर्गत व्यवस्थापन
HR, वित्त, उत्पादन
24/7 अपटाइम
सामायिक स्टोरेज आणि ईमेल]
end
subgraph web[पब्लिक वेबसाइट सर्व्हर]
www[पब्लिक वेबसाइट
उत्पादन कॅटलॉग, ब्लॉग
24/7 अपटाइम
CDN मागे]
end
subgraph dev[डेव्हलपमेंट/स्टेजिंग सर्व्हर]
devenv[डेव्ह आणि स्टेजिंग
ईमेल मोहिमा
रात्री/आठवड्याच्या शेवटी बंद]
end
subgraph search[सर्च सर्व्हिस सर्व्हर]
searchsvc[वेक्टर शोध
फिल्टर एक्सट्रॅक्शन
संबंधित शोध
24/7 अपटाइम]
end
subgraph cache[कॅश सर्व्हर - Valkey]
valkey[RediSearch अनुक्रमणिका
क्वेरी एम्बेडिंग्ज
ऑटोकंप्लीट
24/7 अपटाइम]
end
www --> searchsvc
searchsvc --> valkeyस्वतंत्र सर्व्हर्स का?
१. संसाधन वेगळेपणा
प्रत्येक सर्व्हर एक प्रकारचा वर्कलोड चालवतो:
वेब सर्व्हर: HTTP विनंती हाताळण्यासाठी ऑप्टिमाइझ केलेले
-
उच्च नेटवर्क बँडविड्थ
-
मध्यम CPU
-
मध्यम मेमरी
-
कॅशिंगसाठी जलद डिस्क
सर्च सर्व्हिस: वेक्टर ऑपरेशन्ससाठी ऑप्टिमाइझ केलेले
-
उच्च CPU (कोसाइन समानता)
-
उच्च मेमरी (एम्बेडिंग कॅश)
-
कमी डिस्क I/O
कॅश सर्व्हर: मेमरी ॲक्सेससाठी ऑप्टिमाइझ केलेले
-
अतिशय उच्च मेमरी
-
कमी CPU
-
जलद नेटवर्क
फायदा: वर्कलोड्स दरम्यान संसाधन स्पर्धा नाही.
२. स्वतंत्र स्केलिंग
आम्ही प्रत्येक घटक स्वतंत्रपणे स्केल करू शकतो:
-
उच्च ट्रॅफिक? लोड बॅलन्सर मागे अधिक वेब सर्व्हर्स जोडा.
-
स्लो सर्च? सर्च सर्व्हर CPU अपग्रेड करा किंवा रेप्लिका जोडा.
-
कॅश मिसेस? कॅश सर्व्हर मेमरी वाढवा.
-
फायदा: फक्त जे स्केल करायचे आहे ते स्केल करा, सर्व काही नाही.
३. अपयश वेगळेपणा
अपयश कोंबले जातात:
सर्च सर्व्हिस डाउन? वेबसाइट अजूनही कॅश केलेले निकाल देत राहते.
कॅश सर्व्हर डाउन? सर्च सर्व्हिस कॅशशिवाय गणना करते (स्लो पण कार्यरत).
वेब सर्व्हर डाउन? अंतर्गत ERP अप्रभावित.
फायदा: आंशिक अपयश संपूर्ण सिस्टीमपर्यंत पसरत नाहीत.
४. डेप्लॉयमेंट सुरक्षितता
आम्ही वातावरणांमधून डेप्लॉय करतो:
डेव्हलपमेंट → डीबग टूल्ससह बदलांची चाचणी
स्टेजिंग → प्रोडक्शन-सारख्या वातावरणात चाचणी
प्रोडक्शन → आत्मविश्वासाने डेप्लॉय
फायदा: वापरकर्त्यांपर्यंत पोहोचण्यापूर्वी समस्या शोधा.
५. खर्च ऑप्टिमायझेशन
आम्ही प्रति सर्व्हर खर्च ऑप्टिमाइझ करतो:
-
डेव्हलपमेंट सर्व्हर: रात्री/आठवड्याच्या शेवटी बंद (५०% खर्च कपात)
-
IPv6-फक्त सर्व्हर्स: इलास्टिक IP खर्च नाही (प्रति इन्स्टन्स $५/महिना बचत)
-
योग्य आकाराची इन्स्टन्सेस: प्रति वर्कलोड आवश्यक असलेल्या संसाधनांसाठीच पैसे द्या
-
फायदा: परफॉर्मन्सचा त्याग न करता कमी इन्फ्रास्ट्रक्चर खर्च.
सर्व्हर्स दरम्यान डेटा प्रवाह
डेटा कसा वाहतो हे समजून घेतल्याने विभाजन का महत्त्वाचे आहे हे स्पष्ट होते:
वापरकर्ता विनंती प्रवाह
उत्पादन पृष्ठ विनंती:
sequenceDiagram
participant User
participant CDN
participant Web as Web Server
participant Search as Search Service
participant Cache as Cache Server
User->>CDN: उत्पादन पृष्ठाची विनंती
CDN->>CDN: कॅश तपासा
alt Cache hit
CDN->>User: कॅश केलेले पृष्ठ द्या
else Cache miss
CDN->>Web: विनंती पुढे करा
Web->>Search: संबंधित उत्पादने मिळवा
Search->>Cache: क्वेरी एम्बेडिंग्ज
Cache->>Search: निकाल परत करा
Search->>Web: संबंधित उत्पादने
Web->>CDN: रेंडर केलेले पृष्ठ
CDN->>CDN: प्रतिसाद कॅश करा
CDN->>User: पृष्ठ द्या
endशोध क्वेरी प्रवाह:
sequenceDiagram
participant User
participant Web as Web Server
participant Search as Search Service
participant Cache as Cache Server
User->>Web: शोध क्वेरी सबमिट करा
Web->>Search: क्वेरी पुढे करा
Search->>Search: फिल्टर्स काढा
Search->>Search: एम्बेडिंगची गणना करा
Search->>Cache: वेक्टर शोध
Cache->>Search: रँक केलेले निकाल
Search->>Web: उत्पादन जुळणी
Web->>User: निकाल रेंडर कराफायदा: प्रत्येक सर्व्हर ज्यासाठी ऑप्टिमाइझ केलेले आहे ते करते.
प्रति सर्व्हर स्टोरेज धोरण
वेगवेगळ्या सर्व्हर्स वेगवेगळी स्टोरेज धोरणे वापरतात:
वेब सर्व्हर
S3-बॅक्ड स्टॅटिक फाइल्स: S3 वरून दिलेल्या प्रतिमा, CSS, JS
-
उच्च उपलब्धता
-
स्थानिक डिस्क वापर नाही
-
CDN-फ्रेंडली
स्थानिक कॅश: रेंडर केलेली पृष्ठे Nginx कॅश करते
-
वारंवार ॲक्सेससाठी जलद
-
स्वयंचलित अवैधता
सर्च सर्व्हिस
NumPy अॅरे: उत्पादन एम्बेडिंग्ज बायनरी अॅरे म्हणून स्टोअर केलेले
-
जलद वेक्टर ऑपरेशन्स
-
कार्यक्षमतेसाठी मेमरी-मॅप केलेले
-
६५K उत्पादने × ७६८ परिमाणे = ~१९० MB
JSON फाइल्स: फिल्टर मॅपिंग्ज, फ्रेझ टेबल्स
-
मानवी-वाचनीय
-
अपडेट करणे सोपे
-
लहान आकार (<१० MB)
कॅश सर्व्हर
Valkey (Redis): क्वेरी एम्बेडिंग्ज, लोकप्रिय क्वेरीज, ऑटोकंप्लीट
-
गतीसाठी इन-मेमरी
-
वेक्टर अनुक्रमणिकांसाठी RediSearch
-
टिकाऊपणासाठी स्थायित्व
वेगवेगळे स्टोरेज का?
-
NumPy: वेक्टर मॅथसाठी ऑप्टिमाइझ केलेले (कोसाइन समानता)
-
JSON: मानवी संपादनासाठी ऑप्टिमाइझ केलेले (फिल्टर नियम)
-
Valkey: की-व्हॅल्यू लुकअपसाठी ऑप्टिमाइझ केलेले (क्वेरी कॅश)
CDN आर्किटेक्चर
पब्लिक वेबसाइट कंटेंट डिलिव्हरी नेटवर्क मागे बसते:
काय कॅश केले जाते
स्टॅटिक अॅसेट्स (लांब TTL):
-
प्रतिमा, CSS, जावास्क्रिप्ट
-
फॉन्ट्स, चिन्हे
-
१ वर्षासाठी कॅश केलेले
उत्पादन पृष्ठे (मध्यम TTL):
-
उत्पादन वर्णने
-
तपशील
-
१ तासासाठी कॅश केलेले
क्वेरी पृष्ठे (लहान TTL):
-
शोध निकाल
-
फिल्टर संयोजने
-
५ मिनिटांसाठी कॅश केलेले
कॅश केलेले नाही:
-
वापरकर्ता-विशिष्ट मजकूर
-
API एंडपॉइंट्स
-
डायनॅमिक शोध
CDN का महत्त्वाचे आहे
-
ग्लोबल लेटन्सी: एज लोकेशन्स वापरकर्त्यांच्या जवळ मजकूर देतात
-
ओरिजिन संरक्षण: CDN ट्रॅफिक स्पाईक शोषून घेते, ओरिजिन सर्व्हरचे संरक्षण करते
-
DDoS शमन: CDN दुर्भावनापूर्ण ट्रॅफिक ओरिजिनपर्यंत पोहोचण्यापूर्वी फिल्टर करते
-
खर्च कपात: कमी ओरिजिन विनंती = कमी कॉम्प्युट खर्च
डेप्लॉयमेंट पाइपलाइन
आम्ही वातावरणांमधून डेप्लॉय करतो जेणेकरून समस्या लवकर शोधता येतील:
डेव्हलपमेंट वातावरण
उद्देश: डीबग टूल्ससह द्रुत पुनरावृत्ती वैशिष्ट्ये:
-
कोड बदलांवर स्वयं-रीलोड
-
तपशीलवार त्रुटी पृष्ठे
-
डीबग टूलबार
-
कॅशिंग नाही
फायदा: डेव्हलपर्ससाठी द्रुत फीडबॅक लूप.
स्टेजिंग वातावरण
उद्देश: प्रोडक्शन-सारखी चाचणी वैशिष्ट्ये:
-
प्रोडक्शन सारखेच कॉन्फिगरेशन
-
प्रोडक्शन सारखीच सर्व्हर सेटअप (Gunicorn, Nginx)
-
प्रोडक्शन सारखेच कॅशिंग वर्तन
-
प्र