بنیادی ڈھانچے کا جائزہ

یہ مضمون Thinvent عوامی ویب سائٹ کو طاقت فراہم کرنے والے بنیادی ڈھانچے کا جامع جائزہ فراہم کرتا ہے۔ ہم ویب سرور سے لے کر ڈیٹا بیس کی تہہ تک مکمل ٹیکنالوجی اسٹیک کا احاطہ کریں گے، اور بتائیں گے کہ تمام اجزاء مل کر ایک تیز، قابل اعتماد، اور پیمانے پر چلنے والے ای کامرس تجربے کو کیسے فراہم کرتے ہیں۔

ویب ایپلیکیشن اسٹیک

Flask - بنیاد

ہماری ویب سائٹ Flask پر بنی ہے، جو ایک ہلکا پھلکا اور لچکدار Python ویب فریم ورک ہے۔ Flask بنیادی راؤٹنگ، درخواست/جواب کی ہینڈلنگ، اور بلیو پرنٹ سسٹم فراہم کرتا ہے جو ہماری ایپلیکیشن کو ماڈیولر اجزاء میں منظم کرتا ہے۔

ہم جو اہم Flask خصوصیات استعمال کرتے ہیں:

  • بلیو پرنٹس: ایپلیکیشن کو منطقی ماڈیولز (ویب، API، کارٹ، پروڈکٹ، وغیرہ) میں منظم کریں۔

  • Jinja2 ٹیمپلیٹنگ: ٹیمپلیٹ وراثت کے ساتھ سرور سائیڈ HTML جنریشن

  • درخواست کا سیاق و سباق: HTTP درخواستوں اور سیشنز کی خودکار ہینڈلنگ

  • Werkzeug: ڈویلپمنٹ سرور اور افادیت کے افعال

Flask ایپلیکیشن ویب ماڈیول میں شروع کی جاتی ہے جہاں ہم:

  • ویب بلیو پرنٹ بناتے ہیں۔

  • بین الاقوامیت کے لیے Babel شروع کرتے ہیں۔

  • Valkey سیشن اسٹوریج کو ترتیب دیتے ہیں۔

  • ٹیمپلیٹ متغیرات کے لیے سیاق و سباق کے پروسیسرز قائم کرتے ہیں۔

Gunicorn - پروڈکشن سرور

پروڈکشن کے لیے، ہم Gunicorn (گرین یونیکورن) استعمال کرتے ہیں، جو ایک Python WSGI HTTP سرور ہے۔ Gunicorn ہماری Flask ایپلیکیشن کو متعدد ورکر پروسیسز کے ساتھ چلاتا ہے۔

Gunicorn کو systemd کے ذریعے منظم کیا جاتا ہے، جو یہ یقینی بناتا ہے کہ اگر یہ کریش ہو جائے یا سرور دوبارہ بوٹ ہو جائے تو یہ خود بخود دوبارہ شروع ہو جائے۔ یہ ہمیں دستی مداخلت کے بغیر اعلی دستیابی فراہم کرتا ہے۔

Nginx - ریورس پراکسی اور لوڈ بیلنسر

Nginx ہمارے ریورس پراکسی اور لوڈ بیلنسر کے طور پر کام کرتا ہے۔ یہ Gunicorn کے سامنے بیٹھتا ہے اور مندرجہ ذیل کو ہینڈل کرتا ہے:

  • SSL/TLS خاتمہ: HTTPS خفیہ کاری/ڈی کرپشن

  • سٹیٹک فائل سروس: CSS، جاوا اسکرپٹ، تصاویر (براہ راست ڈسک سے سروس کی جاتی ہیں)

  • ریورس پراکسی: متحرک درخواستوں کو Gunicorn کی طرف فارورڈ کریں۔

  • شرح کی حد: بدسلوکی سے تحفظ

  • درخواست کمپریشن: تیز تر منتقلی کے لیے Gzip کمپریشن

Ubuntu - آپریٹنگ سسٹم

تمام EC2 مثالیں Ubuntu چلاتی ہیں، ہمارا منتخب کردہ Linux ڈسٹری بیوشن۔ ہم 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 -->|جواب| 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 نمایاں کارکردگی کے فوائد فراہم کرتی ہے:

  • 100 گنا تیز پڑھنے کے آپریشنز کے لیے DynamoDB سے

  • کم ڈیٹا بیس لوڈ: کیشے ہٹس 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[کلائنٹ براؤزر] -->|DNS استفسار| B[Route53]
    B -->|IP پتہ| C[CloudFront]
    C -->|کیشے چیک| D{کیشے ہٹ؟}
    D -->|ہاں| E[کیچ شدہ مواد واپس کریں۔]
    D -->|نہیں| F[Nginx]
    F -->|پراکسی| G[Gunicorn]
    G -->|WSGI| H[Flask ایپ]
    H -->|کیشے چیک| I[Valkey]
    I -->|ہٹ| J[کیچ شدہ ڈیٹا واپس کریں۔]
    I -->|مِس| K[DynamoDB]
    K -->|استفسار| L[ڈیٹا واپس کریں۔]
    L --> I
    J --> M[جواب بنائیں]
    E --> M
    M --> N[کلائنٹ کو بھیجیں]

مانیٹرنگ اور صحت

UptimeRobot - بیرونی مانیٹرنگ

ہم تمام عوامی اینڈ پوائنٹس کی بیرونی مانیٹرنگ کے لیے UptimeRobot استعمال کرتے ہیں:

  • بیک اینڈ سرور: بیک اینڈ ویب سائٹ

  • www.thinvent.in: عوامی ویب سائٹ

صحت کی جانچ

  • Gunicorn: systemd دوبارہ شروع ہونے کا انتظام کرتا ہے۔

  • Flask: /health اینڈ پوائنٹ حیثیت واپس کرتا ہے۔

  • Valkey: کنکشن کی صحت کی نگرانی کی جاتی ہے۔

  • DynamoDB: تاخیر اور تھرو پٹ کی نگرانی کی جاتی ہے۔

لاگنگ

  • ایپلیکیشن لاگز: Gunicorn error.log

  • ایکسس لاگز: Gunicorn access.log

  • ای میل: Python tracebacks کے ساتھ اہم واقعات کے لیے رئیل ٹائم اطلاعات

خلاصہ

ہمارا بنیادی ڈھانچہ ڈیزائن کیا گیا ہے:

  • کارکردگی: متعدد کیشنگ کی تہیں، CDN، آپٹمائزڈ استفسارات

  • پیمانہ پذیری: آٹو سکیلنگ ڈیٹا بیس، لوڈ بیلنسنگ

  • لاگت کی تاثیر: استعمال کے حساب سے ادائیگی، ڈیٹا بیس کے بوجھ کو کم کرنے کے لیے کیشنگ

Flask, Gunicorn, Nginx, Ubuntu, DynamoDB, Valkey, CloudFront, اور UptimeRobot کا مجموعہ ہمارے ای کامرس پلیٹ فارم کے لیے ایک مضبوط، پیمانے پر چلنے والی بنیاد فراہم کرتا ہے۔

متعلقہ مضامین