डेप्लॉयमेंट आर्किटेक्चर: शून्य-डाउनटाइम प्रोडक्शन सिस्टम
हा लेख आम्ही वेबसाइट स्वयंचलित रीस्टार्टसह आणि शून्य डाउनटाइमसह कसा डेप्लॉय करतो आणि चालवतो हे स्पष्ट करतो.
समस्या: मॅन्युअल डेप्लॉयमेंट धोकादायक आहे
पारंपारिक डेप्लॉयमेंटसाठी आवश्यक असते:
-
मॅन्युअल सर्व्हर रीस्टार्ट: डाउनटाइम निर्माण करतो
-
सेवा मॉनिटरिंग: क्रॅशसाठी कोणीतरी पहारा द्यावा लागतो
-
कोड अपडेट्स: SSH प्रवेश आणि मॅन्युअल चरणांची आवश्यकता
-
रोलबॅक: काहीतरी बिघडल्यास मॅन्युअल प्रक्रिया
हे स्केल करत नाही आणि अपडेट्स दरम्यान डाउनटाइम निर्माण करते.
उपाय: सिस्टमडीसह स्वयंचलित डेप्लॉयमेंट
आम्ही अॅप्लिकेशन व्यवस्थापित करण्यासाठी सिस्टमडी वापरतो (इन्फ्रास्ट्रक्चर विहंगावलोकन पहा):
-
स्वयं-रीस्टार्ट: क्रॅश किंवा कोड बदलावर आपोआप रीस्टार्ट
-
शून्य डाउनटाइम: वर्कर्सचा सौम्य रीस्टार्ट
-
लॉगिंग: केंद्रीकृत लॉग व्यवस्थापन
-
प्रक्रिया व्यवस्थापन: वर्कर लाइफसायकल हाताळते
सर्व्हर इन्फ्रास्ट्रक्चर
प्रोडक्शन सर्व्हर
प्रोडक्शन सर्व्हर सार्वजनिक वेबसाइट होस्ट करतो:
-
उद्देश: उत्पादन कॅटलॉग आणि ई-कॉमर्स सेवा देणारी सार्वजनिक वेबसाइट
-
मॉड्यूल: फक्त "वेब"
-
वातावरण: प्रोडक्शन (गुनीकॉर्न + सिस्टमडी)
-
प्रवेश: सार्वजनिक (लॉगिन आवश्यक नाही)
अॅप्लिकेशन सर्व्हर
गुनीकॉर्न
गुनीकॉर्न हा प्रोडक्शन वेब सर्व्हर आहे:
- मल्टी-वर्कर: एकाधिक वर्कर प्रक्रिया
सिस्टमडी एकत्रीकरण
सिस्टमडी गुनीकॉर्नचे व्यवस्थापन करते:
-
स्वयं-प्रारंभ: सर्व्हर बूट वर
-
स्वयं-रीस्टार्ट: क्रॅश किंवा कोड बदलावर
-
लॉगिंग: सिस्टमडी जर्नल एकत्रीकरण
-
प्रक्रिया व्यवस्थापन: वर्कर लाइफसायकल
कॉन्फिगरेशन
वातावरण कॉन्फिग
कॉन्फिगरेशन वातावरण-विशिष्ट आहे:
-
कॉन्फिग फाइल्स: वातावरण-विशिष्ट सेटिंग्ज
-
JSON फॉरमॅट: की-व्हॅल्यू जोड्या
-
वातावरण चल: गुपिते आणि API की
-
मॉड्यूल सक्षमीकरण: कोणते फीचर्स लोड होतील हे नियंत्रित करते
स्थिर संसाधने
स्थिर संसाधने S3 वरून क्लाउडफ्रंट CDN द्वारे दिली जातात:
-
S3 बकेट: स्थिर फाइल्ससाठी ऑब्जेक्ट स्टोरेज
-
क्लाउडफ्रंट: जागतिक संसाधन वितरणासाठी CDN
-
कॅशिंग: स्थिर मजकूरासाठी लांब TTL
-
व्हर्शनिंग: व्हर्शन नंबरसह कॅश-बस्टिंग
डेप्लॉयमेंट प्रक्रिया
कोड डेप्लॉयमेंट
कोड गिटद्वारे डेप्लॉय केला जातो, अॅप्लिकेशन सेवा सिस्टमडीद्वारे व्यवस्थापित केली जाते:
- कमिट आणि पुश: बदल गिट रिपॉझिटरीमध्ये पुश केले
- सर्व्हरवर पुल: कोड प्रोडक्शन सर्व्हरवर पुल केला
- सिस्टमडी रीस्टार्ट: सेवा क्रॅश झाल्यास आपोआप रीस्टार्ट होते
कॉन्फिगरेशन डेप्लॉयमेंट
कॉन्फिगरेशन कोडपासून वेगळे व्यवस्थापित केले जाते:
- कॉन्फिग फाइल्स: गिटमधील JSON कॉन्फिगरेशन फाइल्स
- वातावरण चल: वातावरणातून लोड केलेली गुपिते
- मॉड्यूल सक्षमीकरण: कोणते फीचर्स लोड होतील हे नियंत्रित करते
मॉनिटरिंग
हेल्थ चेक्स
हेल्थ एंडपॉइंट्स सर्व्हर स्थितीचे मॉनिटरिंग करतात:
-
हेल्थ एंडपॉइंट: मूलभूत हेल्थ चेक
-
डेटाबेस चेक: डेटाबेस कनेक्टिव्हिटी
-
कॅश चेक: कॅश कनेक्टिव्हिटी
लॉगिंग
लॉग्स एकाधिक ठिकाणी संग्रहित केले जातात:
-
गुनीकॉर्न एरर लॉग्स: अॅप्लिकेशन एरर्स
-
गुनीकॉर्न ॲक्सेस लॉग्स: HTTP विनंत्या
-
सेवा लॉग्स: सिस्टमडी जर्नल
सारांश
डेप्लॉयमेंट आर्किटेक्चर पुरवते:
-
गुनीकॉर्न: प्रोडक्शन WSGI सर्व्हर
-
सिस्टमडी: स्वयं-रीस्टार्ट आणि प्रक्रिया व्यवस्थापन
-
गिट डेप्लॉयमेंट: कोड आणि कॉन्फिग व्यवस्थापन
-
S3 + क्लाउडफ्रंट: स्थिर संसाधन वितरण
-
हेल्थ मॉनिटरिंग: हेल्थ चेक एंडपॉइंट्स
-
लॉगिंग: एरर आणि ॲक्सेस लॉग्स