डेप्लॉयमेंट आर्किटेक्चर: शून्य-डाउनटाइम प्रोडक्शन सिस्टम

हा लेख आम्ही वेबसाइट स्वयंचलित रीस्टार्टसह आणि शून्य डाउनटाइमसह कसा डेप्लॉय करतो आणि चालवतो हे स्पष्ट करतो.

समस्या: मॅन्युअल डेप्लॉयमेंट धोकादायक आहे

पारंपारिक डेप्लॉयमेंटसाठी आवश्यक असते:

  • मॅन्युअल सर्व्हर रीस्टार्ट: डाउनटाइम निर्माण करतो

  • सेवा मॉनिटरिंग: क्रॅशसाठी कोणीतरी पहारा द्यावा लागतो

  • कोड अपडेट्स: SSH प्रवेश आणि मॅन्युअल चरणांची आवश्यकता

  • रोलबॅक: काहीतरी बिघडल्यास मॅन्युअल प्रक्रिया

हे स्केल करत नाही आणि अपडेट्स दरम्यान डाउनटाइम निर्माण करते.

उपाय: सिस्टमडीसह स्वयंचलित डेप्लॉयमेंट

आम्ही अॅप्लिकेशन व्यवस्थापित करण्यासाठी सिस्टमडी वापरतो (इन्फ्रास्ट्रक्चर विहंगावलोकन पहा):

  • स्वयं-रीस्टार्ट: क्रॅश किंवा कोड बदलावर आपोआप रीस्टार्ट

  • शून्य डाउनटाइम: वर्कर्सचा सौम्य रीस्टार्ट

  • लॉगिंग: केंद्रीकृत लॉग व्यवस्थापन

  • प्रक्रिया व्यवस्थापन: वर्कर लाइफसायकल हाताळते

सर्व्हर इन्फ्रास्ट्रक्चर

प्रोडक्शन सर्व्हर

प्रोडक्शन सर्व्हर सार्वजनिक वेबसाइट होस्ट करतो:

  • उद्देश: उत्पादन कॅटलॉग आणि ई-कॉमर्स सेवा देणारी सार्वजनिक वेबसाइट

  • मॉड्यूल: फक्त "वेब"

  • वातावरण: प्रोडक्शन (गुनीकॉर्न + सिस्टमडी)

  • प्रवेश: सार्वजनिक (लॉगिन आवश्यक नाही)

अॅप्लिकेशन सर्व्हर

गुनीकॉर्न

गुनीकॉर्न हा प्रोडक्शन वेब सर्व्हर आहे:

  • मल्टी-वर्कर: एकाधिक वर्कर प्रक्रिया

सिस्टमडी एकत्रीकरण

सिस्टमडी गुनीकॉर्नचे व्यवस्थापन करते:

  • स्वयं-प्रारंभ: सर्व्हर बूट वर

  • स्वयं-रीस्टार्ट: क्रॅश किंवा कोड बदलावर

  • लॉगिंग: सिस्टमडी जर्नल एकत्रीकरण

  • प्रक्रिया व्यवस्थापन: वर्कर लाइफसायकल

कॉन्फिगरेशन

वातावरण कॉन्फिग

कॉन्फिगरेशन वातावरण-विशिष्ट आहे:

  • कॉन्फिग फाइल्स: वातावरण-विशिष्ट सेटिंग्ज

  • JSON फॉरमॅट: की-व्हॅल्यू जोड्या

  • वातावरण चल: गुपिते आणि API की

  • मॉड्यूल सक्षमीकरण: कोणते फीचर्स लोड होतील हे नियंत्रित करते

स्थिर संसाधने

स्थिर संसाधने S3 वरून क्लाउडफ्रंट CDN द्वारे दिली जातात:

  • S3 बकेट: स्थिर फाइल्ससाठी ऑब्जेक्ट स्टोरेज

  • क्लाउडफ्रंट: जागतिक संसाधन वितरणासाठी CDN

  • कॅशिंग: स्थिर मजकूरासाठी लांब TTL

  • व्हर्शनिंग: व्हर्शन नंबरसह कॅश-बस्टिंग

डेप्लॉयमेंट प्रक्रिया

कोड डेप्लॉयमेंट

कोड गिटद्वारे डेप्लॉय केला जातो, अॅप्लिकेशन सेवा सिस्टमडीद्वारे व्यवस्थापित केली जाते:

  1. कमिट आणि पुश: बदल गिट रिपॉझिटरीमध्ये पुश केले
  2. सर्व्हरवर पुल: कोड प्रोडक्शन सर्व्हरवर पुल केला
  3. सिस्टमडी रीस्टार्ट: सेवा क्रॅश झाल्यास आपोआप रीस्टार्ट होते

कॉन्फिगरेशन डेप्लॉयमेंट

कॉन्फिगरेशन कोडपासून वेगळे व्यवस्थापित केले जाते:

  1. कॉन्फिग फाइल्स: गिटमधील JSON कॉन्फिगरेशन फाइल्स
  2. वातावरण चल: वातावरणातून लोड केलेली गुपिते
  3. मॉड्यूल सक्षमीकरण: कोणते फीचर्स लोड होतील हे नियंत्रित करते

मॉनिटरिंग

हेल्थ चेक्स

हेल्थ एंडपॉइंट्स सर्व्हर स्थितीचे मॉनिटरिंग करतात:

  • हेल्थ एंडपॉइंट: मूलभूत हेल्थ चेक

  • डेटाबेस चेक: डेटाबेस कनेक्टिव्हिटी

  • कॅश चेक: कॅश कनेक्टिव्हिटी

लॉगिंग

लॉग्स एकाधिक ठिकाणी संग्रहित केले जातात:

  • गुनीकॉर्न एरर लॉग्स: अॅप्लिकेशन एरर्स

  • गुनीकॉर्न ॲक्सेस लॉग्स: HTTP विनंत्या

  • सेवा लॉग्स: सिस्टमडी जर्नल

सारांश

डेप्लॉयमेंट आर्किटेक्चर पुरवते:

  • गुनीकॉर्न: प्रोडक्शन WSGI सर्व्हर

  • सिस्टमडी: स्वयं-रीस्टार्ट आणि प्रक्रिया व्यवस्थापन

  • गिट डेप्लॉयमेंट: कोड आणि कॉन्फिग व्यवस्थापन

  • S3 + क्लाउडफ्रंट: स्थिर संसाधन वितरण

  • हेल्थ मॉनिटरिंग: हेल्थ चेक एंडपॉइंट्स

  • लॉगिंग: एरर आणि ॲक्सेस लॉग्स