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

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

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

ഫ്ലാസ്ക് - അടിസ്ഥാനം

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

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

  • ബ്ലൂപ്രിന്റുകൾ: ആപ്ലിക്കേഷനെ യുക്തിസഹമായ മൊഡ്യൂളുകളായി (വെബ്, എപിഐ, കാർട്ട്, ഉൽപ്പന്നം മുതലായവ) ക്രമീകരിക്കുക

  • ജിൻജ2 ടെംപ്ലേറ്റിംഗ്: ടെംപ്ലേറ്റ് പാരമ്പര്യത്തോടെ സെർവർ-സൈഡ് HTML ജനറേഷൻ

  • അഭ്യർത്ഥന സന്ദർഭം: HTTP അഭ്യർത്ഥനകളുടെയും സെഷനുകളുടെയും സ്വയമേവയുള്ള കൈകാര്യം

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

വെബ് മൊഡ്യൂളിലാണ് ഫ്ലാസ്ക് ആപ്ലിക്കേഷൻ സമാരംഭിച്ചിരിക്കുന്നത്, അവിടെ ഞങ്ങൾ:

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

  • ഇന്റർനാഷണലൈസേഷനായി ബേബൽ സമാരംഭിക്കുന്നു

  • വാൽക്കി സെഷൻ സംഭരണം കോൺഫിഗർ ചെയ്യുന്നു

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

ഗുണിക്കോൺ - പ്രൊഡക്ഷൻ സെർവർ

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

ഗുണിക്കോൺ systemd നിയന്ത്രിക്കുന്നു, ഇത് ക്രാഷ് ചെയ്യുകയോ സെർവർ പുനരാരംഭിക്കുകയോ ചെയ്താൽ അത് സ്വയമേവ പുനരാരംഭിക്കുന്നുവെന്ന് ഉറപ്പാക്കുന്നു. ഇത് കൈകൊണ്ടുള്ള ഇടപെടൽ ഇല്ലാതെ ഉയർന്ന ലഭ്യത നൽകുന്നു.

എൻജിനെക്സ് - റിവേഴ്സ് പ്രോക്സി & ലോഡ് ബാലൻസർ

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

  • SSL/TLS ടെർമിനേഷൻ: HTTPS എൻക്രിപ്ഷൻ/ഡീക്രിപ്ഷൻ

  • സ്റ്റാറ്റിക് ഫയൽ സേവനം: CSS, ജാവാസ്ക്രിപ്റ്റ്, ഇമേജുകൾ (ഡിസ്കിൽ നിന്ന് നേരിട്ട് സേവിക്കുന്നു)

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

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

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

ഉബുണ്ടു - ഓപ്പറേറ്റിംഗ് സിസ്റ്റം

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

സാധാരണ അഭ്യർത്ഥന പ്രവാഹം ഇതാണ്:

flowchart LR
    A[ക്ലയന്റ് ബ്രൗസർ] -->|HTTPS അഭ്യർത്ഥന| B[Nginx]
    B -->|പ്രോക്സി ചെയ്യുക| C[Gunicorn]
    C -->|WSGI| D[Flask App]
    D -->|ക്വറി| E[Valkey Cache]
    E -->|മിസ്| F[DynamoDB]
    F -->|പ്രതികരണം| E
    E -->|ഹിറ്റ്| G[പ്രതികരണം]
    G --> B
    B -->|പ്രതികരണം| A

ക്ലൗഡ്ഫ്രണ്ട് - ഉള്ളടക്ക വിതരണ ശൃംഖല

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

  • DDoS സംരക്ഷണം: വിതരണ ആക്രമണങ്ങളിൽ നിന്നുള്ള അന്തർനിർമ്മിത സംരക്ഷണം

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

ഞങ്ങളുടെ ക്ലൗഡ്ഫ്രണ്ട് വിതരണത്തിന് രണ്ട് ഒറിജിനുകൾ ഉണ്ട്:

  • ബാക്കെൻഡ് സെർവർ: ബാക്കെൻഡ് ഫ്ലാസ്ക് ആപ്പ്

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

കാഷെ ബിഹേവിയറുകൾ കോൺഫിഗർ ചെയ്തിരിക്കുന്നു:

  • /s/* - സ്റ്റാറ്റിക് അസറ്റുകൾ (CSS, JS, ഇമേജുകൾ) 24-മണിക്കൂർ TTL ഉപയോഗിച്ച്

  • /ds/*.pdf - ഡാറ്റാഷീറ്റുകൾ 24-മണിക്കൂർ TTL ഉപയോഗിച്ച്

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

  • /cart - കാർട്ട് 24-മണിക്കൂർ TTL ഉപയോഗിച്ച്

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

ഡാറ്റ ലെയർ

ഡൈനാമോഡിബി - പ്രാഥമിക ഡാറ്റാബേസ്

ഞങ്ങളുടെ പ്രാഥമിക ഡാറ്റാബേസായി Amazon DynamoDB ഉപയോഗിക്കുന്നു. ഡൈനാമോഡിബി ഒരു നോഎസ്ക്യൂഎൽ ഡാറ്റാബേസാണ്.

ഞങ്ങളുടെ ഡൈനാമോഡിബി പട്ടികകളിൽ ഉൾപ്പെടുന്നവ:

  • ശുപാർശകൾ: AI-ജനറേറ്റ് ചെയ്ത ഉൽപ്പന്ന ശുപാർശകൾ

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

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

ഞങ്ങൾ PynamoDB ഉപയോഗിക്കുന്നു, ഇത് ഡൈനാമോഡിബിക്കുള്ള ഒരു പൈത്തോണിക് ORM ആണ്, ഇത് നൽകുന്നത്:

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

വാൽക്കി - ഇൻ-മെമ്മറി കാഷ്

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

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

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

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

  • ഇമേജ് മാനിഫെസ്റ്റ്: ഉൽപ്പന്ന ഇമേജ് സ്ഥാനങ്ങൾ

വാൽക്കി കാര്യമായ പ്രകടന ഗുണങ്ങൾ നൽകുന്നു:

  • വായന പ്രവർത്തനങ്ങൾക്ക് ഡൈനാമോഡിബിയേക്കാൾ 100 മടങ്ങ് വേഗം

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

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

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

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

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

  • **കൗണ്ടറ