Published on

FastAPI와 함께 사용하면 좋은 라이브러리 추천

Authors
  • avatar
    Name
    devnmin
    Twitter

🚀 FastAPI와 함께 사용하면 좋은 라이브러리 추천

FastAPI는 현대적인 Python 웹 프레임워크로, 비동기(Async) 지원, 자동 문서화(OpenAPI, Swagger), 타입 검증 등의 기능을 제공합니다. 이를 더욱 강화하고 생산성을 높이기 위해 함께 사용하면 좋은 라이브러리를 정리해 보았습니다.

📌 1. 데이터베이스 관련 라이브러리

1️⃣ SQLAlchemy & SQLModel

  • SQLAlchemy: Python의 강력한 ORM 라이브러리로, 데이터베이스 작업을 쉽게 할 수 있도록 도와줍니다.

  • SQLModel: SQLAlchemy와 Pydantic을 결합하여 더 직관적인 데이터 모델을 제공합니다.

  • 설치 방법:

    pip install sqlalchemy sqlmodel
    
  • 사용 예시:

    from sqlmodel import SQLModel, Field
    
    class User(SQLModel, table=True):
        id: int = Field(default=None, primary_key=True)
        name: str
    

2️⃣ Tortoise-ORM

  • 비동기(Async) ORM을 지원하는 가벼운 라이브러리로, FastAPI와 잘 어울립니다.

  • 설치 방법:

    pip install tortoise-orm
    
  • 사용 예시:

    from tortoise import fields
    from tortoise.models import Model
    
    class User(Model):
        id = fields.IntField(pk=True)
        name = fields.CharField(max_length=50)
    

📌 2. 인증(Authentication) 및 보안(Security)

1️⃣ FastAPI Users

  • FastAPI에서 사용자 인증 및 관리를 쉽게 구현할 수 있도록 도와주는 라이브러리입니다.

  • 설치 방법:

    pip install fastapi-users
    
  • 기능:

    • JWT 기반 인증 지원
    • OAuth, Google 로그인 연동 가능
    • 사용자 관리 API 자동 생성

2️⃣ PyJWT

  • JWT(JSON Web Token)를 다룰 수 있는 라이브러리로, FastAPI에서 인증 시스템을 구현할 때 유용합니다.

  • 설치 방법:

    pip install PyJWT
    
  • 사용 예시:

    import jwt
    from datetime import datetime, timedelta
    
    SECRET_KEY = "your_secret_key"
    
    def create_token(data: dict):
        return jwt.encode({**data, "exp": datetime.utcnow() + timedelta(hours=1)}, SECRET_KEY, algorithm="HS256")
    

📌 3. 비동기 작업(Background Tasks)

1️⃣ Celery

  • 백그라운드 작업을 처리하는 강력한 비동기 작업 큐입니다.

  • FastAPI에서 무거운 연산을 처리할 때 사용하면 좋습니다.

  • 설치 방법:

    pip install celery
    
  • 사용 예시:

    from celery import Celery
    
    celery_app = Celery("tasks", broker="redis://localhost:6379/0")
    
    @celery_app.task
    def add(x, y):
        return x + y
    

2️⃣ Dramatiq

  • Celery보다 가벼운 대안으로, FastAPI에서 간단한 백그라운드 작업을 수행할 때 적합합니다.

  • 설치 방법:

    pip install dramatiq
    
  • 사용 예시:

    import dramatiq
    
    @dramatiq.actor
    def send_email(to: str, subject: str, body: str):
        print(f"Sending email to {to}...")
    

📌 4. 테스트 및 디버깅

1️⃣ pytest & httpx

  • FastAPI 애플리케이션을 테스트할 때 유용한 라이브러리입니다.

  • 설치 방법:

    pip install pytest httpx
    
  • 사용 예시:

    from fastapi.testclient import TestClient
    from my_app import app
    
    client = TestClient(app)
    
    def test_read_main():
        response = client.get("/")
        assert response.status_code == 200
    

2️⃣ loguru

  • 더 나은 로깅을 제공하는 라이브러리로, FastAPI의 로깅을 쉽게 설정할 수 있습니다.

  • 설치 방법:

    pip install loguru
    
  • 사용 예시:

    from loguru import logger
    
    logger.info("This is an info log")
    logger.error("This is an error log")
    

📌 5. API 문서화 및 스키마 검증

1️⃣ Pydantic

  • FastAPI의 핵심 라이브러리로, 데이터 검증과 자동 문서화를 제공합니다.

  • 설치 방법:

    pip install pydantic
    
  • 사용 예시:

    from pydantic import BaseModel
    
    class User(BaseModel):
        id: int
        name: str
    

2️⃣ OpenAPI Generator

  • FastAPI의 자동 문서를 활용해 OpenAPI 스펙을 생성하고 관리할 수 있습니다.
  • 설치 방법:
    pip install openapi-generator-cli
    

📌 6. 캐싱 및 성능 최적화

1️⃣ Redis & aioredis

  • FastAPI에서 캐싱 및 세션 저장소로 활용할 수 있는 Redis 라이브러리입니다.

  • 설치 방법:

    pip install aioredis
    
  • 사용 예시:

    import aioredis
    
    async def get_redis():
        redis = await aioredis.create_redis_pool("redis://localhost")
        return redis
    

2️⃣ uvicorn

  • FastAPI 서버를 실행할 때 가장 많이 사용되는 ASGI 서버입니다.

  • 설치 방법:

    pip install uvicorn
    
  • 실행 명령어:

    uvicorn main:app --reload
    

🎯 결론

FastAPI는 다양한 라이브러리와 함께 사용할 때 더욱 강력한 성능을 발휘합니다. 위에서 소개한 라이브러리들을 활용하면 데이터베이스 관리, 인증, 비동기 작업, 캐싱, 테스트 및 로깅 등의 기능을 더욱 쉽게 구현할 수 있습니다.

✅ 추천 라이브러리 정리:

  • 데이터베이스: SQLAlchemy, SQLModel, Tortoise-ORM
  • 인증 및 보안: FastAPI Users, PyJWT
  • 비동기 작업: Celery, Dramatiq
  • 테스트 및 디버깅: pytest, loguru
  • API 문서화: Pydantic, OpenAPI Generator
  • 캐싱 및 성능 최적화: Redis, uvicorn

이제 FastAPI 프로젝트에서 필요한 라이브러리를 선택하여 더욱 강력한 API 서버를 구축해 보세요! 🚀