Skill

FastAPI এর জন্য Continuous Integration এবং Deployment

Web Development - ফাস্টএপিআই (FastAPI)
266

Continuous Integration (CI) এবং Continuous Deployment (CD) হল আধুনিক সফটওয়্যার ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ অংশ, যেখানে ডেভেলপারদের কোড পরিবর্তনগুলি নিয়মিতভাবে একত্রিত (integrated) এবং ডিপ্লয়ড (deployed) করা হয়। FastAPI অ্যাপ্লিকেশনগুলো CI/CD প্রক্রিয়ার মাধ্যমে সহজেই ডেভেলপ, টেস্ট, এবং প্রোডাকশনে চালানো যায়।

এই গাইডে, আমরা আলোচনা করব কিভাবে FastAPI অ্যাপ্লিকেশনের জন্য Continuous Integration (CI) এবং Continuous Deployment (CD) সেটআপ করা যায়, বিশেষ করে GitHub Actions এবং Docker ব্যবহার করে।


Step 1: Continuous Integration (CI) Setup

Continuous Integration (CI) হল একটি প্রক্রিয়া যেখানে ডেভেলপারদের কোড পরিবর্তনগুলি নিয়মিতভাবে বিল্ড এবং টেস্ট করা হয়। এটি সাধারণত GitHub Actions, Travis CI, বা CircleCI এর মাধ্যমে করা হয়।

1.1 GitHub Actions সেটআপ

GitHub Actions একটি CI/CD টুল যা GitHub রিপোজিটরিতে কোড push হওয়ার পর অটোমেটিক প্রক্রিয়া শুরু করতে সাহায্য করে। FastAPI অ্যাপ্লিকেশনের জন্য GitHub Actions সেটআপ করার উদাহরণ দেখানো হল।

GitHub Actions Workflow তৈরি করা
  1. প্রথমে আপনার FastAPI অ্যাপ্লিকেশনের রিপোজিটরি খুলুন।
  2. .github/workflows/ ফোল্ডারে একটি YAML ফাইল তৈরি করুন, যেমন ci.yml
name: FastAPI CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.9'

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt

      - name: Run tests
        run: |
          pytest tests/

ব্যাখ্যা:

  • on: push এবং pull_request ইভেন্টের জন্য CI চালু হবে, যা main ব্রাঞ্চে হবে।
  • runs-on: ubuntu-latest: GitHub Actions কাজ করবে Ubuntu পরিবেশে।
  • actions/setup-python: Python সেটআপ করা হবে।
  • pip install -r requirements.txt: প্রয়োজনীয় প্যাকেজ ইনস্টল করা হবে।
  • pytest: কোডের টেস্ট চালানো হবে।

1.2 GitHub Actions এর মাধ্যমে টেস্ট চালানো

কোড রিপোজিটরিতে পুশ করার পর, GitHub Actions স্বয়ংক্রিয়ভাবে CI প্রক্রিয়া চালাবে, এবং pytest ব্যবহার করে টেস্ট রান করবে।


Step 2: Continuous Deployment (CD) Setup

Continuous Deployment (CD) একটি প্রক্রিয়া যেখানে কোডের পরিবর্তনগুলো স্বয়ংক্রিয়ভাবে প্রোডাকশনে ডিপ্লয় করা হয়। Docker এবং CI/CD টুলস ব্যবহার করে এটি সহজে করা যায়।

2.1 Docker Containerization

FastAPI অ্যাপ্লিকেশনকে Docker কন্টেইনারে রূপান্তরিত করা হয়, যাতে এটি যেকোনো পরিবেশে সহজে চলতে পারে।

Dockerfile তৈরি করা

FastAPI অ্যাপ্লিকেশনকে Docker কন্টেইনারে প্যাকেজ করার জন্য Dockerfile তৈরি করুন।

# Step 1: Use an official Python runtime as a parent image
FROM python:3.9-slim

# Step 2: Set the working directory in the container
WORKDIR /app

# Step 3: Copy the current directory contents into the container at /app
COPY . /app

# Step 4: Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Step 5: Make port 80 available to the world outside this container
EXPOSE 80

# Step 6: Define environment variable
ENV NAME World

# Step 7: Run FastAPI app using Uvicorn when the container launches
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]

ব্যাখ্যা:

  • FROM python:3.9-slim: Python 3.9 Slim ইমেজ ব্যবহার করা হচ্ছে।
  • COPY . /app: বর্তমান ডিরেক্টরি থেকে সমস্ত ফাইল /app ডিরেক্টরিতে কপি করা হবে।
  • RUN pip install -r requirements.txt: প্রয়োজনীয় প্যাকেজ ইনস্টল করা হবে।
  • CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]: FastAPI অ্যাপ্লিকেশন চালানোর জন্য uvicorn চালানো হবে।

2.2 Docker Build and Run

Docker কন্টেইনার তৈরি করতে:

docker build -t fastapi-app .

এবং কন্টেইনার চালাতে:

docker run -d -p 80:80 fastapi-app

এখন আপনার FastAPI অ্যাপটি Docker কন্টেইনারের মধ্যে চলছে।


Step 3: Deployment to a Cloud Provider (AWS, Heroku, etc.)

FastAPI অ্যাপ্লিকেশনটি ক্লাউড সার্ভারে Docker কন্টেইনারের মাধ্যমে ডিপ্লয় করা যেতে পারে। উদাহরণস্বরূপ, AWS Elastic Beanstalk, Heroku, বা DigitalOcean এ আপনার FastAPI অ্যাপ্লিকেশন ডিপ্লয় করা যেতে পারে।

3.1 AWS Elastic Beanstalk Deployment

AWS Elastic Beanstalk একটি সিম্পল এবং ম্যানেজড পদ্ধতি যা আপনার FastAPI অ্যাপ্লিকেশন সহজে ডিপ্লয় করতে সাহায্য করে। Docker কন্টেইনার ডিপ্লয় করার জন্য আপনি Dockerrun.aws.json ফাইল ব্যবহার করতে পারেন।

Dockerrun.aws.json ফাইলের উদাহরণ:

{
  "AWSEBDockerrunVersion": 2,
  "Image": {
    "Name": "your-docker-image-name",
    "Update": "true"
  },
  "Ports": [
    {
      "ContainerPort": "80"
    }
  ]
}

এটি AWS Elastic Beanstalkে Docker কন্টেইনার দিয়ে অ্যাপ্লিকেশন ডিপ্লয় করতে সাহায্য করবে।

3.2 Heroku Deployment

Heroku তে Docker কন্টেইনার দিয়ে FastAPI অ্যাপ ডিপ্লয় করতে, আপনি প্রথমে Heroku CLI ইন্সটল করুন এবং তারপর নিচের কমান্ডগুলি চালান:

heroku create your-app-name
heroku container:login
heroku container:push web --app your-app-name
heroku container:release web --app your-app-name

Heroku আপনার Docker কন্টেইনারটিকে সঠিকভাবে ডিপ্লয় করবে।


Step 4: Integrating CI/CD with GitHub Actions and Docker

আপনি GitHub Actions এবং Docker এর মাধ্যমে পুরো CI/CD Pipeline তৈরি করতে পারেন যাতে কোড push করার পর Continuous Integration এবং Continuous Deployment স্বয়ংক্রিয়ভাবে হয়।

GitHub Actions (CD) Workflow Example

name: Deploy FastAPI to Docker

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Log in to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Build and push Docker image
        uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          tags: your-dockerhub-username/fastapi-app:latest

      - name: Deploy to AWS (or other cloud)
        run: |
          # Deploy commands for AWS, DigitalOcean, Heroku etc.

এটি GitHub Actions দিয়ে Docker কন্টেইনার তৈরি, push, এবং ক্লাউড সার্ভারে ডিপ্লয় করার প্রক্রিয়া স্বয়ংক্রিয়ভাবে সম্পন্ন করবে।


FastAPI তে Continuous Integration (CI) এবং Continuous Deployment (CD) সেটআপ করা আধুনিক সফটওয়্যার ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ অংশ। GitHub Actions, Docker, এবং ক্লাউড প্ল্যাটফর্ম (যেমন AWS, Heroku) ব্যবহার করে আপনি আপনার FastAPI অ্যাপ্লিকেশনকে সহজে CI/CD প্রক্রিয়ার মধ্যে অন্তর্ভুক্ত করতে পারেন, যা কোডের অটোমেটিক টেস্টিং এবং প্রোডাকশনে ডিপ্লয়মেন্ট নিশ্চিত করবে।

Content added By

Continuous Integration (CI) এবং Continuous Deployment (CD) কনফিগার করা

243

Continuous Integration (CI) এবং Continuous Deployment (CD) হল সফটওয়্যার ডেভেলপমেন্ট প্রক্রিয়া, যা আপনাকে কোডের পরিবর্তন দ্রুত এবং স্বয়ংক্রিয়ভাবে পরীক্ষা, বিল্ড এবং ডিপ্লয় করতে সহায়তা করে। FastAPI অ্যাপ্লিকেশনের জন্য CI/CD কনফিগার করা আপনাকে অটোমেটেড টেস্টিং, কোড কভারেজ এবং প্রোডাকশন পরিবেশে অ্যাপ্লিকেশন ডিপ্লয়মেন্ট দ্রুত করতে সহায়তা করবে।

এখানে আমরা GitHub Actions এবং Heroku প্ল্যাটফর্ম ব্যবহার করে FastAPI অ্যাপ্লিকেশনের জন্য CI/CD কনফিগার করার প্রক্রিয়া দেখব।


Step 1: GitHub রিপোজিটরি তৈরি করা

প্রথমে, আপনার FastAPI অ্যাপ্লিকেশনটি একটি GitHub রিপোজিটরিতে আপলোড করুন। যদি এটি না থাকে, তবে একটি রিপোজিটরি তৈরি করুন এবং সেখানে অ্যাপ পুশ করুন।

উদাহরণ: FastAPI অ্যাপের ফোল্ডার স্ট্রাকচার

my_fastapi_project/
├── app/
│   ├── main.py
│   ├── requirements.txt
├── .github/
│   └── workflows/
│       └── ci.yml

Step 2: requirements.txt ফাইল তৈরি করা

requirements.txt ফাইল তৈরি করে FastAPI এবং অন্যান্য প্যাকেজগুলোর ডিপেনডেন্সি উল্লেখ করুন:

fastapi
uvicorn
pytest
httpx

Step 3: GitHub Actions CI কনফিগার করা

GitHub Actions CI কনফিগারেশন ফাইল তৈরি করতে হবে, যা GitHub রিপোজিটরিতে /.github/workflows/ci.yml ফোল্ডারে থাকবে।

উদাহরণ: ci.yml ফাইল

name: FastAPI CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.9'

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    - name: Run tests
      run: |
        pytest > result.log; tail -n 10 result.log

এখানে:

  • on: রিপোজিটরিতে main ব্রাঞ্চে কোড পুশ বা পুল রিকোয়েস্ট হলে CI প্রক্রিয়া শুরু হবে।
  • jobs: একাধিক জব চলবে, যেখানে একাধিক স্টেপ রয়েছে:
    • Checkout code: রিপোজিটরি থেকে কোড চেক আউট করা।
    • Set up Python: Python 3.9 সেটআপ করা।
    • Install dependencies: requirements.txt ফাইল থেকে ডিপেনডেন্সি ইনস্টল করা।
    • Run tests: pytest দিয়ে টেস্ট চালানো।

Step 4: GitHub Actions CI রান করা

এখন, আপনি GitHub Actions এর মাধ্যমে CI টেস্ট রান করতে পারবেন। GitHub রিপোজিটরি-তে কোড পুশ করার পর, CI প্রক্রিয়া শুরু হবে এবং টেস্টিং রিপোর্ট GitHub Actions এর মধ্যে দেখতে পারবেন।


Step 5: Continuous Deployment (CD) কনফিগার করা

FastAPI অ্যাপ্লিকেশনটি Heroku বা অন্য কোন প্রোডাকশন পরিবেশে ডিপ্লয় করার জন্য, Heroku একটি জনপ্রিয় পছন্দ। এখানে আমরা Heroku প্ল্যাটফর্ম ব্যবহার করে CD কনফিগার করব।

Heroku CLI ইনস্টল:

প্রথমে Heroku CLI ইনস্টল করুন এবং লগইন করুন:

curl https://cli-assets.heroku.com/install.sh | sh
heroku login

Step 6: Heroku অ্যাপ তৈরি করা

Heroku তে একটি নতুন অ্যাপ তৈরি করুন:

heroku create my-fastapi-app

এটি Heroku তে একটি নতুন অ্যাপ তৈরি করবে এবং ডোমেইন নাম প্রদান করবে।


Step 7: GitHub Actions CI থেকে CD কনফিগার করা

Heroku তে অ্যাপ ডিপ্লয় করার জন্য, GitHub Actions কে Heroku অ্যাকাউন্টের সাথে সংযুক্ত করতে হবে। এটি করার জন্য Heroku API Key ব্যবহার করা হয়।

Heroku API Key সেট করা

Heroku অ্যাকাউন্টে লগ ইন করার পর, API Key পেতে, টার্মিনালে নিচের কমান্ডটি রান করুন:

heroku auth:token

এরপর, GitHub রিপোজিটরিতে Secrets সেট করতে হবে:

  1. GitHub রিপোজিটরিতে গিয়ে Settings > Secrets এ যান।
  2. New Repository Secret এ ক্লিক করুন।
  3. Name হিসেবে HEROKU_API_KEY এবং Value হিসেবে আপনার Heroku API Key দিন।

Step 8: GitHub Actions CD কনফিগার করা

এখন GitHub Actions ফাইলে Heroku ডিপ্লয় কনফিগারেশন যুক্ত করতে হবে। ci.yml ফাইলের নিচের অংশে Heroku ডিপ্লয় যোগ করুন:

উদাহরণ: ci.yml ফাইল - Heroku Deployment

name: FastAPI CI/CD

on:
  push:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.9'

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    - name: Run tests
      run: |
        pytest > result.log; tail -n 10 result.log

  deploy:
    needs: test
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Heroku Deployment
      run: |
        git remote add heroku https://git.heroku.com/my-fastapi-app.git
        git push heroku main
      env:
        HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}

এখানে:

  • deploy jobটি test jobটির পরে চালানো হবে।
  • git remote add heroku কমান্ড দিয়ে Heroku রিমোট রিপোজিটরি যোগ করা হচ্ছে এবং git push heroku main দিয়ে কোড Heroku তে ডিপ্লয় করা হচ্ছে।

Step 9: GitHub Actions CD রান করা

GitHub রিপোজিটরিতে main ব্রাঞ্চে কোড পুশ করার পর, CI/CD pipeline রান হবে। GitHub Actions টেস্ট চলানোর পর, অ্যাপ Heroku তে ডিপ্লয় হবে।

রিকোয়েস্ট উদাহরণ:

আপনার FastAPI অ্যাপ এখন Heroku তে ডিপ্লয় হবে, এবং আপনি অ্যাপের URL দিয়ে অ্যাপটি অ্যাক্সেস করতে পারবেন।


CI/CD কনফিগারেশন, বিশেষ করে GitHub Actions এবং Heroku ব্যবহার করে FastAPI অ্যাপ্লিকেশনটি সহজেই স্বয়ংক্রিয়ভাবে টেস্ট এবং প্রোডাকশন পরিবেশে ডিপ্লয় করা যায়। Continuous Integration (CI) কোডের পরিবর্তনগুলো দ্রুত পরীক্ষা এবং নিশ্চিত করতে সহায়ক, এবং Continuous Deployment (CD) প্রক্রিয়া আপনার অ্যাপ্লিকেশনকে স্বয়ংক্রিয়ভাবে প্রোডাকশন পরিবেশে পৌঁছে দেয়।

Content added By

GitHub Actions ব্যবহার করে CI/CD সেটআপ

226

CI/CD (Continuous Integration / Continuous Deployment) উন্নত সফটওয়্যার ডেভেলপমেন্ট প্রক্রিয়া এবং অটোমেটেড টেস্টিং এবং ডেপ্লয়মেন্ট প্রক্রিয়া সরবরাহ করে। GitHub Actions হল একটি শক্তিশালী টুল যা GitHub রেপোজিটরি ব্যবহার করে CI/CD পিপলাইন তৈরি করতে সাহায্য করে। এখানে, আমরা FastAPI অ্যাপের জন্য GitHub Actions ব্যবহার করে CI/CD সেটআপ করার প্রক্রিয়া দেখাব।

Step 1: GitHub রেপোজিটরি তৈরি করা

প্রথমে, একটি GitHub রেপোজিটরি তৈরি করতে হবে (যদি ইতিমধ্যেই না থাকে) যেখানে আপনার FastAPI অ্যাপ কোড সংরক্ষিত থাকবে।

  1. GitHub-এ একটি নতুন রেপোজিটরি তৈরি করুন।
  2. আপনার FastAPI অ্যাপের কোড এই রেপোজিটরিতে আপলোড করুন (পুশ করুন)।

Step 2: GitHub Actions এর জন্য Workflow ফাইল তৈরি করা

GitHub Actions CI/CD পিপলাইন তৈরি করতে আপনাকে একটি workflow ফাইল তৈরি করতে হবে। এই ফাইলটি .github/workflows/ ফোল্ডারে থাকবে।

উদাহরণ: .github/workflows/ci-cd.yml

name: FastAPI CI/CD

on:
  push:
    branches:
      - main  # 'main' ব্রাঞ্চে পুশ হলে ট্রিগার হবে
  pull_request:
    branches:
      - main  # 'main' ব্রাঞ্চে পুল রিকোয়েস্ট হলে ট্রিগার হবে

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    # Step 1: Checkout the code from GitHub
    - name: Checkout repository
      uses: actions/checkout@v2

    # Step 2: Set up Python environment
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.9'  # Python 3.9 ব্যবহার করা হচ্ছে, তবে এটি আপনার প্রয়োজন অনুসারে পরিবর্তন করতে পারেন

    # Step 3: Install dependencies
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    # Step 4: Run tests with pytest
    - name: Run tests
      run: |
        pytest  # এখানে আপনার টেস্ট ফাইল চালানো হচ্ছে

    # Step 5: Build and Deploy (যদি ডেপ্লয়মেন্ট অন্তর্ভুক্ত থাকে)
    - name: Deploy to Production
      run: |
        # এখানে আপনার ডেপ্লয়মেন্ট স্ক্রিপ্ট বা কমান্ড থাকবে
        echo "Deploying to production..."

ফাইলের ব্যাখ্যা:

  • on:: এই অংশটি বলে দেয় কখন এই workflow চালানো হবে। এখানে, যখন main ব্রাঞ্চে পুশ বা পুল রিকোয়েস্ট হবে, তখন এটি ট্রিগার হবে।
  • jobs:: এখানে বিভিন্ন কাজ (jobs) এবং স্টেপস ডিফাইন করা হয়েছে।
  • build:: এই কাজটি একটি ubuntu-latest ভার্চুয়াল মেশিনে চলবে।
    • checkout: কোড GitHub থেকে চেকআউট করবে।
    • setup-python: Python পরিবেশ সেটআপ করবে।
    • Install dependencies: requirements.txt ফাইল থেকে সমস্ত ডিপেনডেন্সি ইনস্টল করবে।
    • Run tests: pytest ব্যবহার করে টেস্ট চালাবে।
    • Deploy: আপনার অ্যাপ্লিকেশন ডেপ্লয় করার জন্য স্ক্রিপ্ট চালাবে। এটি একটি ডেমো কমান্ড, আপনি এটি আপনার ডেপ্লয়মেন্ট পদ্ধতির সাথে পরিবর্তন করবেন (যেমন Heroku, AWS, Docker ইত্যাদি)।

Step 3: Requirements ফাইল তৈরি করা

requirements.txt ফাইলটি তৈরি করুন যাতে আপনার FastAPI অ্যাপের সমস্ত ডিপেনডেন্সি থাকে। উদাহরণস্বরূপ:

fastapi
uvicorn
pytest

এটি GitHub Actions এর মাধ্যমে dependencies ইনস্টল করতে ব্যবহৃত হবে।


Step 4: টেস্ট ফাইল তৈরি করা

টেস্টিং নিশ্চিত করতে pytest ব্যবহার করুন। একটি সাধারণ টেস্ট ফাইল তৈরি করুন, যেমন:

# test_main.py

from fastapi.testclient import TestClient
from main import app

client = TestClient(app)

def test_read_main():
    response = client.get("/")
    assert response.status_code == 200
    assert response.json() == {"message": "Hello, World!"}

এই টেস্ট ফাইলটি FastAPI অ্যাপের জন্য একটি বেসিক টেস্ট। এটি GitHub Actions-এ চলবে যখন আপনার কোড পুশ হবে।


Step 5: GitHub Actions চালানো

এখন আপনি যখন GitHub রেপোজিটরিতে main ব্রাঞ্চে কোড পুশ করবেন বা পুল রিকোয়েস্ট করবেন, তখন GitHub Actions স্বয়ংক্রিয়ভাবে ট্রিগার হবে এবং workflow চালানো শুরু হবে।

আপনার GitHub রেপোজিটরি > Actions ট্যাব থেকে আপনি টেস্ট, বিল্ড, এবং ডেপ্লয়মেন্ট প্রসেসের স্ট্যাটাস দেখতে পারবেন।


Step 6: Production Deployment (অপশনাল)

যদি আপনি ডেপ্লয়মেন্ট অন্তর্ভুক্ত করতে চান, তবে GitHub Actions এর মধ্যে আপনার ডেপ্লয়মেন্ট স্ক্রিপ্ট যোগ করতে হবে। এটি সাধারণত আপনার সার্ভার বা ক্লাউড সেবা (যেমন AWS, Heroku, Docker) এর জন্য একটি স্ক্রিপ্ট হবে।

উদাহরণ: Heroku তে ডেপ্লয়মেন্ট

- name: Deploy to Heroku
  uses: akshnz/heroku-deploy@v1
  with:
    heroku_email: ${{ secrets.HEROKU_EMAIL }}
    heroku_api_key: ${{ secrets.HEROKU_API_KEY }}
    heroku_app_name: your-app-name

এই অংশে, আপনার Heroku অ্যাপের নাম এবং API কী GitHub Secrets ব্যবহার করে ইনজেক্ট করা হয়েছে।


GitHub Actions ব্যবহার করে FastAPI অ্যাপের জন্য CI/CD পিপলাইন সেটআপ করা একটি সহজ এবং শক্তিশালী উপায়। এটি কোডের স্বয়ংক্রিয় টেস্টিং, বিল্ড এবং ডেপ্লয়মেন্ট প্রক্রিয়া সঞ্চালন করতে সাহায্য করে। GitHub Actions এর মাধ্যমে, আপনি সেরা DevOps প্র্যাকটিস অনুসরণ করে স্বয়ংক্রিয়ভাবে আপনার অ্যাপ্লিকেশন ডেপ্লয় করতে পারেন এবং ডেভেলপমেন্ট প্রক্রিয়া আরও কার্যকরী ও স্কেলেবল করতে পারেন।

Content added By

FastAPI অ্যাপ্লিকেশন ডেপ্লয়মেন্ট (Heroku, AWS, DigitalOcean)

148

FastAPI অ্যাপ্লিকেশন ডেপ্লয়মেন্টের জন্য বিভিন্ন ক্লাউড প্ল্যাটফর্মে কাজ করা যায়। এখানে আমরা দেখব কিভাবে Heroku, AWS, এবং DigitalOcean এ FastAPI অ্যাপ্লিকেশন ডেপ্লয় করা যায়।


১. Heroku-তে FastAPI অ্যাপ্লিকেশন ডেপ্লয় করা

Heroku একটি জনপ্রিয় ক্লাউড প্ল্যাটফর্ম যা Python অ্যাপ্লিকেশন খুব সহজে হোস্ট করতে দেয়। Heroku-তে FastAPI অ্যাপ ডেপ্লয় করার জন্য নিচের ধাপগুলো অনুসরণ করুন।

Step 1: Heroku অ্যাকাউন্ট তৈরি করুন

Heroku-তে অ্যাকাউন্ট তৈরি করতে Heroku ওয়েবসাইটে যান এবং একটি অ্যাকাউন্ট তৈরি করুন।

Step 2: Heroku CLI ইনস্টল করুন

Heroku অ্যাপ্লিকেশন ডেপ্লয় করতে Heroku CLI (Command Line Interface) ইনস্টল করতে হবে। এটি ইনস্টল করতে নিচের কমান্ড ব্যবহার করুন:

  • macOS:

    brew install heroku
    
  • Windows: Heroku CLI Download থেকে ডাউনলোড করুন।
  • Linux:

    curl https://cli-assets.heroku.com/install.sh | sh
    

Step 3: FastAPI অ্যাপের জন্য Procfile তৈরি করুন

Heroku-তে FastAPI অ্যাপ্লিকেশন চালানোর জন্য একটি Procfile তৈরি করতে হবে। এই ফাইলটি বলে দেয় কিভাবে অ্যাপটি চালাতে হবে।

Procfile:

web: uvicorn main:app --host=0.0.0.0 --port=${PORT:-5000}

এখানে, main হলো আপনার Python ফাইলের নাম এবং app হলো FastAPI অ্যাপের অবজেক্ট।

Step 4: Git রেপোজিটরি তৈরি করা

Heroku অ্যাপ্লিকেশন গিটের মাধ্যমে ডেপ্লয় করা হয়, তাই আপনাকে গিট রেপোজিটরি তৈরি করতে হবে।

git init
git add .
git commit -m "initial commit"

Step 5: Heroku অ্যাপ তৈরি করা

Heroku-তে একটি অ্যাপ তৈরি করতে:

heroku create your-app-name

Step 6: অ্যাপ ডেপ্লয় করা

আপনার FastAPI অ্যাপ্লিকেশন ডেপ্লয় করতে:

git push heroku master

Step 7: অ্যাপ্লিকেশন রান করা

Heroku-তে আপনার অ্যাপ রান করার জন্য:

heroku open

এটি আপনার ব্রাউজারে অ্যাপ্লিকেশন খুলবে। আপনি heroku logs --tail কমান্ড দিয়ে অ্যাপের লগও দেখতে পারেন।


২. AWS-তে FastAPI অ্যাপ্লিকেশন ডেপ্লয় করা

AWS (Amazon Web Services) এ FastAPI অ্যাপ্লিকেশন ডেপ্লয় করার জন্য EC2 (Elastic Compute Cloud) ব্যবহার করা হয়। এখানে একটি সাধারিত পদ্ধতি দেখানো হলো।

Step 1: EC2 ইন্সট্যান্স তৈরি করা

  1. AWS Management Console-এ লগইন করুন।
  2. EC2 সার্ভিসে যান এবং একটি নতুন t2.micro ইন্সট্যান্স তৈরি করুন (এটি ফ্রি টিয়ারের অংশ)।
  3. Security Group সেট করুন যাতে HTTP (80) এবং SSH (22) পোর্ট খোলা থাকে।
  4. ইন্সট্যান্স তৈরি হয়ে গেলে, তার Public IP নোট করুন।

Step 2: EC2 ইন্সট্যান্সে লগইন করা

EC2 ইন্সট্যান্সে SSH দিয়ে লগইন করুন।

ssh -i "your-key.pem" ec2-user@your-ec2-ip

Step 3: সার্ভারে FastAPI ইনস্টল করা

EC2 ইন্সট্যান্সে Python, Uvicorn, এবং অন্যান্য প্রয়োজনীয় প্যাকেজ ইনস্টল করুন।

sudo yum update -y
sudo yum install python3 -y
pip3 install fastapi uvicorn

Step 4: FastAPI অ্যাপ কোড আপলোড করা

SCP অথবা SFTP ব্যবহার করে আপনার FastAPI অ্যাপ্লিকেশন সার্ভারে আপলোড করুন।

Step 5: FastAPI অ্যাপ রান করা

আপনার অ্যাপ চালাতে:

uvicorn main:app --host=0.0.0.0 --port=80

এখন আপনার অ্যাপ http://your-ec2-ip থেকে অ্যাক্সেস করা যাবে।

Step 6: Nginx বা Gunicorn কনফিগার করা

Production পরিবেশে Nginx বা Gunicorn ব্যবহার করতে পারেন।


৩. DigitalOcean-এ FastAPI অ্যাপ্লিকেশন ডেপ্লয় করা

DigitalOcean একটি জনপ্রিয় ক্লাউড প্ল্যাটফর্ম যা সরলভাবে FastAPI অ্যাপ্লিকেশন হোস্ট করতে সহায়ক।

Step 1: DigitalOcean অ্যাকাউন্ট তৈরি করা

ডিজিটালওশনে একটি অ্যাকাউন্ট তৈরি করুন এবং একটি Droplet (ভি আর ওয়েব সার্ভার) তৈরি করুন।

Step 2: Droplet তৈরি করা

ড্রপলেট তৈরি করার সময়, আপনি Ubuntu ইমেজ এবং SSH key নির্বাচন করতে পারেন।

Step 3: Droplet-এ SSH দিয়ে লগইন করা

ssh root@your-droplet-ip

Step 4: সার্ভারে FastAPI ইনস্টল করা

আপনার ড্রপলেটে FastAPI, Uvicorn, এবং Python ইনস্টল করুন।

sudo apt update
sudo apt install python3-pip python3-dev
pip3 install fastapi uvicorn

Step 5: FastAPI অ্যাপ আপলোড করা

আপনার অ্যাপ সার্ভারে আপলোড করতে SCP ব্যবহার করুন অথবা সরাসরি কোড লিখে FastAPI অ্যাপ তৈরি করুন।

Step 6: FastAPI অ্যাপ চালানো

uvicorn main:app --host=0.0.0.0 --port=80

এখন আপনার অ্যাপ http://your-droplet-ip থেকে অ্যাক্সেস করা যাবে।

Step 7: Nginx দিয়ে ডেপ্লয় করা (ঐচ্ছিক)

উচ্চ পারফরম্যান্সের জন্য Nginx এবং Gunicorn ব্যবহার করুন।


FastAPI অ্যাপ্লিকেশনকে Heroku, AWS, এবং DigitalOcean এ ডেপ্লয় করা খুবই সহজ। উল্লিখিত পদ্ধতিতে আপনি বিভিন্ন প্ল্যাটফর্মে আপনার অ্যাপ্লিকেশনটি ডেপ্লয় করতে পারবেন এবং উন্নত স্কেলেবল অ্যাপ তৈরি করতে পারবেন। FastAPI-এর সাথে Celery বা Nginx ব্যবহার করে আপনি কার্যকরী এবং উচ্চ-পারফরম্যান্স অ্যাপ্লিকেশন ডেপ্লয় করতে পারেন।

Content added By

Production এবং Development Environment ম্যানেজমেন্ট

169

FastAPI অ্যাপ্লিকেশন ডেভেলপমেন্টে Development এবং Production পরিবেশের মধ্যে পার্থক্য ম্যানেজ করা গুরুত্বপূর্ণ। সঠিক পরিবেশ কনফিগারেশন আপনাকে অ্যাপ্লিকেশনটি ডেভেলপমেন্ট এবং প্রোডাকশন উভয় অবস্থাতেই নির্বিঘ্নভাবে পরিচালনা করতে সহায়ক হয়। এই টিউটোরিয়ালে আমরা দেখব কিভাবে FastAPI অ্যাপ্লিকেশনে Development এবং Production পরিবেশ ম্যানেজমেন্ট করা যায়।


Step 1: Environment Variables ব্যবহার করা

প্রথমে, আপনি পরিবেশের কনফিগারেশনগুলির জন্য environment variables ব্যবহার করতে পারেন। এই ভেরিয়েবলগুলি বিভিন্ন পরিবেশে কনফিগারেশন পরিবর্তন করার জন্য খুবই উপকারী। Python এর os লাইব্রেরি বা python-dotenv লাইব্রেরি ব্যবহার করে আপনি এই ভেরিয়েবলগুলি লোড করতে পারেন।

Install python-dotenv:

pip install python-dotenv

Step 2: .env ফাইল তৈরি করা

ডেভেলপমেন্ট এবং প্রোডাকশন কনফিগারেশন জন্য .env ফাইল তৈরি করা যেতে পারে। এই ফাইলটি পরিবেশ ভেরিয়েবল ধারণ করবে।

উদাহরণ: .env ফাইল (Development)

DEBUG=True
DATABASE_URL=sqlite:///./test.db
SECRET_KEY=devsecretkey

উদাহরণ: .env ফাইল (Production)

DEBUG=False
DATABASE_URL=postgresql://user:password@localhost/production_db
SECRET_KEY=productionsecretkey

Step 3: FastAPI অ্যাপে Environment Variables ব্যবহার করা

FastAPI অ্যাপে python-dotenv লাইব্রেরি ব্যবহার করে .env ফাইল থেকে পরিবেশ ভেরিয়েবল লোড করতে পারেন।

উদাহরণ: FastAPI অ্যাপে Environment Variables লোড করা

from fastapi import FastAPI
import os
from dotenv import load_dotenv

# .env ফাইল থেকে পরিবেশ ভেরিয়েবল লোড করা
load_dotenv()

app = FastAPI()

# পরিবেশ ভেরিয়েবল থেকে কনফিগারেশন ডাটা গ্রহণ করা
DEBUG = os.getenv("DEBUG") == "True"
DATABASE_URL = os.getenv("DATABASE_URL")
SECRET_KEY = os.getenv("SECRET_KEY")

@app.get("/")
def read_root():
    return {
        "debug_mode": DEBUG,
        "database_url": DATABASE_URL,
        "secret_key": SECRET_KEY
    }

এখানে:

  • load_dotenv(): .env ফাইল থেকে পরিবেশ ভেরিয়েবলগুলি লোড করে।
  • os.getenv(): নির্দিষ্ট ভেরিয়েবলের মান অ্যাক্সেস করার জন্য ব্যবহৃত হয়।

Step 4: Development Environment ম্যানেজমেন্ট

Development Environment-এ আপনি সাধারণত debugging, testing, এবং local database ব্যবহার করবেন।

Development Environment Configuration:

  • DEBUG: ডেভেলপমেন্টে অ্যাপ্লিকেশনের লগগুলি আরও বিস্তারিত হতে পারে। DEBUG=True থাকলে ডেভেলপমেন্ট পরিবেশে লগিং এবং ত্রুটি ডিবাগিং সহজ হয়।
  • DATABASE_URL: ডেভেলপমেন্টে আপনি একটি SQLite ডাটাবেস ব্যবহার করতে পারেন যাতে প্রোডাকশন ডাটাবেসের উপর কোন প্রভাব না পড়ে।
  • SECRET_KEY: একটি ডেভেলপমেন্ট মান ব্যবহার করুন, তবে প্রোডাকশনের জন্য একটি শক্তিশালী গোপন কী ব্যবহার করুন।

উদাহরণ: ডেভেলপমেন্টে Debug Mode চেক করা

@app.get("/debug")
def debug_mode():
    if DEBUG:
        return {"message": "Debugging is enabled"}
    return {"message": "Debugging is disabled"}

Step 5: Production Environment ম্যানেজমেন্ট

Production Environment-এ আপনি কিছু অতিরিক্ত কনফিগারেশন করবেন, যেমন নিরাপত্তা, উন্নত পারফরম্যান্স এবং কনটেইনারাইজেশন।

Production Environment Configuration:

  • DEBUG: প্রোডাকশনে DEBUG=False সেট করুন, যাতে ডিবাগিং তথ্য বাইরে চলে না যায়।
  • DATABASE_URL: প্রোডাকশন ডাটাবেসের জন্য PostgreSQL বা অন্য কোনও শক্তিশালী ডাটাবেস ব্যবহার করুন।
  • SECRET_KEY: প্রোডাকশনে একটি শক্তিশালী SECRET_KEY ব্যবহার করুন। এটি JWT (JSON Web Tokens) বা সেশন কুকির জন্য ব্যবহৃত হতে পারে।

উদাহরণ: Production Mode চেক করা

@app.get("/production")
def production_mode():
    if not DEBUG:
        return {"message": "Production mode enabled"}
    return {"message": "Development mode enabled"}

Step 6: Uvicorn ও Gunicorn এর মাধ্যমে Production Server চালানো

প্রোডাকশনে অ্যাপ্লিকেশন চালানোর জন্য আপনি Uvicorn এবং Gunicorn ব্যবহার করতে পারেন। Gunicorn একটি WSGI HTTP সার্ভার যা FastAPI অ্যাপের জন্য পারফরম্যান্স অপটিমাইজেশন প্রদান করে।

উদাহরণ: Uvicorn + Gunicorn

gunicorn -w 4 -k uvicorn.workers.UvicornWorker app:app

এখানে:

  • -w 4: ৪টি worker প্রসেস ব্যবহার করা হবে।
  • -k uvicorn.workers.UvicornWorker: Uvicorn এর worker ব্যবহার করা হবে।
  • app:app: app হল FastAPI অ্যাপের অবজেক্ট, এবং app ফাইলের নাম।

Step 7: FastAPI অ্যাপের Environment Configuration চেক করা

FastAPI অ্যাপের কনফিগারেশন চেক করার জন্য আপনি একটি সিম্পল /config রাউট তৈরি করতে পারেন, যা পরিবেশ ভেরিয়েবলগুলি প্রদর্শন করবে।

@app.get("/config")
def read_config():
    return {
        "debug": DEBUG,
        "database_url": DATABASE_URL,
        "secret_key": SECRET_KEY,
    }

এটি আপনাকে পরিবেশ ভেরিয়েবলগুলির মান দেখতে এবং নিশ্চিত হতে সাহায্য করবে।


Step 8: Docker Containerization (Optional)

Docker ব্যবহার করে অ্যাপ্লিকেশনটি কনটেইনারাইজ করলে প্রোডাকশন পরিবেশের ডিপেনডেন্সি ম্যানেজমেন্ট সহজ হয়। আপনি Dockerfile তৈরি করে অ্যাপ্লিকেশনটি প্রোডাকশন পরিবেশে চালাতে পারেন।

উদাহরণ: Dockerfile

# Base image
FROM python:3.9-slim

# Set working directory
WORKDIR /app

# Install dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Copy application code
COPY . .

# Set environment variables
ENV DEBUG=False

# Expose port
EXPOSE 8000

# Run FastAPI app
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

এখানে:

  • ENV DEBUG=False: Docker কনটেইনারে প্রোডাকশন মুডে DEBUG পরিবেশ ভেরিয়েবল সেট করা।
  • CMD: অ্যাপ চালানোর জন্য কমান্ড।

FastAPI-তে Development এবং Production পরিবেশ ম্যানেজমেন্টের জন্য Environment Variables ব্যবহার করা গুরুত্বপূর্ণ। আপনি python-dotenv লাইব্রেরি ব্যবহার করে .env ফাইলের মাধ্যমে পরিবেশ কনফিগার করতে পারেন এবং ডেভেলপমেন্ট এবং প্রোডাকশনে অ্যাপ্লিকেশনের কনফিগারেশন আলাদা রাখতে পারেন। Uvicorn এবং Gunicorn এর মাধ্যমে প্রোডাকশনে অ্যাপ্লিকেশনটি চালানো হয় এবং Docker এর মাধ্যমে কনটেইনারাইজেশন আরও সহজ হয়।

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

Are you sure to start over?

Loading...