Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
Tags
- 굿바이2024
- 스프링부트 자동설정
- 패스트캠퍼스
- 백엔드기초
- 맥북 한영키 윈도우
- 듀오링고
- 알고리즘
- 캠프콘
- 백엔드구성
- K디지털기초역량훈련
- 맥북 한영키 설정
- 스페인어
- 3-tier 아키텍처
- 웹서비스구조
- 코테 준비
- Jpa Repository
- github 업로드
- 올한해수고했다
- 스페인어 듀오링고
- 운영체제 병행 프로세스
- 자바백엔드
- MSI 4K 모니터
- jpa 리플렉션
- 스페인어로 날씨
- fasstapi
- p와 v연산
- @annotation
- 스페인어로 과일
- 리눅스 명령어
- 나도 할 수 있는 java&spring 웹 개발 종합반
Archives
- Today
- Total
DIVE AND RISE
FastAPI 필수 개념 본문
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) 상황에서 비동기는 실무 효율이 매우 높습니다.
'기술노트 > 데이터엔지니어링' 카테고리의 다른 글
| Linux 활용 (0) | 2025.05.08 |
|---|---|
| 데이터 엔지니어링에서 FastAPI가 필요한 이유 (0) | 2025.05.04 |
| 리눅스 필수 개념 & 명령어 정리 (TIL) (0) | 2025.05.03 |