ਇੰਫਰਾਸਟਰਕਚਰ ਸੰਖੇਪ ਜਾਣਕਾਰੀ

ਇਹ ਲੇਖ Thinvent ਪਬਲਿਕ ਵੈਬਸਾਈਟ ਨੂੰ ਸ਼ਕਤੀ ਪ੍ਰਦਾਨ ਕਰਨ ਵਾਲੇ ਇੰਫਰਾਸਟਰਕਚਰ ਦਾ ਇੱਕ ਵਿਸਤ੍ਰਿਤ ਸੰਖੇਪ ਜਾਣਕਾਰੀ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਅਸੀਂ ਵੈਬ ਸਰਵਰ ਤੋਂ ਲੈ ਕੇ ਡੇਟਾਬੇਸ ਲੇਅਰ ਤੱਕ ਦੇ ਪੂਰੇ ਟੈਕਨੋਲੋਜੀ ਸਟੈਕ ਨੂੰ ਕਵਰ ਕਰਾਂਗੇ, ਅਤੇ ਸਮਝਾਉਣਗੇ ਕਿ ਸਾਰੇ ਕੰਪੋਨੈਂਟ ਕਿਵੇਂ ਮਿਲ ਕੇ ਇੱਕ ਤੇਜ਼, ਭਰੋਸੇਯੋਗ ਅਤੇ ਸਕੇਲੇਬਲ ਈ-ਕਾਮਰਸ ਅਨੁਭਵ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ।

ਵੈਬ ਐਪਲੀਕੇਸ਼ਨ ਸਟੈਕ

Flask - ਬੁਨਿਆਦ

ਸਾਡੀ ਵੈਬਸਾਈਟ Flask 'ਤੇ ਬਣੀ ਹੋਈ ਹੈ, ਜੋ ਕਿ ਇੱਕ ਹਲਕਾ ਅਤੇ ਲਚਕਦਾਰ ਪਾਈਥਨ ਵੈਬ ਫਰੇਮਵਰਕ ਹੈ। Flask ਕੋਰ ਰੂਟਿੰਗ, ਬੇਨਤੀ/ਜਵਾਬ ਹੈਂਡਲਿੰਗ, ਅਤੇ ਬਲੂਪ੍ਰਿੰਟ ਸਿਸਟਮ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਜੋ ਸਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਮਾਡਿਊਲਰ ਕੰਪੋਨੈਂਟਾਂ ਵਿੱਚ ਸੰਗਠਿਤ ਕਰਦਾ ਹੈ।

ਸਾਡੇ ਵਲੋਂ ਵਰਤੀਆਂ ਜਾਂਦੀਆਂ ਮੁੱਖ Flask ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ:

  • ਬਲੂਪ੍ਰਿੰਟ: ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਤਰਕਸੰਗਤ ਮੋਡੀਊਲਾਂ (ਵੈੱਬ, ਏਪੀਆਈ, ਕਾਰਟ, ਪ੍ਰੋਡਕਟ, ਆਦਿ) ਵਿੱਚ ਸੰਗਠਿਤ ਕਰੋ

  • 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 ਪਾਈਥਨ ਪੈਕੇਜਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਤਰਜੀਹ ਦਿੰਦੇ ਹਾਂ।

ਆਮ ਬੇਨਤੀ ਦਾ ਪ੍ਰਵਾਹ ਹੈ:

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/* - ਏਪੀਆਈ ਐਂਡਪੁਆਇੰਟ ਬਿਨਾਂ ਕੈਸ਼ਿੰਗ ਦੇ

  • /cart - ਕਾਰਟ 24-ਘੰਟੇ TTL ਨਾਲ

  • /set-language - ਬਿਨਾਂ ਕੈਸ਼ਿੰਗ ਦੇ (ਡਾਇਨਾਮਿਕ)

ਡੇਟਾ ਲੇਅਰ

DynamoDB - ਪ੍ਰਾਇਮਰੀ ਡੇਟਾਬੇਸ

ਅਸੀਂ ਆਪਣੇ ਪ੍ਰਾਇਮਰੀ ਡੇਟਾਬੇਸ ਵਜੋਂ Amazon DynamoDB ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ। DynamoDB ਇੱਕ NoSQL ਡੇਟਾਬੇਸ ਹੈ।

ਸਾਡੀਆਂ DynamoDB ਟੇਬਲਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ:

  • ਸਿਫਾਰਿਸ਼ਾਂ: AI-ਜਨਰੇਟ ਕੀਤੀਆਂ ਪ੍ਰੋਡਕਟ ਸਿਫਾਰਿਸ਼ਾਂ

  • ਪ੍ਰੋਡਕਟ ਵਰਣਨ: ਮਲਟੀਪਲ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਪ੍ਰੋਡਕਟ ਵਰਣਨ

  • ਕੁਐਰੀ ਪੇਜ਼: SEO ਲਈ ਪਾਰਸ ਕੀਤੇ ਗਏ ਕੁਐਰੀ ਪੇਜ਼

ਅਸੀਂ PynamoDB ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ, ਜੋ ਕਿ DynamoDB ਲਈ ਇੱਕ ਪਾਈਥੋਨਿਕ ORM ਹੈ, ਜੋ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ:

  • ਮਾਡਲ ਪਰਿਭਾਸ਼ਾਵਾਂ: ਡੇਟਾਬੇਸ ਟੇਬਲਾਂ ਲਈ ਪਾਈਥਨ ਕਲਾਸਾਂ

Valkey - ਇਨ-ਮੈਮੋਰੀ ਕੈਸ਼

Valkey (Redis ਦਾ ਇੱਕ ਫੋਰਕ) ਸਾਡੀ ਇਨ-ਮੈਮੋਰੀ ਕੈਸ਼ ਲੇਅਰ ਹੈ, ਜੋ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ:

  • ਸੈਸ਼ਨ ਸਟੋਰੇਜ: 30-ਦਿਨਾਂ ਦੀ ਸਲਾਈਡਿੰਗ ਐਕਸਪਾਇਰੀ ਨਾਲ ਯੂਜ਼ਰ ਸੈਸ਼ਨ

  • ਅਕਸਰ ਐਕਸੈਸ ਕੀਤਾ ਗਿਆ ਡੇਟਾ: ਪ੍ਰੋਡਕਟ ਗਿਣਤੀਆਂ, ਪ੍ਰਸਿੱਧ ਕੁਐਰੀਆਂ

  • ਆਟੋਕੰਪਲੀਟ ਕੈਸ਼: ਖੋਜ ਸੁਝਾਅ

  • ਚਿੱਤਰ ਮੈਨੀਫੈਸਟ: ਪ੍ਰੋਡਕਟ ਚਿੱਤਰ ਲੋਕੇਸ਼ਨਾਂ

Valkey ਮਹੱਤਵਪੂਰਨ ਪ੍ਰਦਰਸ਼ਨ ਲਾਭ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ:

  • 100x ਤੇਜ਼ ਪੜ੍ਹਨ ਆਪਰੇਸ਼ਨਾਂ ਲਈ DynamoDB ਤੋਂ

  • ਘੱਟ ਡੇਟਾਬੇਸ ਲੋਡ: ਕੈਸ਼ ਹਿੱਟਾਂ DynamoDB ਕੁਐਰੀਆਂ ਤੋਂ ਬਚਦੀਆਂ ਹਨ

  • ਸੈਸ਼ਨ ਪਰਸਿਸਟੈਂਸ: ਬੇਨਤੀਆਂ ਵਿੱਚ Valkey-ਬੈਕਡ ਸੈਸ਼ਨ

ਅਸੀਂ Valkey ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ:

  • ਸੈਸ਼ਨ: ਯੂਜ਼ਰ ਲੌਗਇਨ ਸਟੇਟ, ਕਾਰਟ ਡੇਟਾ

  • ਕੈਸ਼ਿੰਗ: ਪ੍ਰਸਿੱਧ ਕੁਐਰੀਆਂ, ਆਟੋਕੰਪਲੀਟ ਸੁਝਾਅ

  • ਕਾਊਂਟਰ: ਪ੍ਰੋਡਕਟ ਸਟਾਕ ਗਿਣਤੀਆਂ (ਪ੍ਰਦਰਸ਼ਨ ਲਈ ਕੈਸ਼ ਕੀਤਾ)

  • ਕਤਾਰਾਂ: ਬੈਕਗ੍ਰਾਊਂਡ ਜੌਬ ਪ੍ਰੋਸੈਸਿੰਗ

S3 - ਆਬਜੈਕਟ ਸਟੋਰੇਜ

Amazon S3 ਸਾਡੀ ਆਬਜੈਕਟ ਸਟੋਰੇਜ ਸਰਵਿਸ ਹੈ।

ਅਸੀਂ S3 ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ:

  • ਪ੍ਰੋਡਕਟ ਚਿੱਤਰ: ਹਾਈ-ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਪ੍ਰੋਡਕਟ ਫੋਟੋਆਂ

  • ਡੇਟਾਸ਼ੀਟਾਂ: PDF ਪ੍ਰੋਡਕਟ ਸਪੈਸੀਫਿਕੇਸ਼ਨਾਂ

  • ਸਟੈਟਿਕ ਐਸੈਟ: CSS, JS, ਚਿੱਤਰ

DNS ਅਤੇ ਰੂਟਿੰਗ

Route53 - ਡੋਮੇਨ ਪ੍ਰਬੰਧਨ

Route53 ਸਾਡੇ DNS ਪ੍ਰਬੰਧਨ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ: