
21세기 Django를 뛰어넘는 Python 진영의 새로운 웹 서버 ❓❓
2018년 5월 어느 여름, 이 시대 최고의 웹 서버 프레임워크로 각광받는 FastAPI가 발표되었다.
그 시절 발표했던 개발자들은 2024년 이렇게 될 줄 알았을까
>> 67.3k의 starred를 자랑하는 FastAPI Github
초기 FastAPI는?
처음에 Python 진영에서 발표와 동시에 많은 사랑을 받으며 성장해왔다.
최근 트렌드에 맞게 Restful API를 설계할 수 있는 파이썬의 웹 프레임워크라는 정체성을 가졌다.
사람들이 FastAPI를 점점 더 알아가고 찾게되는 이유 중 하나는
매우 잘 정리되어 있는 document page도 인기를 높이는 데 한 몫했다.
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!"
맺는말
한땀 한땀 코드를 짜야 했던 과거에 비해서 요즘에는 점점 강력한 프레임워크들이 등장하고 있다. 그 말은 즉, 원한다면 누구든지 빠르게 서비스를 만들 수 있다는 것이다. 앞으로 코드는 점점 더 간결해지지 않을까 싶다. 😆 |
'IT' 카테고리의 다른 글
tmux란? 💻 (2) | 2024.01.27 |
---|---|
구글 플레이스토어 앱 출시(비공개 테스터 20명??) 💻 (0) | 2024.01.25 |
Node.js란?(Wiki와 함께 설명) 💻 (2) | 2024.01.24 |
react native 튜토리얼(init 명령어) 💻 (0) | 2024.01.23 |
삼성 첫 AI 스마트폰 “갤럭시 S24” 리뷰 📲 (2) | 2024.01.20 |