ഇൻഫ്രാസ്ട്രക്ചർ അവലോകനം

ഈ ലേഖനം Thinvent പൊതു വെബ്സൈറ്റിനെ ശക്തിപ്പെടുത്തുന്ന അടിസ്ഥാന സൗകര്യങ്ങളുടെ സമഗ്രമായ അവലോകനം നൽകുന്നു. വെബ് സെർവർ മുതൽ ഡാറ്റാബേസ് ലെയർ വരെയുള്ള സമ്പൂർണ്ണ ടെക്നോളജി സ്റ്റാക്ക് ഞങ്ങൾ ഉൾക്കൊള്ളുന്നു, കൂടാതെ എല്ലാ ഘടകങ്ങളും എങ്ങനെ ഒരുമിച്ച് പ്രവർത്തിച്ച് വേഗതയേറിയതും വിശ്വസനീയവും സ്കെയിൽ ചെയ്യാവുന്നതുമായ ഇ-കൊമേഴ്സ് അനുഭവം നൽകുന്നുവെന്ന് വിശദീകരിക്കുന്നു.

വെബ് ആപ്ലിക്കേഷൻ സ്റ്റാക്ക്

Flask - അടിസ്ഥാനം

ഞങ്ങളുടെ വെബ്സൈറ്റ് Flask-ൽ നിർമ്മിച്ചതാണ്, ഇത് ഭാരം കുറഞ്ഞതും വഴക്കമുള്ളതുമായ Python വെബ് ഫ്രെയിംവർക്കാണ്. ഞങ്ങളുടെ ആപ്ലിക്കേഷനെ മോഡുലാർ ഘടകങ്ങളായി ക്രമീകരിക്കുന്ന കോർ റൂട്ടിംഗ്, അഭ്യർത്ഥന/പ്രതികരണ കൈകാര്യം, ബ്ലൂപ്രിന്റ് സിസ്റ്റം എന്നിവ Flask നൽകുന്നു.

ഞങ്ങൾ ഉപയോഗിക്കുന്ന പ്രധാന Flask സവിശേഷതകൾ:

  • ബ്ലൂപ്രിന്റുകൾ: ആപ്ലിക്കേഷനെ ലോജിക്കൽ മൊഡ്യൂളുകളായി (web, api, cart, product, മുതലായവ) ക്രമീകരിക്കുന്നു.

  • Jinja2 ടെംപ്ലേറ്റിംഗ്: ടെംപ്ലേറ്റ് ഇൻഹെറിറ്റൻസ് ഉപയോഗിച്ച് സെർവർ-സൈഡ് HTML ജനറേഷൻ.

  • അഭ്യർത്ഥന സന്ദർഭം: HTTP അഭ്യർത്ഥനകളുടെയും സെഷനുകളുടെയും ഓട്ടോമാറ്റിക് കൈകാര്യം.

  • Werkzeug: ഡെവലപ്മെന്റ് സെർവറും യൂട്ടിലിറ്റി ഫംഗ്ഷനുകളും.

Flask ആപ്ലിക്കേഷൻ web മൊഡ്യൂളിൽ ഇനിപ്പറയുന്നവ ചെയ്തുകൊണ്ട് ആരംഭിക്കുന്നു:

  • വെബ് ബ്ലൂപ്രിന്റ് സൃഷ്ടിക്കുക

  • അന്താരാഷ്ട്രവൽക്കരണത്തിനായി Babel സമാരംഭിക്കുക

  • Valkey സെഷൻ സ്റ്റോറേജ് കോൺഫിഗർ ചെയ്യുക

  • ടെംപ്ലേറ്റ് വേരിയബിളുകൾക്കായി കോണ്ടെക്സ്റ്റ് പ്രോസസ്സറുകൾ സജ്ജീകരിക്കുക

Gunicorn - പ്രൊഡക്ഷൻ സെർവർ

പ്രൊഡക്ഷനായി, ഞങ്ങൾ Gunicorn (ഗ്രീൻ യൂണികോൺ) ഉപയോഗിക്കുന്നു, ഇത് ഒരു Python WSGI HTTP സെർവറാണ്. Gunicorn ഞങ്ങളുടെ Flask ആപ്ലിക്കേഷനെ ഒന്നിലധികം വർക്കർ പ്രോസസ്സുകളിൽ പ്രവർത്തിപ്പിക്കുന്നു.

Gunicorn-നെ systemd നിയന്ത്രിക്കുന്നു, ഇത് ക്രാഷ് സംഭവിച്ചാലോ സെർവർ റീബൂട്ട് ചെയ്താലോ യാന്ത്രികമായി പുനരാരംഭിക്കുന്നുവെന്ന് ഉറപ്പാക്കുന്നു. ഇത് മാനുവൽ ഇടപെടലില്ലാതെ ഉയർന്ന ലഭ്യത നൽകുന്നു.

Nginx - റിവേഴ്സ് പ്രോക്സിയും ലോഡ് ബാലൻസറും

Nginx ഞങ്ങളുടെ റിവേഴ്സ് പ്രോക്സിയായും ലോഡ് ബാലൻസറായും പ്രവർത്തിക്കുന്നു. ഇത് Gunicorn-ന് മുന്നിൽ നിൽക്കുകയും ഇനിപ്പറയുന്നവ കൈകാര്യം ചെയ്യുകയും ചെയ്യുന്നു:

  • SSL/TLS അവസാനിപ്പിക്കൽ: HTTPS എൻക്രിപ്ഷൻ/ഡീക്രിപ്ഷൻ

  • സ്റ്റാറ്റിക് ഫയൽ സർവ്വിംഗ്: CSS, JavaScript, ചിത്രങ്ങൾ (ഡിസ്കിൽ നിന്ന് നേരിട്ട് സർവ് ചെയ്യുന്നു)

  • റിവേഴ്സ് പ്രോക്സി: ഡൈനാമിക് അഭ്യർത്ഥനകൾ Gunicorn-ലേക്ക് ഫോർവേഡ് ചെയ്യുക

  • റേറ്റ് ലിമിറ്റിംഗ്: ദുരുപയോഗത്തിൽ നിന്ന് സംരക്ഷിക്കുക

  • അഭ്യർത്ഥന കംപ്രഷൻ: വേഗത്തിലുള്ള കൈമാറ്റങ്ങൾക്കായി Gzip കംപ്രഷൻ

Ubuntu - ഓപ്പറേറ്റിംഗ് സിസ്റ്റം

എല്ലാ EC2 ഇൻസ്റ്റൻസുകളും Ubuntu പ്രവർത്തിപ്പിക്കുന്നു, ഇതാണ് ഞങ്ങൾ തിരഞ്ഞെടുത്ത Linux വിതരണം. ലഭ്യമാകുമ്പോൾ pip-നെക്കാൾ Ubuntu Python പാക്കേജുകൾ ഉപയോഗിക്കുന്നതാണ് ഞങ്ങൾ ഇഷ്ടപ്പെടുന്നത്.

സാധാരണ അഭ്യർത്ഥന ഫ്ലോ ഇതാണ്:

flowchart LR
    A[Client Browser] -->|HTTPS Request| B[Nginx]
    B -->|Proxy to| C[Gunicorn]
    C -->|WSGI| D[Flask App]
    D -->|Query| E[Valkey Cache]
    E -->|Miss| F[DynamoDB]
    F -->|Response| E
    E -->|Hit| G[Response]
    G --> B
    B -->|Response| A

CloudFront - കണ്ടന്റ് ഡെലിവറി നെറ്റ്വർക്ക്

CloudFront ഞങ്ങളുടെ CDN ആണ്, ഇത് നൽകുന്നത്:

  • DDoS പരിരക്ഷ: വിതരണം ചെയ്ത ആക്രമണങ്ങൾക്കെതിരെ ബിൽറ്റ്-ഇൻ പരിരക്ഷ

  • ഒറിജിൻ ഷീൽഡിംഗ്: ട്രാഫിക് സ്പൈക്കുകളിൽ നിന്ന് ഞങ്ങളുടെ ഒറിജിൻ സെർവറുകളെ സംരക്ഷിക്കുന്നു

ഞങ്ങളുടെ CloudFront വിതരണത്തിന് രണ്ട് ഒറിജിനുകളുണ്ട്:

  • ബാക്ക്എൻഡ് സെർവർ: ബാക്ക്എൻഡ് Flask ആപ്പ്

  • S3: സ്റ്റാറ്റിക് അസറ്റുകൾക്കുള്ള S3 ബക്കറ്റ്

കാഷെ സ്വഭാവങ്ങൾ കോൺഫിഗർ ചെയ്തിരിക്കുന്നത്:

  • /s/* - സ്റ്റാറ്റിക് അസറ്റുകൾ (CSS, JS, ചിത്രങ്ങൾ) 24 മണിക്കൂർ TTL-നൊപ്പം

  • /ds/*.pdf - ഡാറ്റാഷീറ്റുകൾ 24 മണിക്കൂർ TTL-നൊപ്പം

  • /api/* - API എൻഡ്പോയിന്റുകൾ കാഷിംഗ് ഇല്ലാതെ

  • /cart - കാർട്ട് 24 മണിക്കൂർ TTL-നൊപ്പം

  • /set-language - കാഷിംഗ് ഇല്ല (ഡൈനാമിക്)

ഡാറ്റാ ലെയർ

DynamoDB - പ്രാഥമിക ഡാറ്റാബേസ്

ഞങ്ങൾ Amazon DynamoDB പ്രാഥമിക ഡാറ്റാബേസായി ഉപയോഗിക്കുന്നു. DynamoDB ഒരു NoSQL ഡാറ്റാബേസാണ്.

ഞങ്ങളുടെ DynamoDB ടേബിളുകളിൽ ഇവ ഉൾപ്പെടുന്നു:

  • ശുപാർശകൾ: AI സൃഷ്ടിച്ച ഉൽപ്പന്ന ശുപാർശകൾ

  • ഉൽപ്പന്ന വിവരണങ്ങൾ: ഒന്നിലധികം ഭാഷകളിലുള്ള ഉൽപ്പന്ന വിവരണങ്ങൾ

  • ക്വറി പേജുകൾ: SEO-യ്ക്കായി പാഴ്സ് ചെയ്ത ക്വറി പേജുകൾ

ഞങ്ങൾ PynamoDB ഉപയോഗിക്കുന്നു, ഇത് DynamoDB-യ്ക്കുള്ള Pythonic ORM ആണ്, ഇത് നൽകുന്നത്:

  • മോഡൽ നിർവചനങ്ങൾ: ഡാറ്റാബേസ് ടേബിളുകൾക്കുള്ള Python ക്ലാസുകൾ

Valkey - ഇൻ-മെമ്മറി കാഷെ

Valkey (Redis-ന്റെ ഒരു ഫോർക്ക്) ഞങ്ങളുടെ ഇൻ-മെമ്മറി കാഷെ ലെയറാണ്, ഇത് നൽകുന്നത്:

  • സെഷൻ സ്റ്റോറേജ്: 30 ദിവസത്തെ സ്ലൈഡിംഗ് കാലഹരണപ്പെടലുള്ള ഉപയോക്തൃ സെഷനുകൾ

  • ഇടയ്ക്കിടെ ആക്സസ് ചെയ്യുന്ന ഡാറ്റ: ഉൽപ്പന്ന കൗണ്ടുകൾ, ജനപ്രിയ ക്വറികൾ

  • ഓട്ടോകംപ്ലീറ്റ് കാഷെ: തിരയൽ നിർദ്ദേശങ്ങൾ

  • ഇമേജ് മാനിഫെസ്റ്റ്: ഉൽപ്പന്ന ചിത്രങ്ങളുടെ സ്ഥാനങ്ങൾ

Valkey കാര്യമായ പ്രകടന ആനുകൂല്യങ്ങൾ നൽകുന്നു:

  • റീഡ് ഓപ്പറേഷനുകൾക്ക് DynamoDB-യേക്കാൾ 100x വേഗത

  • കുറഞ്ഞ ഡാറ്റാബേസ് ലോഡ്: കാഷെ ഹിറ്റുകൾ DynamoDB ക്വറികൾ ഒഴിവാക്കുന്നു

  • സെഷൻ നിലനിൽപ്പ്: അഭ്യർത്ഥനകളിലുടനീളം Valkey-ബാക്കപ്പ് ചെയ്ത സെഷനുകൾ

ഞങ്ങൾ Valkey ഇതിനായി ഉപയോഗിക്കുന്നു:

  • സെഷനുകൾ: ഉപയോക്തൃ ലോഗിൻ അവസ്ഥ, കാർട്ട് ഡാറ്റ

  • കാഷിംഗ്: ജനപ്രിയ ക്വറികൾ, ഓട്ടോകംപ്ലീറ്റ് നിർദ്ദേശങ്ങൾ

  • കൗണ്ടറുകൾ: ഉൽപ്പന്ന സ്റ്റോക്ക് എണ്ണങ്ങൾ (പ്രകടനത്തിനായി കാഷെ ചെയ്തിരിക്കുന്നു)

  • ക്യൂകൾ: ബാക്ക്ഗ്രൗണ്ട് ജോബ് പ്രോസസ്സിംഗ്

S3 - ഒബ്ജക്റ്റ് സ്റ്റോറേജ്

Amazon S3 ഞങ്ങളുടെ ഒബ്ജക്റ്റ് സ്റ്റോറേജ് സേവനമാണ്.

ഞങ്ങൾ S3 ഇതിനായി ഉപയോഗിക്കുന്നു:

  • ഉൽപ്പന്ന ചിത്രങ്ങൾ: ഉയർന്ന റെസല്യൂഷനുള്ള ഉൽപ്പന്ന ഫോട്ടോകൾ

  • ഡാറ്റാഷീറ്റുകൾ: PDF ഉൽപ്പന്ന സ്പെസിഫിക്കേഷനുകൾ

  • സ്റ്റാറ്റിക് അസറ്റുകൾ: CSS, JS, ചിത്രങ്ങൾ

DNS & റൂട്ടിംഗ്

Route53 - ഡൊമെയ്ൻ മാനേജ്മെന്റ്

Route53 ഞങ്ങളുടെ DNS മാനേജ്മെന്റ് കൈകാര്യം ചെയ്യുന്നു:

  • ഡൊമെയ്ൻ രജിസ്ട്രേഷൻ: thinvent.in, അനുബന്ധ ഡൊമെയ്നുകൾ

Nginx റൂട്ടിംഗ്

Nginx URL പാറ്റേണുകളെ അടിസ്ഥാനമാക്കി അഭ്യർത്ഥനകൾ റൂട്ട് ചെയ്യുന്നു:

  • / → Flask ആപ്പ് (ഹോം, ഉൽപ്പന്നങ്ങൾ, കാർട്ട്, ചെക്ക്ഔട്ട്)

  • /q/ → Flask ആപ്പ് (ക്വറി പേജുകൾ, തിരയൽ ഫലങ്ങൾ)

  • /api/ → Flask ആപ്പ് (API എൻഡ്പോയിന്റുകൾ)

  • /static/ → CloudFront/S3 (സ്റ്റാറ്റിക് അസറ്റുകൾ)

തിരയൽ & AI അടിസ്ഥാന സൗകര്യം

തിരയൽ സേവനം

തിരയൽ പ്രവർത്തനത്തിനായി ഞങ്ങൾ ഒരു സ്വതന്ത്ര Flask ആപ്ലിക്കേഷൻ പ്രവർത്തിപ്പിക്കുന്നു. ഈ സേവനം നൽകുന്നത്:

  • വെക്റ്റർ തിരയൽ: ബന്ധപ്പെട്ട ക്വറികൾക്കുള്ള സെമാന്റിക് സാമ്യത

  • ഓട്ടോകംപ്ലീറ്റ്: പ്രിഫിക്സ് അടിസ്ഥാനമാക്കിയുള്ള തിരയൽ നിർദ്ദേശങ്ങൾ

  • ജനപ്രിയ ക്വറികൾ: ഏറ്റവും കൂടുതൽ തിരഞ്ഞ പദങ്ങൾ

  • ഫിൽട്ടർ എക്സ്ട്രാക്ഷൻ: ഫെസറ്റുകൾക്കായി തിരയൽ ക്വറികൾ പാഴ്സ് ചെയ്യുക

തിരയൽ സേവനം ഉപയോഗിക്കുന്നത്:

  • Valkey RediSearch: വെക്റ്റർ സാമ്യത തിരയൽ

  • SentenceTransformer: എംബെഡിംഗ് ജനറേഷൻ

  • പദസമുച്ചയ മാപ്പിംഗുകൾ: സബ്സ്ട്രിംഗ് മാച്ചിംഗ് വഴി ഫിൽട്ടർ എക്സ്ട്രാക്ഷൻ

AI ദാതാക്കൾ

വ്യത്യസ്ത ജോലികൾക്കായി ഞങ്ങൾ ഒന്നിലധികം AI ദാതാക്കളെ ഉപയോഗിക്കുന്നു:

DeepSeek

  • മോഡൽ: deepseek-chat

  • ഉപയോഗ കേസുകൾ: ഉൽപ്പന്ന വിവരണങ്ങൾ, ക്വറി പേജ് ഉള്ളടക്കം, വിവർത്തനം

  • API: Together.ai ഫാൾബാക്കിനൊപ്പം DeepSeek API

  • കാഷിംഗ്: പ്രോംപ്റ്റ് കാഷിംഗ് കാര്യക്ഷമതയ്ക്കായുള്ള സിസ്റ്റം പ്രോംപ്റ്റുകൾ

Gemini

  • മോഡൽ: Gemini (നിർദ്ദിഷ്ട മോഡൽ)

  • ഉപയോഗ കേസുകൾ: ഉള്ളടക്ക നിർമ്മാണം

  • സംയോജനം: നേരിട്ടുള്ള API കോളുകൾ

Amazon Bedrock

  • മോഡലുകൾ: Nova Pro

  • ഉപയോഗ കേസുകൾ: ആന്തരിക ചാറ്റ്

  • സംയോജനം: boto3 SDK

Amazon Bedrock

  • മോഡലുകൾ: Nova Lite

  • ഉപയോഗ കേസുകൾ: ഉപഭോക്തൃ ചാറ്റ്ബോട്ട്

  • സംയോജനം: boto3 SDK

സമ്പൂർണ്ണ അഭ്യർത്ഥന ഫ്ലോ

ഒരു സാധാരണ അഭ്യർത്ഥന ഞങ്ങളുടെ അടിസ്ഥാന സൗകര്യത്തിലൂടെ എങ്ങനെ ഒഴുകുന്നു എന്നത് ഇതാ:

flowchart TD
    A[Client Browser] -->|DNS Query| B[Route53]
    B -->|IP Address| C[CloudFront]
    C -->|Cache Check| D{Cache Hit?}
    D -->|Yes| E[Return Cached Content]
    D -->|No| F[Nginx]
    F -->|Proxy| G[Gunicorn]
    G -->|WSGI| H[Flask App]
    H -->|Cache Check| I[Valkey]
    I -->|Hit| J[Return Cached Data]
    I -->|Miss| K[DynamoDB]
    K -->|Query| L[Return Data]
    L --> I
    J --> M[Build Response]
    E --> M
    M --> N[Send to Client]

നിരീക്ഷണവും ആരോഗ്യവും

UptimeRobot - ബാഹ്യ നിരീക്ഷണം

എല്ലാ പൊതു അഭിമുഖ എൻഡ്പോയിന്റുകളുടെയും ബാഹ്യ നിരീക്ഷണത്തിനായി ഞങ്ങൾ UptimeRobot ഉപയോഗിക്കുന്നു:

  • ബാക്ക്എൻഡ് സെർവർ: ബാക്ക്എൻഡ് വെബ്സൈറ്റ്

  • www.thinvent.in: പൊതു വെബ്സൈറ്റ്

ആരോഗ്യ പരിശോധനകൾ

  • Gunicorn: systemd പുനരാരംഭങ്ങൾ നിയന്ത്രിക്കുന്നു

  • Flask: /health എൻഡ്പോയിന്റ് സ്റ്റാറ്റസ് നൽകുന്നു

  • Valkey: കണക്ഷൻ ആരോഗ്യം നിരീക്ഷിക്കുന്നു

  • DynamoDB: ലേറ്റൻസിയും ത്രൂപുട്ടും നിരീക്ഷിക്കുന്നു

ലോഗിംഗ്

  • ആപ്ലിക്കേഷൻ ലോഗുകൾ: Gunicorn error.log

  • ആക്സസ് ലോഗുകൾ: Gunicorn access.log

  • ഇമെയിൽ: Python ട്രേസ്ബാക്കുകൾക്കൊപ്പം നിർണായക സംഭവങ്ങൾക്കുള്ള തത്സമയ അറിയിപ്പുകൾ

സംഗ്രഹം

ഞങ്ങളുടെ അടിസ്ഥാന സൗകര്യം ഇതിനായി രൂപകൽപ്പന ചെയ്തിരിക്കുന്നു:

  • പ്രകടനം: ഒന്നിലധികം കാഷിംഗ് ലെയറുകൾ, CDN, ഒപ്റ്റിമൈസ് ചെയ്ത ക്വറികൾ

  • സ്കേലബിലിറ്റി: ഓട്ടോ-സ്കെയിലിംഗ് ഡാറ്റാബേസുകൾ, ലോഡ് ബാലൻസിംഗ്

  • ചെലവ്-ഫലപ്രാപ്തി: പേ-പെർ-യൂസ്, ഡാറ്റാബേസ് ലോഡ് കുറയ്ക്കാൻ കാഷിംഗ്

Flask, Gunicorn, Nginx, Ubuntu, DynamoDB, Valkey, CloudFront, UptimeRobot എന്നിവയുടെ സംയോജനം ഞങ്ങളുടെ ഇ-കൊമേഴ്സ് പ്ലാറ്റ്ഫോമിന് ശക്തവും സ്കേലബിൾവുമായ അടിത്തറ നൽകുന്നു.

അനുബന്ധ ലേഖനങ്ങൾ