Growth Hoon

[0부] FastAPI 시작 본문

Backend/Fast API

[0부] FastAPI 시작

sayhoon 2024. 1. 13. 23:40

FastAPI란?

  • Python에서 사용하는 웹 프레임워크.
  • 가장 간단한 http요청을 받고 응답해주는 Micro Framework
  • Server side는 지원해주지 않고, Django에 있는 ORM이 없음
  • 따라서 서드파티(Thirdparty) 프로그램인 SQLAlchemy 프로그램을 사용함.
  • FastAPI는 ASGI라는 interface이다.
  • ASGI는 WSGI를 계승한 것으로 ASGI만이 비동기를 지원한다.
  • ASGI 개발용 서버로 보통 uvicorn을 사용한다고 한다.

왜 FastAPI를 사용하는지?

  • FastAPI는 modern python 문법을 사용한다. (다만 3.6 version이상)
  • 3.6버전 이상인 이유는 async, await, type hint(:)를 지원하기 때문이다.
  • FastAPI는 OpenAPI기반으로 만들어졌다. (그래서 GraphQL도 지원한다고 한다)
  • OpenAPI?? >> 예전에는 Swagger라고 불렀다고 한다.
  • Swagger는 RESTful API의 스펙을 표기하기 위한 스펙이라고 한다 (????)
  • 따라서 FastAPI는 RESTful API기반이다.

FastAPI의 가장 큰 장점은 API문서를 자동으로 생성해준다는 것이다.
(예전에는 Swagger 스펙을 다 익히고 작성해줬어야 한다고 한다.)

FastAPI를 배워야하는 이유?

  • Micro Framework이기 때문이다.
  • 예전 Spring이나 Django와 같은 Framework는 Monolithic 아키텍처를 제공했었다.
  • 그래서 하나의 서비스에 오류가 발생했을 때, 서비스 전체에 장애를 줄 수 있었다 (서비스간의 의존성이 높았음)
  • FastAPI는 각 기능이 독립적인 서비스로 분리되어 개발하는 Micro Service 아키텍처로 만들어진 Framework이다.
  • Micro Service 아키텍처는 작은 단위의 서비스가 서로 통신하며 거대한 서비스를 이루게 만드는 아키텍처이다.
  • 예시) 쿠팡에서 장바구니 서비스가 다운된다고 해도 로그인 기능이 죽진 않는다.
  • 그래서 대부분의 서비스들은 MicroService로 가려는 추세이다.
  • 위 이유와 같은 이유로 Microservice를 관리하는 프로그램인 쿠버네티스(Kubernetes)가 뜨고 있는 것이다.

Sping에는 Spring Boot, Django에는 Django REST framework를 이용해서
Micro Service 아키텍처를 구현할 수 있다.

알아봐야할 내용

  • WSGI와 ASGI
  • RESTful API & OpenAPI & Swagger
  • GraphQL
  • SQLAlchemy
  • 개발용 서버? >> 서버에 대한 구분
  • Django에도 RESTful Framework가 있는데, FastAPI의 장점은?