విస్తరణ నిర్మాణం: జీరో-డౌన్టైమ్ ప్రొడక్షన్ సిస్టమ్
ఈ వ్యాసం మేము వెబ్సైట్ను ఆటోమేటిక్ రీస్టార్ట్లు మరియు జీరో డౌన్టైమ్తో ఎలా విస్తరిస్తాము మరియు నడుపుతాము అని వివరిస్తుంది.
సమస్య: మాన్యువల్ విస్తరణ రిస్కీ
సంప్రదాయ విస్తరణకు అవసరం:
-
మాన్యువల్ సర్వర్ రీస్టార్ట్: డౌన్టైమ్ కలిగిస్తుంది
-
సేవా మానిటరింగ్: క్రాష్ల కోసం ఎవరైనా చూసుకోవాలి
-
కోడ్ నవీకరణలు: SSH యాక్సెస్ మరియు మాన్యువల్ దశలు అవసరం
-
రోల్బ్యాక్: ఏదైనా పాడైతే మాన్యువల్ ప్రక్రియ
ఇది స్కేల్ చేయదు మరియు నవీకరణల సమయంలో డౌన్టైమ్ కలిగిస్తుంది.
పరిష్కారం: సిస్టమ్డ్తో ఆటోమేటెడ్ విస్తరణ
మేము సిస్టమ్డ్ను ఉపయోగించి (చూడండి ఇన్ఫ్రాస్ట్రక్చర్ అవలోకనం) అప్లికేషన్ను నిర్వహిస్తాము:
-
ఆటో-రీస్టార్ట్: క్రాష్ లేదా కోడ్ మార్పుపై స్వయంచాలకంగా రీస్టార్ట్ అవుతుంది
-
జీరో డౌన్టైమ్: గ్రేస్ఫుల్ వర్కర్ రీస్టార్ట్లు
-
లాగింగ్: కేంద్రీకృత లాగ్ నిర్వహణ
-
ప్రాసెస్ మేనేజ్మెంట్: వర్కర్ లైఫ్సైకిల్ను నిర్వహిస్తుంది
సర్వర్ ఇన్ఫ్రాస్ట్రక్చర్
ప్రొడక్షన్ సర్వర్
ప్రొడక్షన్ సర్వర్ పబ్లిక్-ఫేసింగ్ వెబ్సైట్ను హోస్ట్ చేస్తుంది:
-
ప్రయోజనం: ఉత్పత్తి కేటలాగ్ మరియు ఇ-కామర్స్ను సర్వ్ చేసే పబ్లిక్ వెబ్సైట్
-
మాడ్యూల్: "వెబ్" మాత్రమే
-
వాతావరణం: ప్రొడక్షన్ (గునికార్న్ + సిస్టమ్డ్)
-
యాక్సెస్: పబ్లిక్ (లాగిన్ అవసరం లేదు)
అప్లికేషన్ సర్వర్
గునికార్న్
గునికార్న్ ప్రొడక్షన్ వెబ్ సర్వర్:
- మల్టీ-వర్కర్: బహుళ వర్కర్ ప్రాసెస్లు
సిస్టమ్డ్ ఇంటిగ్రేషన్
సిస్టమ్డ్ గునికార్న్ను నిర్వహిస్తుంది:
-
ఆటో-స్టార్ట్: సర్వర్ బూట్పై
-
ఆటో-రీస్టార్ట్: క్రాష్ లేదా కోడ్ మార్పుపై
-
లాగింగ్: సిస్టమ్డ్ జర్నల్ ఇంటిగ్రేషన్
-
ప్రాసెస్ మేనేజ్మెంట్: వర్కర్ లైఫ్సైకిల్
కాన్ఫిగరేషన్
ఎన్విరాన్మెంట్ కాన్ఫిగ్
కాన్ఫిగరేషన్ ఎన్విరాన్మెంట్-స్పెసిఫిక్:
-
కాన్ఫిగ్ ఫైల్స్: ఎన్విరాన్మెంట్-స్పెసిఫిక్ సెట్టింగ్లు
-
JSON ఫార్మాట్: కీ-వాల్యూ జతలు
-
ఎన్విరాన్మెంట్ వేరియబుల్స్: సీక్రెట్స్ మరియు API కీలు
-
మాడ్యూల్ ఎనేబుల్మెంట్: ఏ ఫీచర్లు లోడ్ అవుతాయో నియంత్రిస్తుంది
స్టాటిక్ ఆసెట్స్
స్టాటిక్ ఆసెట్స్ S3 నుండి క్లౌడ్ఫ్రంట్ CDNతో సర్వ్ చేయబడతాయి:
-
S3 బకెట్: స్టాటిక్ ఫైల్ల కోసం ఆబ్జెక్ట్ స్టోరేజ్
-
క్లౌడ్ఫ్రంట్: గ్లోబల్ ఆసెట్ డెలివరీ కోసం CDN
-
క్యాచింగ్: స్టాటిక్ కంటెంట్ కోసం పొడవైన TTL
-
వెర్షనింగ్: వెర్షన్ నంబర్లతో క్యాష్-బస్టింగ్
విస్తరణ ప్రక్రియ
కోడ్ విస్తరణ
కోడ్ గిట్ ద్వారా విస్తరించబడుతుంది, సిస్టమ్డ్ అప్లికేషన్ సేవను నిర్వహిస్తుంది:
- కమిట్ మరియు పుష్: మార్పులు గిట్ రిపోజిటరీకి పుష్ చేయబడతాయి
- సర్వర్పుల్ పుల్: కోడ్ ప్రొడక్షన్ సర్వర్కు పుల్ చేయబడుతుంది
- సిస్టమ్డ్ రీస్టార్ట్: క్రాష్ అయినప్పుడు సేవ స్వయంచాలకంగా రీస్టార్ట్ అవుతుంది
కాన్ఫిగరేషన్ విస్తరణ
కాన్ఫిగరేషన్ కోడ్ నుండి విడిగా నిర్వహించబడుతుంది:
- కాన్ఫిగ్ ఫైల్స్: గిట్లో JSON కాన్ఫిగరేషన్ ఫైల్స్
- ఎన్విరాన్మెంట్ వేరియబుల్స్: ఎన్విరాన్మెంట్ నుండి లోడ్ చేయబడిన సీక్రెట్స్
- మాడ్యూల్ ఎనేబుల్మెంట్: ఏ ఫీచర్లు లోడ్ అవుతాయో నియంత్రిస్తుంది
మానిటరింగ్
హెల్త్ చెక్లు
హెల్త్ ఎండ్పాయింట్లు సర్వర్ స్థితిని మానిటర్ చేస్తాయి:
-
హెల్త్ ఎండ్పాయింట్: బేసిక్ హెల్త్ చెక్
-
డేటాబేస్ చెక్: డేటాబేస్ కనెక్టివిటీ
-
క్యాష్ చెక్: క్యాష్ కనెక్టివిటీ
లాగింగ్
లాగ్లు బహుళ స్థానాల్లో నిల్వ చేయబడతాయి:
-
గునికార్న్ ఎర్రర్ లాగ్లు: అప్లికేషన్ ఎర్రర్లు
-
గునికార్న్ యాక్సెస్ లాగ్లు: HTTP రిక్వెస్ట్లు
-
సేవా లాగ్లు: సిస్టమ్డ్ జర్నల్
సారాంశం
విస్తరణ నిర్మాణం అందిస్తుంది:
-
గునికార్న్: ప్రొడక్షన్ WSGI సర్వర్
-
సిస్టమ్డ్: ఆటో-రీస్టార్ట్ మరియు ప్రాసెస్ మేనేజ్మెంట్
-
గిట్ విస్తరణ: కోడ్ మరియు కాన్ఫిగ్ మేనేజ్మెంట్
-
S3 + క్లౌడ్ఫ్రంట్: స్టాటిక్ ఆసెట్ డెలివరీ
-
హెల్త్ మానిటరింగ్: హెల్త్ చెక్ ఎండ్పాయింట్లు
-
లాగింగ్: ఎర్రర్ మరియు యాక్సెస్ లాగ్లు