ಮೂಲಸೌಕರ್ಯದ ಅವಲೋಕನ
ಈ ಲೇಖನವು Thinvent ಸಾರ್ವಜನಿಕ ವೆಬ್ಸೈಟ್ ಅನ್ನು ಚಾಲನೆ ಮಾಡುವ ಮೂಲಸೌಕರ್ಯದ ಸಮಗ್ರ ಅವಲೋಕನವನ್ನು ಒದಗಿಸುತ್ತದೆ. ನಾವು ವೆಬ್ ಸರ್ವರ್ನಿಂದ ಡೇಟಾಬೇಸ್ ಪದರದವರೆಗಿನ ಸಂಪೂರ್ಣ ತಂತ್ರಜ್ಞಾನ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತೇವೆ ಮತ್ತು ಎಲ್ಲಾ ಘಟಕಗಳು ಹೇಗೆ ಒಟ್ಟಿಗೆ ಕೆಲಸ ಮಾಡಿ ವೇಗವಾದ, ವಿಶ್ವಾಸಾರ್ಹ ಮತ್ತು ಸ್ಕೇಲಬಲ್ ಇ-ಕಾಮರ್ಸ್ ಅನುಭವವನ್ನು ಒದಗಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ವಿವರಿಸುತ್ತೇವೆ.
ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಸ್ಟ್ಯಾಕ್
Flask - ಅಡಿಪಾಯ
ನಮ್ಮ ವೆಬ್ಸೈಟ್ Flask ಮೇಲೆ ನಿರ್ಮಿಸಲಾಗಿದೆ, ಇದು ಹಗುರ ಮತ್ತು ನಮ್ಯವಾದ ಪೈಥಾನ್ ವೆಬ್ ಫ್ರೇಮ್ವರ್ಕ್ ಆಗಿದೆ. Flask ನಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಮಾಡ್ಯುಲರ್ ಘಟಕಗಳಾಗಿ ಸಂಘಟಿಸುವ ಮೂಲ ರೂಟಿಂಗ್, ವಿನಂತಿ/ಪ್ರತಿಕ್ರಿಯಾ ನಿರ್ವಹಣೆ ಮತ್ತು ಬ್ಲೂಪ್ರಿಂಟ್ ವ್ಯವಸ್ಥೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ.
ನಾವು ಬಳಸುವ ಪ್ರಮುಖ Flask ವೈಶಿಷ್ಟ್ಯಗಳು:
-
ಬ್ಲೂಪ್ರಿಂಟ್ಗಳು: ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ತಾರ್ಕಿಕ ಮಾಡ್ಯೂಲ್ಗಳಾಗಿ ಸಂಘಟಿಸಿ (ವೆಬ್, api, ಕಾರ್ಟ್, ಉತ್ಪನ್ನ, ಇತ್ಯಾದಿ.)
-
Jinja2 ಟೆಂಪ್ಲೇಟಿಂಗ್: ಟೆಂಪ್ಲೇಟ್ ಇನ್ಹೆರಿಟೆನ್ಸ್ ಹೊಂದಿರುವ ಸರ್ವರ್-ಸೈಡ್ HTML ಜನರೇಶನ್
-
ವಿನಂತಿ ಸಂದರ್ಭ: HTTP ವಿನಂತಿಗಳು ಮತ್ತು ಸೆಷನ್ಗಳ ಸ್ವಯಂಚಾಲಿತ ನಿರ್ವಹಣೆ
-
Werkzeug: ಅಭಿವೃದ್ಧಿ ಸರ್ವರ್ ಮತ್ತು ಉಪಯುಕ್ತ ಕಾರ್ಯಗಳು
Flask ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ವೆಬ್ ಮಾಡ್ಯೂಲ್ನಲ್ಲಿ ಆರಂಭಿಸಲಾಗುತ್ತದೆ, ಅಲ್ಲಿ ನಾವು:
-
ವೆಬ್ ಬ್ಲೂಪ್ರಿಂಟ್ ರಚಿಸಿ
-
ಅಂತರರಾಷ್ಟ್ರೀಯೀಕರಣಕ್ಕಾಗಿ Babel ಅನ್ನು ಆರಂಭಿಸಿ
-
Valkey ಸೆಷನ್ ಸಂಗ್ರಹಣೆಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ
-
ಟೆಂಪ್ಲೇಟ್ ವೇರಿಯಬಲ್ಗಳಿಗಾಗಿ ಸಂದರ್ಭ ಪ್ರೊಸೆಸರ್ಗಳನ್ನು ಸ್ಥಾಪಿಸಿ
Gunicorn - ಪ್ರೊಡಕ್ಷನ್ ಸರ್ವರ್
ಪ್ರೊಡಕ್ಷನ್ಗಾಗಿ, ನಾವು Gunicorn (ಗ್ರೀನ್ ಯುನಿಕಾರ್ನ್) ಬಳಸುತ್ತೇವೆ, ಇದು ಪೈಥಾನ್ WSGI HTTP ಸರ್ವರ್ ಆಗಿದೆ. Gunicorn ನಮ್ಮ Flask ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬಹು ಕಾರ್ಮಿಕ ಪ್ರಕ್ರಿಯೆಗಳೊಂದಿಗೆ ಚಲಾಯಿಸುತ್ತದೆ.
Gunicorn ಅನ್ನು systemd ನಿರ್ವಹಿಸುತ್ತದೆ, ಇದು ಅದು ಕುಸಿದರೆ ಅಥವಾ ಸರ್ವರ್ ಮರುಪ್ರಾರಂಭವಾದರೆ ಅದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರುಪ್ರಾರಂಭವಾಗುವಂತೆ ಖಚಿತಪಡಿಸುತ್ತದೆ. ಇದು ಕೈಯಾರೆ ಹಸ್ತಕ್ಷೇಪವಿಲ್ಲದೇ ನಮಗೆ ಹೆಚ್ಚಿನ ಲಭ್ಯತೆಯನ್ನು ನೀಡುತ್ತದೆ.
Nginx - ರಿವರ್ಸ್ ಪ್ರಾಕ್ಸಿ & ಲೋಡ್ ಬ್ಯಾಲೆನ್ಸರ್
Nginx ನಮ್ಮ ರಿವರ್ಸ್ ಪ್ರಾಕ್ಸಿ ಮತ್ತು ಲೋಡ್ ಬ್ಯಾಲೆನ್ಸರ್ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಇದು Gunicorn ಮುಂದೆ ಇರುತ್ತದೆ ಮತ್ತು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ:
-
SSL/TLS ಟರ್ಮಿನೇಶನ್: HTTPS ಎನ್ಕ್ರಿಪ್ಶನ್/ಡಿಕ್ರಿಪ್ಶನ್
-
ಸ್ಟ್ಯಾಟಿಕ್ ಫೈಲ್ ಸರ್ವಿಂಗ್: CSS, JavaScript, ಚಿತ್ರಗಳು (ನೇರವಾಗಿ ಡಿಸ್ಕ್ನಿಂದ ಸೇವೆ)
-
ರಿವರ್ಸ್ ಪ್ರಾಕ್ಸಿ: ಡೈನಾಮಿಕ್ ವಿನಂತಿಗಳನ್ನು Gunicorn ಗೆ ಫಾರ್ವರ್ಡ್ ಮಾಡಿ
-
ರೇಟ್ ಲಿಮಿಟಿಂಗ್: ದುರುಪಯೋಗದಿಂದ ರಕ್ಷಿಸಿ
-
ವಿನಂತಿ ಕಂಪ್ರೆಶನ್: ವೇಗವಾದ ವರ್ಗಾವಣೆಗಾಗಿ Gzip ಕಂಪ್ರೆಶನ್
Ubuntu - ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್
ಎಲ್ಲಾ EC2 ಉದಾಹರಣೆಗಳು Ubuntu ಅನ್ನು ಚಲಾಯಿಸುತ್ತವೆ, ಇದು ನಮ್ಮ ಆಯ್ಕೆ ಮಾಡಿದ ಲಿನಕ್ಸ್ ವಿತರಣೆಯಾಗಿದೆ. ಲಭ್ಯವಿರುವಾಗ pip ಗಿಂತ Ubuntu python ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಬಳಸಲು ನಾವು ಆದ್ಯತೆ ನೀಡುತ್ತೇವೆ.
ಸಾಮಾನ್ಯ ವಿನಂತಿ ಹರಿವು:
flowchart LR
A[ಕ್ಲೈಂಟ್ ಬ್ರೌಸರ್] -->|HTTPS ವಿನಂತಿ| B[Nginx]
B -->|ಪ್ರಾಕ್ಸಿ ಟು| C[Gunicorn]
C -->|WSGI| D[Flask ಅಪ್ಲಿಕೇಶನ್]
D -->|ಪ್ರಶ್ನೆ| E[Valkey ಕ್ಯಾಶೆ]
E -->|ಮಿಸ್| F[DynamoDB]
F -->|ಪ್ರತಿಕ್ರಿಯೆ| E
E -->|ಹಿಟ್| G[ಪ್ರತಿಕ್ರಿಯೆ]
G --> B
B -->|ಪ್ರತಿಕ್ರಿಯೆ| ACloudFront - ಕಂಟೆಂಟ್ ಡೆಲಿವರಿ ನೆಟ್ವರ್ಕ್
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 ಗಾಗಿನ ಪೈಥಾನಿಕ್ ORM ಆಗಿದೆ, ಇದು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ:
- ಮಾಡೆಲ್ ವ್ಯಾಖ್ಯಾನಗಳು: ಡೇಟಾಬೇಸ್ ಟೇಬಲ್ಗಳಿಗಾಗಿ ಪೈಥಾನ್ ಕ್ಲಾಸ್ಗಳು
Valkey - ಇನ್-ಮೆಮೊರಿ ಕ್ಯಾಶೆ
Valkey (ರೆಡಿಸ್ನ ಒಂದು ಫೋರ್ಕ್) ನಮ್ಮ ಇನ್-ಮೆಮೊರಿ ಕ್ಯಾಶೆ ಲೇಯರ್ ಆಗಿದೆ, ಇದು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ:
-
ಸೆಷನ್ ಸಂಗ್ರಹಣೆ: 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 ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಚಲಾಯಿಸುತ್ತೇವೆ. ಈ ಸೇವೆಯು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ:
-
ವೆಕ್ಟರ್ ಹುಡುಕಾಟ: ಸಂಬಂಧಿತ ಪ್ರಶ್ನೆಗಳಿಗಾಗಿ ಸೆಮಾಂಟಿಕ್ ಸಮಾನತೆ
-
ಸ್ವಯಂಪೂರ್ಣ: ಪ್ರಿಫಿಕ್ಸ್-ಆಧಾರಿತ ಹುಡುಕಾಟ ಸಲಹೆಗಳು
-
ಜನಪ್ರಿಯ ಪ್ರಶ್ನೆಗಳು: ಹೆ