FastAPI এর জন্য Production Ready সেটআপ

Web Development - ফাস্টএপিআই (FastAPI) - FastAPI এর Performance Optimization
237

FastAPI একটি দ্রুত, নিরাপদ এবং আধুনিক Python ওয়েব ফ্রেমওয়ার্ক, যা পণ্যভিত্তিক অ্যাপ্লিকেশন তৈরি করার জন্য অত্যন্ত উপযোগী। যখন আপনি FastAPI অ্যাপ্লিকেশন প্রোডাকশন পরিবেশে নিয়ে আসবেন, তখন আপনার অ্যাপ্লিকেশনটি নিরাপদ, স্কেলেবল, এবং কার্যকরী হওয়া জরুরি। এখানে, আমরা FastAPI অ্যাপ্লিকেশনকে production-ready করতে প্রয়োজনীয় কনফিগারেশন এবং সেটআপ নিয়ে আলোচনা করব।


Step 1: FastAPI অ্যাপ তৈরি

প্রথমে একটি সহজ FastAPI অ্যাপ তৈরি করি:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, Production!"}

এটি একটি সাধারণ অ্যাপ যা একটি রুট এন্ডপয়েন্ট প্রদান করে। প্রোডাকশনে যাওয়ার আগে, আমরা বিভিন্ন কনফিগারেশন এবং উন্নত সেটআপ সম্পন্ন করব।


Step 2: Uvicorn এর সাথে অ্যাপ চালানো

প্রোডাকশন পরিবেশে Uvicorn একটি হালকা, দ্রুত এবং কার্যকর ASGI সার্ভার হিসেবে FastAPI অ্যাপ্লিকেশন চালাতে ব্যবহৃত হয়। Uvicorn এর সাথে Gunicorn বা Daphne ব্যবহার করলে অ্যাপ আরও ভালোভাবে স্কেল এবং ম্যানেজ করা যায়।

Uvicorn ইনস্টল:

pip install uvicorn

Uvicorn দিয়ে অ্যাপ চালানো:

uvicorn main:app --host 0.0.0.0 --port 80 --workers 4

এখানে:

  • --host 0.0.0.0: অ্যাপটি সমস্ত নেটওয়ার্ক থেকে অ্যাক্সেসযোগ্য হবে।
  • --port 80: HTTP স্ট্যান্ডার্ড পোর্ট 80 এ অ্যাপ চালানো হবে।
  • --workers 4: ৪টি ওয়াকার ব্যবহার করা হবে, যা প্রোডাকশন পরিবেশে অ্যাপ্লিকেশনকে স্কেল করতে সাহায্য করে।

Step 3: Gunicorn + Uvicorn Worker ব্যবহার করা

প্রোডাকশনে, Gunicorn ব্যবহার করা হয়, যা একটি উচ্চ-দক্ষতার WSGI সার্ভার, এবং Uvicorn এর সাথে কাজ করে অ্যাসিঙ্ক্রোনাস ফিচার সাপোর্ট দেয়।

Gunicorn ইনস্টল:

pip install gunicorn

Gunicorn + Uvicorn Worker দিয়ে অ্যাপ চালানো:

gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:80

এখানে:

  • -w 4: ৪টি ওয়াকার (processes) ব্যবহার করা হবে।
  • -k uvicorn.workers.UvicornWorker: Uvicorn এর ওয়াকার ব্যবহার করা হবে।
  • --bind 0.0.0.0:80: অ্যাপ 80 পোর্টে এবং সমস্ত নেটওয়ার্কে অ্যাক্সেসযোগ্য হবে।

Step 4: Reverse Proxy হিসেবে Nginx কনফিগার করা

প্রোডাকশন পরিবেশে, Nginx সাধারণত অ্যাপ্লিকেশন সার্ভারের জন্য একটি reverse proxy হিসেবে ব্যবহৃত হয়। এটি HTTPS সিকিউরিটি এবং ভারী লোড পরিচালনা করতে সাহায্য করে।

Nginx কনফিগারেশন উদাহরণ:

  1. Nginx ইনস্টল করুন:

    sudo apt update
    sudo apt install nginx
    
  2. Nginx কনফিগারেশন ফাইল তৈরি করুন: /etc/nginx/sites-available/your-app নামে একটি কনফিগারেশন ফাইল তৈরি করুন:

    server {
        listen 80;
        server_name your-domain.com;
    
        location / {
            proxy_pass http://127.0.0.1:80;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    
  3. Nginx কনফিগারেশন সক্রিয় করুন:

    sudo ln -s /etc/nginx/sites-available/your-app /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl restart nginx
    

এখন, Nginx আপনার FastAPI অ্যাপ্লিকেশনকে প্রোডাকশন পরিবেশে রিভার্স প্রক্সি হিসেবে পরিচালনা করবে।


Step 5: HTTPS কনফিগারেশন (Let's Encrypt)

প্রোডাকশনে HTTPS ব্যবহার করা জরুরি। Let's Encrypt একটি ফ্রি সার্টিফিকেট প্রদানকারী এবং Certbot এর মাধ্যমে HTTPS সক্রিয় করা যায়।

Certbot ইনস্টল:

sudo apt install certbot python3-certbot-nginx

Certbot দিয়ে HTTPS সার্টিফিকেট গ্রহণ:

sudo certbot --nginx -d your-domain.com

এটি আপনার Nginx কনফিগারেশন আপডেট করবে এবং HTTPS সক্রিয় করবে।


Step 6: Logging এবং Monitoring

প্রোডাকশন পরিবেশে অ্যাপ্লিকেশনের Logging এবং Monitoring অত্যন্ত গুরুত্বপূর্ণ। FastAPI তে Logging এবং Uvicorn লগ ব্যবস্থাপনা খুব সহজ।

Logging কনফিগারেশন:

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

@app.get("/items/")
def read_item():
    logger.info("Item route accessed")
    return {"message": "Item accessed"}

এখানে, FastAPI লগিং এর জন্য Python এর বিল্ট-ইন logging লাইব্রেরি ব্যবহার করা হয়েছে।

Prometheus এবং Grafana ব্যবহারের মাধ্যমে Monitoring:

আপনি Prometheus এবং Grafana ব্যবহার করে আপনার FastAPI অ্যাপ্লিকেশন মনিটর করতে পারেন। Prometheus থেকে মেট্রিক্স সংগ্রহ এবং Grafana দিয়ে ড্যাশবোর্ডে দেখানো হয়।


Step 7: Scaling and Load Balancing

প্রোডাকশন পরিবেশে অ্যাপ স্কেল করার জন্য আপনি Load Balancer ব্যবহার করতে পারেন, যেমন HAProxy, Nginx, অথবা Cloud Providers (AWS, Azure) এর লোড ব্যালান্সিং সার্ভিস।

Scaling example:

gunicorn -w 8 -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:8000

এখানে -w 8 নির্দেশ করে যে ৮টি ওয়াকার প্রসেস চালানো হবে, যা অ্যাপকে উচ্চ লোড হ্যান্ডেল করার ক্ষমতা দেবে।


Step 8: Security Best Practices

FastAPI অ্যাপ্লিকেশনটি প্রোডাকশন পরিবেশে নিরাপদ রাখতে কিছু গুরুত্বপূর্ণ নিরাপত্তা কনফিগারেশন করা উচিত।

  1. SQL Injection, XSS এবং CSRF প্রতিরোধ করতে সঠিক সিকিউরিটি কনফিগারেশন
  2. OAuth2, JWT (JSON Web Tokens) ব্যবহার করে অথেনটিকেশন এবং অথোরাইজেশন কনফিগারেশন।
  3. HTTP headers যেমন X-Frame-Options, X-XSS-Protection, এবং Strict-Transport-Security কনফিগারেশন।
  4. CORS (Cross-Origin Resource Sharing) কনফিগারেশন।
  5. Firewall এবং DDOS Protection

Step 9: Auto Restart with Systemd

প্রোডাকশনে অ্যাপ্লিকেশন চালানোর সময় auto-restart নিশ্চিত করা উচিত। systemd ব্যবহার করে অ্যাপ্লিকেশনটি স্বয়ংক্রিয়ভাবে পুনরায় চালু করা যায়।

systemd service file:

  1. Service ফাইল তৈরি করা: /etc/systemd/system/your-app.service

    [Unit]
    Description=FastAPI Application
    After=network.target
    
    [Service]
    User=your-user
    WorkingDirectory=/path/to/your/app
    ExecStart=/path/to/your/venv/bin/gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:8000
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
  2. systemd সেবা চালু করা:

    sudo systemctl start your-app
    sudo systemctl enable your-app
    

FastAPI অ্যাপ্লিকেশনকে প্রোডাকশন পরিবেশে scalable, secure, এবং reliable করার জন্য উপরে বর্ণিত কনফিগারেশনগুলো ব্যবহার করতে পারেন। Uvicorn, Gunicorn, Nginx, HTTPS, এবং Load Balancing সহ Logging এবং Monitoring অ্যাপ্লিকেশনটি প্রোডাকশন পরিবেশে পরিচালনা এবং মনিটরিংকে সহজ করে তোলে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...