Infrastructure Overview

આ લેખ Thinvent જાહેર વેબસાઇટને સંચાલિત કરતી ઈન્ફ્રાસ્ટ્રક્ચરની વ્યાપક ઝાંખી પ્રદાન કરે છે. અમે વેબ સર્વરથી ડેટાબેઝ સ્તર સુધીની સંપૂર્ણ ટેકનોલોજી સ્ટેકને આવરી લઈશું, અને સમજાવીશું કે કેવી રીતે તમામ ઘટકો ઝડપી, વિશ્વસનીય અને સ્કેલેબલ ઈ-કોમર્સ અનુભવ પહોંચાડવા માટે સાથે મળીને કામ કરે છે.

વેબ એપ્લિકેશન સ્ટેક

Flask - પાયો

અમારી વેબસાઇટ Flask પર બનેલી છે, જે હલકો અને લવચીક Python વેબ ફ્રેમવર્ક છે. Flask કોર રાઉટિંગ, રિક્વેસ્ટ/રિસ્પોન્સ હેન્ડલિંગ અને બ્લુપ્રિન્ટ સિસ્ટમ પ્રદાન કરે છે જે અમારી એપ્લિકેશનને મોડ્યુલર ઘટકોમાં ગોઠવે છે.

અમે ઉપયોગ કરીએ છીએ તે મુખ્ય Flask વિશેષતાઓ:

  • Blueprints: એપ્લિકેશનને લોજિકલ મોડ્યુલોમાં ગોઠવો (web, api, cart, product, વગેરે)

  • Jinja2 templating: ટેમ્પલેટ વારસા સાથે સર્વર-સાઇડ HTML જનરેશન

  • Request context: HTTP વિનંતીઓ અને સત્રોનું સ્વચાલિત સંચાલન

  • Werkzeug: વિકાસ સર્વર અને ઉપયોગિતા કાર્યો

Flask એપ્લિકેશન વેબ મોડ્યુલમાં પ્રારંભ કરવામાં આવે છે જ્યાં અમે:

  • વેબ બ્લુપ્રિન્ટ બનાવીએ છીએ

  • આંતરરાષ્ટ્રીયકરણ માટે 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 નું સંયોજન અમારા ઈ-કોમર્સ પ્લેટફોર્મ માટે મજબૂત, સ્કેલેબલ પાયો પ્રદાન કરે છે.

સંબંધિત લેખો