본문 바로가기

IT는 지금.

FastAPI란 무엇일까? 💻

반응형

21세기 Django를 뛰어넘는 Python 진영의 새로운 웹 서버 ❓❓

2018년 5월 어느 여름, 이 시대 최고의 웹 서버 프레임워크로 각광받는 FastAPI가 발표되었다.

그 시절 발표했던 개발자들은 2024년 이렇게 될 줄 알았을까

>> 67.3k의 starred를 자랑하는 FastAPI Github

 

 

초기 FastAPI는?

처음에 Python 진영에서 발표와 동시에 많은 사랑을 받으며 성장해왔다.

최근 트렌드에 맞게 Restful API를 설계할 수 있는 파이썬의 웹 프레임워크라는 정체성을 가졌다.

사람들이 FastAPI를 점점 더 알아가고 찾게되는 이유 중 하나는

매우 잘 정리되어 있는 document page도 인기를 높이는 데 한 몫했다.

>> FastAPI document

 

 

Wiki에서는 FastAPI📱 를 어떻게 정의하고 있을까?

FastAPI란? FastAPI는 Pydantic을 기반으로 하며 type hints를 사용하여 데이터를 검증, 직렬화 및 역직렬화합니다. 또한 이를 사용하여 구축된 API에 대한 OpenAPI 문서를 자동으로 생성합니다. FastAPI는 비동기 프로그래밍을 완벽하게 지원하며 Gunicorn 및 Uvicorn 및 Hypercorn과 같은 ASGI 서버에서 실행될 수 있으므로 프로덕션 환경에 적합한 선택입니다. 개발자 친화성을 높이기 위해 프로젝트 초기부터 편집자 지원이 고려되었습니다.

 

 

1. Pydantic

 

  • 웹 서버의 parameter로 주고받는 data를 검증할 수 있게 해주는 파이썬 라이브러리이다.
  • 객체 및 annotation을 활용하여 data validation check를 손쉽게 할 수 있도록 도와준다.

2. type hints

 

  • Python의 언어 특성상 변수를 초기화할 때 데이터 타입을 명시하지 않는다. 타입이 명확하지 않은 이런 상황은 많은 오류 가능성을 내포하게 된다. 이를 예방하기 위해 개발자들은 Python에 Data type를 명시하기 시작했고, 여기서 사용되는 것은 type hint이다.
  • 실제로 타입이 다르다고 해서 오류를 발생시키지는 않지만, type hint를 통하여 오류 가능성을 사전에 예방할 수 있다.
현업 개발자들 사이에서 type hint는 찬/반 의견이 있다?
찬성: type 을 명시함으로써 잘못된 data type에서 유발되는 오류 가능성을 사전 예방할 수 있는 장점이 있다.
반대: 일부 여론에서는 python의 탄생 목적과 다르게 그 확장성을 한정하는 것이라는 의견도 있다.

 

3. Open API(= Swagger)

 

  • 흔히 우리가 말하는 swagger가 대표적인 Open API 문서이다.
  • 웹 서버에서 제공되는 API의 종류를 하나의 페이지에서 대시보드 형태로 파악할 수 있다.
  • Input / Output / Validation / Example / Test 등 다양한 기능을 웹 UI 상에서 확인 가능하다.

+ 아래와 같은 화면, Swagger!

 

4. 비동기 프로그래밍

 

  • 서버에 들어온 request를 처리할 때, request 처리에 대한 응답을 일일히 기다리지 않는다.
  • 코루틴(co-routine) 이라는 개념을 사용하여 비동기적 처리를 수행한다.

 



FastAPI를 사용하는 굴지의 기업들 💁🏻

🥇 Netflix

🥈 Uber

🥉 Cisco

  • FastAPI는 Stack Overflow 2021 개발자 설문조사에서 세 번째로 사랑받는 웹 프레임워크에 등재된 바 있다. 🎁

 

+ FastAPI에서 hello world! 찍는 방법 🌟

우선 Python이 설치되어 있어야 하고, Python을 실행하여 아래 코드를 작성 후 실행해주자. 👬👬

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return "Hello World!"

 


맺는말

한땀 한땀 코드를 짜야 했던 과거에 비해서 요즘에는 점점 강력한 프레임워크들이 등장하고 있다.
그 말은 즉, 원한다면 누구든지 빠르게 서비스를 만들 수 있다는 것이다.
앞으로 코드는 점점 더 간결해지지 않을까 싶다. 😆

 

 

반응형