విస్తరణ నిర్మాణం: జీరో-డౌన్టైమ్ ప్రొడక్షన్ సిస్టమ్

ఈ వ్యాసం మేము వెబ్‌సైట్‌ను ఆటోమేటిక్ రీస్టార్ట్‌లు మరియు జీరో డౌన్‌టైమ్‌తో ఎలా విస్తరిస్తాము మరియు నడుపుతాము అని వివరిస్తుంది.

సమస్య: మాన్యువల్ విస్తరణ రిస్కీ

సంప్రదాయ విస్తరణకు అవసరం:

  • మాన్యువల్ సర్వర్ రీస్టార్ట్: డౌన్‌టైమ్ కలిగిస్తుంది

  • సేవా మానిటరింగ్: క్రాష్‌ల కోసం ఎవరైనా చూసుకోవాలి

  • కోడ్ నవీకరణలు: SSH యాక్సెస్ మరియు మాన్యువల్ దశలు అవసరం

  • రోల్‌బ్యాక్: ఏదైనా పాడైతే మాన్యువల్ ప్రక్రియ

ఇది స్కేల్ చేయదు మరియు నవీకరణల సమయంలో డౌన్‌టైమ్ కలిగిస్తుంది.

పరిష్కారం: సిస్టమ్డ్‌తో ఆటోమేటెడ్ విస్తరణ

మేము సిస్టమ్డ్‌ను ఉపయోగించి (చూడండి ఇన్ఫ్రాస్ట్రక్చర్ అవలోకనం) అప్లికేషన్‌ను నిర్వహిస్తాము:

  • ఆటో-రీస్టార్ట్: క్రాష్ లేదా కోడ్ మార్పుపై స్వయంచాలకంగా రీస్టార్ట్ అవుతుంది

  • జీరో డౌన్‌టైమ్: గ్రేస్‌ఫుల్ వర్కర్ రీస్టార్ట్‌లు

  • లాగింగ్: కేంద్రీకృత లాగ్ నిర్వహణ

  • ప్రాసెస్ మేనేజ్‌మెంట్: వర్కర్ లైఫ్‌సైకిల్‌ను నిర్వహిస్తుంది

సర్వర్ ఇన్ఫ్రాస్ట్రక్చర్

ప్రొడక్షన్ సర్వర్

ప్రొడక్షన్ సర్వర్ పబ్లిక్-ఫేసింగ్ వెబ్‌సైట్‌ను హోస్ట్ చేస్తుంది:

  • ప్రయోజనం: ఉత్పత్తి కేటలాగ్ మరియు ఇ-కామర్స్‌ను సర్వ్ చేసే పబ్లిక్ వెబ్‌సైట్

  • మాడ్యూల్: "వెబ్" మాత్రమే

  • వాతావరణం: ప్రొడక్షన్ (గునికార్న్ + సిస్టమ్డ్)

  • యాక్సెస్: పబ్లిక్ (లాగిన్ అవసరం లేదు)

అప్లికేషన్ సర్వర్

గునికార్న్

గునికార్న్ ప్రొడక్షన్ వెబ్ సర్వర్:

  • మల్టీ-వర్కర్: బహుళ వర్కర్ ప్రాసెస్‌లు

సిస్టమ్డ్ ఇంటిగ్రేషన్

సిస్టమ్డ్ గునికార్న్‌ను నిర్వహిస్తుంది:

  • ఆటో-స్టార్ట్: సర్వర్ బూట్‌పై

  • ఆటో-రీస్టార్ట్: క్రాష్ లేదా కోడ్ మార్పుపై

  • లాగింగ్: సిస్టమ్డ్ జర్నల్ ఇంటిగ్రేషన్

  • ప్రాసెస్ మేనేజ్‌మెంట్: వర్కర్ లైఫ్‌సైకిల్

కాన్ఫిగరేషన్

ఎన్విరాన్‌మెంట్ కాన్ఫిగ్

కాన్ఫిగరేషన్ ఎన్విరాన్‌మెంట్-స్పెసిఫిక్:

  • కాన్ఫిగ్ ఫైల్స్: ఎన్విరాన్‌మెంట్-స్పెసిఫిక్ సెట్టింగ్‌లు

  • JSON ఫార్మాట్: కీ-వాల్యూ జతలు

  • ఎన్విరాన్‌మెంట్ వేరియబుల్స్: సీక్రెట్స్ మరియు API కీలు

  • మాడ్యూల్ ఎనేబుల్‌మెంట్: ఏ ఫీచర్‌లు లోడ్ అవుతాయో నియంత్రిస్తుంది

స్టాటిక్ ఆసెట్స్

స్టాటిక్ ఆసెట్స్ S3 నుండి క్లౌడ్‌ఫ్రంట్ CDNతో సర్వ్ చేయబడతాయి:

  • S3 బకెట్: స్టాటిక్ ఫైల్‌ల కోసం ఆబ్జెక్ట్ స్టోరేజ్

  • క్లౌడ్‌ఫ్రంట్: గ్లోబల్ ఆసెట్ డెలివరీ కోసం CDN

  • క్యాచింగ్: స్టాటిక్ కంటెంట్ కోసం పొడవైన TTL

  • వెర్షనింగ్: వెర్షన్ నంబర్‌లతో క్యాష్-బస్టింగ్

విస్తరణ ప్రక్రియ

కోడ్ విస్తరణ

కోడ్ గిట్ ద్వారా విస్తరించబడుతుంది, సిస్టమ్డ్ అప్లికేషన్ సేవను నిర్వహిస్తుంది:

  1. కమిట్ మరియు పుష్: మార్పులు గిట్ రిపోజిటరీకి పుష్ చేయబడతాయి
  2. సర్వర్‌పుల్ పుల్: కోడ్ ప్రొడక్షన్ సర్వర్‌కు పుల్ చేయబడుతుంది
  3. సిస్టమ్డ్ రీస్టార్ట్: క్రాష్ అయినప్పుడు సేవ స్వయంచాలకంగా రీస్టార్ట్ అవుతుంది

కాన్ఫిగరేషన్ విస్తరణ

కాన్ఫిగరేషన్ కోడ్ నుండి విడిగా నిర్వహించబడుతుంది:

  1. కాన్ఫిగ్ ఫైల్స్: గిట్‌లో JSON కాన్ఫిగరేషన్ ఫైల్స్
  2. ఎన్విరాన్‌మెంట్ వేరియబుల్స్: ఎన్విరాన్‌మెంట్ నుండి లోడ్ చేయబడిన సీక్రెట్స్
  3. మాడ్యూల్ ఎనేబుల్‌మెంట్: ఏ ఫీచర్‌లు లోడ్ అవుతాయో నియంత్రిస్తుంది

మానిటరింగ్

హెల్త్ చెక్‌లు

హెల్త్ ఎండ్‌పాయింట్‌లు సర్వర్ స్థితిని మానిటర్ చేస్తాయి:

  • హెల్త్ ఎండ్‌పాయింట్: బేసిక్ హెల్త్ చెక్

  • డేటాబేస్ చెక్: డేటాబేస్ కనెక్టివిటీ

  • క్యాష్ చెక్: క్యాష్ కనెక్టివిటీ

లాగింగ్

లాగ్‌లు బహుళ స్థానాల్లో నిల్వ చేయబడతాయి:

  • గునికార్న్ ఎర్రర్ లాగ్‌లు: అప్లికేషన్ ఎర్రర్‌లు

  • గునికార్న్ యాక్సెస్ లాగ్‌లు: HTTP రిక్వెస్ట్‌లు

  • సేవా లాగ్‌లు: సిస్టమ్డ్ జర్నల్

సారాంశం

విస్తరణ నిర్మాణం అందిస్తుంది:

  • గునికార్న్: ప్రొడక్షన్ WSGI సర్వర్

  • సిస్టమ్డ్: ఆటో-రీస్టార్ట్ మరియు ప్రాసెస్ మేనేజ్‌మెంట్

  • గిట్ విస్తరణ: కోడ్ మరియు కాన్ఫిగ్ మేనేజ్‌మెంట్

  • S3 + క్లౌడ్‌ఫ్రంట్: స్టాటిక్ ఆసెట్ డెలివరీ

  • హెల్త్ మానిటరింగ్: హెల్త్ చెక్ ఎండ్‌పాయింట్‌లు

  • లాగింగ్: ఎర్రర్ మరియు యాక్సెస్ లాగ్‌లు