మౌలిక సదుపాయాల విహంగావలోకనం
ఈ వ్యాసం థిన్వెంట్ పబ్లిక్ వెబ్సైట్ను నడిపించే మౌలిక సదుపాయాలపై సమగ్రమైన విహంగావలోకనాన్ని అందిస్తుంది. వెబ్ సర్వర్ నుండి డేటాబేస్ లేయర్ వరకు మొత్తం టెక్నాలజీ స్టాక్ను మేము కవర్ చేస్తాము మరియు వేగవంతమైన, విశ్వసనీయమైన మరియు స్కేలబుల్ ఇ-కామర్స్ అనుభవాన్ని అందించడానికి అన్ని భాగాలు ఎలా కలిసి పనిచేస్తాయో వివరిస్తాము.
వెబ్ అప్లికేషన్ స్టాక్
ఫ్లాస్క్ - పునాది
మా వెబ్సైట్ Flask పై నిర్మించబడింది, ఇది ఒక లైట్వెయిట్ మరియు ఫ్లెక్సిబుల్ పైథాన్ వెబ్ ఫ్రేమ్వర్క్. ఫ్లాస్క్ కోర్ రూటింగ్, రిక్వెస్ట్/రెస్పాన్స్ హ్యాండ్లింగ్ మరియు మా అప్లికేషన్ను మాడ్యులర్ భాగాలుగా నిర్వహించే బ్లూప్రింట్ సిస్టమ్ను అందిస్తుంది.
మేము ఉపయోగించే కీ ఫ్లాస్క్ లక్షణాలు:
-
బ్లూప్రింట్స్: అప్లికేషన్ను లాజికల్ మాడ్యూళ్ళుగా నిర్వహించడం (వెబ్, api, కార్ట్, ప్రోడక్ట్ మొదలైనవి)
-
జింజా2 టెంప్లేటింగ్: టెంప్లేట్ ఇన్హెరిటెన్స్తో సర్వర్-సైడ్ HTML జనరేషన్
-
రిక్వెస్ట్ కాంటెక్స్ట్: HTTP రిక్వెస్ట్లు మరియు సెషన్ల యొక్క ఆటోమేటిక్ హ్యాండ్లింగ్
-
వెర్క్జ్యుగ్: డెవలప్మెంట్ సర్వర్ మరియు యుటిలిటీ ఫంక్షన్లు
ఫ్లాస్క్ అప్లికేషన్ వెబ్ మాడ్యూల్లో ప్రారంభించబడుతుంది, ఇక్కడ మేము:
-
వెబ్ బ్లూప్రింట్ను సృష్టించండి
-
ఇంటర్నేషనలైజేషన్ కోసం బాబెల్ను ప్రారంభించండి
-
వాల్కీ సెషన్ నిల్వను కాన్ఫిగర్ చేయండి
-
టెంప్లేట్ వేరియబుల్స్ కోసం కాంటెక్స్ట్ ప్రాసెసర్లను సెటప్ చేయండి
గునికార్న్ - ప్రొడక్షన్ సర్వర్
ప్రొడక్షన్ కోసం, మేము Gunicorn (గ్రీన్ యూనికార్న్) ను ఉపయోగిస్తాము, ఇది ఒక పైథాన్ WSGI HTTP సర్వర్. గునికార్న్ బహుళ వర్కర్ ప్రాసెస్లతో మా ఫ్లాస్క్ అప్లికేషన్ను నడుపుతుంది.
గునికార్న్ systemd ద్వారా నిర్వహించబడుతుంది, ఇది అది క్రాష్ అయినా లేదా సర్వర్ రీబూట్ అయినా స్వయంచాలకంగా రీస్టార్ట్ అవుతుందని నిర్ధారిస్తుంది. ఇది మాన్యువల్ ఇంటర్వెన్షన్ లేకుండా మాకు అధిక లభ్యతను ఇస్తుంది.
ఎన్గిన్క్స్ - రివర్స్ ప్రాక్సీ & లోడ్ బ్యాలెన్సర్
Nginx మా రివర్స్ ప్రాక్సీ మరియు లోడ్ బ్యాలెన్సర్గా పనిచేస్తుంది. ఇది గునికార్న్ ముందు ఉంటుంది మరియు ఇవి హ్యాండిల్ చేస్తుంది:
-
SSL/TLS టెర్మినేషన్: HTTPS ఎన్క్రిప్షన్/డిక్రిప్షన్
-
స్టాటిక్ ఫైల్ సర్వింగ్: CSS, జావాస్క్రిప్ట్, ఇమేజ్లు (డిస్క్ నుండి నేరుగా సర్వ్ చేయబడతాయి)
-
రివర్స్ ప్రాక్సీ: డైనమిక్ రిక్వెస్ట్లను గునికార్న్కు ఫార్వార్డ్ చేయడం
-
రేట్ లిమిటింగ్: అబ్యూస్ నుండి రక్షణ
-
రిక్వెస్ట్ కంప్రెషన్: వేగవంతమైన ట్రాన్స్ఫర్ల కోసం Gzip కంప్రెషన్
ఉబుంటు - ఆపరేటింగ్ సిస్టమ్
అన్ని EC2 ఇన్స్టాన్స్లు Ubuntu ను రన్ చేస్తాయి, ఇది మా ఎంచుకున్న లైనక్స్ డిస్ట్రిబ్యూషన్. పైప్ కంటే ముందుగా, ఉబుంటు పైథాన్ ప్యాకేజీలు అందుబాటులో ఉన్నప్పుడు వాటిని ఉపయోగించడాన్ని మేము ప్రాధాన్యత ఇస్తాము.
సాధారణ రిక్వెస్ట్ ఫ్లో:
flowchart LR
A[క్లయింట్ బ్రౌజర్] -->|HTTPS రిక్వెస్ట్| B[ఎన్గిన్క్స్]
B -->|ప్రాక్సీ చేయి| C[గునికార్న్]
C -->|WSGI| D[ఫ్లాస్క్ అప్లికేషన్]
D -->|క్వెరీ| E[వాల్కీ క్యాచ్]
E -->|మిస్| F[డైనమోడిబి]
F -->|రెస్పాన్స్| E
E -->|హిట్| G[రెస్పాన్స్]
G --> B
B -->|రెస్పాన్స్| Aక్లౌడ్ఫ్రంట్ - కంటెంట్ డెలివరీ నెట్వర్క్
CloudFront మా CDN, ఇది అందిస్తుంది:
-
DDoS ప్రొటెక్షన్: డిస్ట్రిబ్యూటెడ్ దాడుల నుండి అంతర్నిర్మిత రక్షణ
-
ఒరిజిన్ షీల్డింగ్: ట్రాఫిక్ స్పైక్ల నుండి మా ఒరిజిన్ సర్వర్లను రక్షిస్తుంది
మా క్లౌడ్ఫ్రంట్ డిస్ట్రిబ్యూషన్ కి రెండు ఒరిజిన్లు ఉన్నాయి:
-
బ్యాకెండ్ సర్వర్: బ్యాకెండ్ ఫ్లాస్క్ అప్లికేషన్
-
S3: స్టాటిక్ ఆసెట్స్ కోసం S3 బకెట్
కాన్ఫిగర్ చేయబడిన క్యాచ్ బిహేవియర్స్:
-
/s/*- స్టాటిక్ ఆసెట్స్ (CSS, JS, ఇమేజ్లు) 24-గంటల TTL తో -
/ds/*.pdf- డేటాషీట్లు 24-గంటల TTL తో -
/api/*- API ఎండ్పాయింట్లు క్యాచింగ్ లేకుండా -
/cart- కార్ట్ 24-గంటల TTL తో -
/set-language- క్యాచింగ్ లేదు (డైనమిక్)
డేటా లేయర్
డైనమోడిబి - ప్రాథమిక డేటాబేస్
మేము మా ప్రాథమిక డేటాబేస్గా Amazon DynamoDB ను ఉపయోగిస్తాము. డైనమోడిబి ఒక NoSQL డేటాబేస్.
మా డైనమోడిబి టేబుల్స్లో ఇవి ఉన్నాయి:
-
రికమెండేషన్లు: AI-జనరేటెడ్ ప్రోడక్ట్ రికమెండేషన్లు
-
ప్రోడక్ట్ వివరణలు: బహుళ భాషలలో ప్రోడక్ట్ వివరణలు
-
క్వెరీ పేజీలు: SEO కోసం పార్స్ చేయబడిన క్వెరీ పేజీలు
మేము PynamoDB ను ఉపయోగిస్తాము, ఇది డైనమోడిబి కోసం ఒక పైథానిక్ ORM, ఇది అందిస్తుంది:
- మోడల్ డెఫినిషన్లు: డేటాబేస్ టేబుల్స్ కోసం పైథాన్ క్లాస్లు
వాల్కీ - ఇన్-మెమరీ క్యాచ్
Valkey (రెడిస్ యొక్క ఫోర్క్) మా ఇన్-మెమరీ క్యాచ్ లేయర్, ఇది అందిస్తుంది:
-
సెషన్ నిల్వ: 30-రోజుల స్లయిడింగ్ ఎక్స్పైరీతో యూజర్ సెషన్లు
-
తరచుగా యాక్సెస్ చేయబడిన డేటా: ప్రోడక్ట్ కౌంట్లు, ప్రసిద్ధ క్వెరీలు
-
ఆటోకంప్లీట్ క్యాచ్: సెర్చ్ సజ్జెషన్లు
-
ఇమేజ్ మానిఫెస్ట్: ప్రోడక్ట్ ఇమేజ్ లొకేషన్లు
వాల్కీ గణనీయమైన పెర్ఫార్మెన్స్ ప్రయోజనాలను అందిస్తుంది:
-
రీడ్ ఆపరేషన్లకు డైనమోడిబి కంటే 100x వేగంగా
-
తగ్గిన డేటాబేస్ లోడ్: క్యాచ్ హిట్లు డైనమోడిబి క్వెరీలను నివారిస్తాయి
-
సెషన్ పెర్సిస్టెన్స్: రిక్వెస్ట్ల అంతటా వాల్కీ-బ్యాక్డ్ సెషన్లు
మేము వాల్కీని ఇందుకోసం ఉపయోగిస్తాము:
-
సెషన్లు: యూజర్ లాగిన్ స్టేట్, కార్ట్ డేటా
-
క్యాచింగ్: ప్రసిద్ధ క్వెరీలు, ఆటోకంప్లీట్ సజ్జెషన్లు
-
కౌంటర్లు: ప్రోడక్ట్ స్టాక్ కౌంట్లు (పెర్ఫార్మెన్స్ కోసం క్యాచ్ చేయబడతాయి)
-
క్యూలు: బ్యాక్గ్రౌండ్ జాబ్ ప్రాసెసింగ్
S3 - ఆబ్జెక్ట్ స్టోరేజ్
Amazon S3 మా ఆబ్జెక్ట్ స్టోరేజ్ సర్వీస్.
మేము S3ని ఇందుకోసం ఉపయోగిస్తాము:
-
ప్రోడక్ట్ ఇమేజ్లు: హై-రెసల్యూషన్ ప్రోడక్ట్ ఫోటోలు
-
డేటాషీట్లు: PDF ప్రోడక్ట్ స్పెసిఫికేషన్లు
-
స్టాటిక్ ఆసెట్స్: CSS, JS, ఇమేజ్లు