DIVE AND RISE

FastAPI 필수 개념 본문

기술노트/데이터엔지니어링

FastAPI 필수 개념

newlamb 2025. 5. 4. 15:24

FastAPI는 빠르고 현대적인 Python 기반의 웹 프레임워크로, 비동기 처리, 자동 문서화, 타입 기반의 데이터 검증등을 강점으로 합니다.

아래는 FastAPI를 학습하고 실무에서 활용하기 위해 꼭 알아야 할 핵심 개념, 실무 필수 지식, 그리고 깊이 이해해야 할 주제들입니다.

 

[기술노트/데이터엔지니어링] - 데이터 엔지니어링에서 FastAPI가 필요한 이유

 

데이터 엔지니어링에서 FastAPI가 필요한 이유

FastAPI와 같은 백엔드 API 프레임워크는 전통적인 웹 개발뿐 아니라 데이터 엔지니어링의 실무에서도 점점 중요해지고 있는 기술입니다. 어떤 부분에서, 왜 필요한지를 아래에 정리해 드릴게요.

newlamb.tistory.com

 

✅ 1.  FastAPI 필수 개념

Path operation (엔드포인트) @app.get(), @app.post() 등으로 정의되는 REST API의 각 경로 처리 함수입니다.
Request/Response 모델링 Pydantic 모델을 사용해 요청(request) 데이터와 응답(response) 데이터를 명확히 정의합니다.
타입 힌트 기반 검증 함수 파라미터에 타입 힌트를 지정하면 FastAPI가 자동으로 검증 및 문서화를 해줍니다.
자동 문서화 /docs(Swagger UI) 또는 /redoc으로 자동 API 문서가 생성됩니다.
Dependency Injection (의존성 주입) Depends()를 사용해 인증, DB 연결 등을 모듈화하고 재사용할 수 있습니다.
비동기 지원 (async/await) 비동기 I/O 지원으로 빠르고 효율적인 처리 가능 (예: DB 쿼리, 외부 API 호출).

 

🚀 2. 실무 필수 지식

분야                               구체 내용
API 설계 원칙 RESTful API 설계 방식 (GET/POST/PUT/DELETE 등), 상태 코드, URL 구조 설계 등
Pydantic 모델링 요청/응답 스키마 정의, 유효성 검사, Nested 모델 처리
DB 연동 SQLAlchemy, Tortoise ORM, Prisma 등 ORM 연동 (보통 SQLAlchemy + Alembic 사용)
환경 설정 .env, settings.py 활용하여 환경별 설정 관리
라우팅 관리 APIRouter로 기능별로 라우터 분리 및 main.py에 등록
예외 처리 HTTPException, 전역 예외 핸들러 (ExceptionMiddleware) 등으로 예외 관리
미들웨어 로깅, 인증, 권한 관리 등 공통 처리를 위한 커스텀 미들웨어
비동기 DB 처리 async SQLAlchemy, Databases, asyncpg 등과 함께 사용 시 효율적 I/O 처리
테스트 작성 pytest + FastAPI의 TestClient를 사용한 단위/통합 테스트 작성
보안 (인증/인가) OAuth2, JWT, API Key 기반 인증 시스템 구축
 

🔍 3. 꼭 이해하고 넘어가야 할 주요 개념

개념이유
Pydantic의 작동 원리 데이터 유효성 검사의 핵심이기 때문. 실무에서는 Nested, Optional, Enum 처리도 중요
FastAPI의 Request Lifecycle 요청이 들어왔을 때 어떻게 처리되는지 흐름 파악 (Router → Dependency → Handler → Response)
비동기 처리와 동기 처리의 차이 async def를 사용할 수 있는 상황과 사용하지 말아야 할 상황 구분
Dependency Injection 반복되는 코드 추상화 및 인증/로그인 흐름에서 매우 중요
상태 코드 및 예외 처리 흐름 클라이언트에게 정확한 응답을 보내기 위해 필수
Middleware 흐름 전처리/후처리 로직 구현 시 핵심 (예: 로깅, CORS 처리 등)
 

 

 REST API 와 Fast API ? 

FastAPI와 REST API는 직접적인 비교 대상이라기보다는, "REST는 설계 방식"이고 FastAPI는 그 설계를 구현할 수 있는 프레임워크"

라는 차이점이 있습니다. 여기에 동기 vs 비동기 처리까지 포함해서 전체적으로 정리해 드릴게요.

 

✅ 1.  REST API vs FastAPI

구분          REST API                                                                               FastAPI
정의 자원을 URI로 표현하고 HTTP 메서드를 통해 조작하는 API 설계 방식 Python 기반의 고성능 웹 프레임워크로, REST API 구현에 매우 적합
역할 API 아키텍처 설계 스타일 (즉, 무엇을 어떻게 설계할지) REST API를 실제로 구축하는 도구
관련 기술 HTTP, JSON, URI, 상태 코드 등 Python 3.7+, Starlette, Pydantic, Uvicorn, Async IO
특징 - Stateless
- 클라이언트-서버 분리
- 계층 구조
- 캐시 처리
- 비동기 처리(Async)
- 자동 문서 생성(Swagger)
- 타입 기반 검증
- 매우 빠름
사용 목적 API 아키텍처 표준을 따르기 위한 규칙 RESTful API를 빠르고 안전하게 구현
예시 GET /users/1 → 사용자 정보 반환 FastAPI 코드로 @app.get("/users/{id}") 로 작성

👉 즉, FastAPI는 REST API를 구현할 수 있는 프레임워크입니다. REST 설계를 따르면서도, 개발자 경험(DX)을 좋게 해주는 기능이 많이 포함되어 있습니다.

 

✅ 2.  FastAPI 특징 및 기술 스택

항목설명
Pydantic 입력/출력 데이터 검증 및 자동 문서화를 위한 타입 기반 모델링
Starlette 비동기 ASGI 서버 기반의 라우팅 및 미들웨어 처리 (FastAPI의 핵심 엔진)
Uvicorn FastAPI 실행을 위한 ASGI 서버 (비동기 처리 지원)
Swagger/OpenAPI 자동 문서화 (/docs 제공)
비동기 처리 async def와 await 기반의 비동기 API 구현
Dependency Injection 인증, DB 세션 주입 등 재사용 가능한 구조 설계 가능

 

⚙️ 3. 동기 vs 비동기 – 실무 관점 정확히 이해하기

항목                             동기(Synchronous)                                            비동기(Asynchronous)
작동 방식 요청 → 응답 완료까지 기다림 요청 → 응답 대기 중에도 다른 작업 수행 가능
예시 A 작업 끝나야 B 작업 실행 A 작업 중 B 작업도 병렬로 수행 가능
FastAPI 활용 def async def + await
실무 예시 간단한 계산, 로그 작성 등 DB I/O, 외부 API 요청, 파일 업로드
장점 코드 단순, 직관적 흐름 빠름, 서버 자원 효율적 사용
단점 많은 요청 시 병목 발생 설계가 복잡, 디버깅 어려움
실제 사용 예 Flask, Django (기본적으로 동기) FastAPI, Node.js, Sanic 등
 

🔎 실무적 예시: 동기 vs 비동기

  • 동기 처리 (Flask 예시)
    유저 1명이 DB에 쿼리 → 서버는 응답 줄 때까지 대기 → 유저 2는 기다려야 함
  • 비동기 처리 (FastAPI)
    유저 1이 DB 쿼리 요청 → 서버는 기다리는 동안 유저 2 요청 처리 가능 → 처리 속도 향상

👉 특히 대규모 트래픽, 외부 API 다수 호출, 비동기 DB (예: asyncpg) 상황에서 비동기는 실무 효율이 매우 높습니다.