Fast API

매생이·2022년 2월 1일
0

일지

목록 보기
16/16
post-thumbnail

Fast API란?


사용 가능한 가장 빠른 파이썬 프레임워크 중 하나! 라고 공식 문서에서 이야기한다.
Python 3.6 이상의 버전의 API를 빌드하기위한 웹 프레임워크이다.

여기서 웹 프레임워크가 무엇인가 하면, 웹 서비스 개발을 위한 프레임워크이다.
예를들어 JAVA에는 굉장히 유명한 Spring, Python은 Django가 있다.
그 외에도 웹 프론트엔드 프레임워크엔 React, Vue.js등등 여러 프레임 워크가 존재한다.

우리는 Python을 통해 백엔드 개발보다는 머신러닝이나 데이터 분석에 많이 사용한다.
자바민국이라고 불릴 정도로 java기반의 프레임워크들이 많이 사용되고 있고,
실제로 Spring이 최고 점유율을 갖고 있는 것으로 알고있다.

그나마 Django가 파이썬의 백엔드를 책임져주던 중이었는데... 그러던 도중
FastAPI가 등장했다고 한다.

Fast API의 장점


  1. 빠른 성능
  2. 빠른 코드 작성
  3. 적은 버그

Python 은 원래 다른 언어들에 비해서 느린 언어이다. C같은 언어에 비해서 확연한 속도 차이를 보이며, 속도 대신 다양한 라이브러리가 장점인 언어로 알고있다.
그렇기 때문에 FastAPI도 느리지 않을까? 라는 의문을 가졌다.
하지만 너무나 당당하게 FastAPI의 공식 문서에선 빠른 속도가 장점이며,
NodeJS나 Go와 대등할 정도로 매우 높은 성능을 가진다고 한다.

Go에 대해서 잘 알진 못하지만 얼마나 빠른 것인지 찾아보니, C언어를 위협할 정도로 빠른 언어라고 한다.
Python이 C를 위협할 정도로 빠른 동작이 가능하다? 처음 들어보는 소리다.
그 이유는 Starlette 때문이라고 한다.

Starlette?

Starlette은 다른 파이썬 웹 프레임워크인 Django나 Flask보다 가볍고 강력한 ASGI프레임워크이다.

ASGI 는 기존의 웹 스크립트나 애플리케이션이 웹 서버와 통신하는 방식이던 WSGI(동기 함수 처리 방식)보다 더 빠르게 비동기 처리 방식을 통해서 많은 트래픽을 처리할 수 있으며 더욱 빠른 처리가 가능하다.

이러한 Starlette 기반의 프레임워크이기 때문에 기존의 WSGI방식의 프레임워크인 Flask나 Django보다 빠른 성능을 자랑한다.


그래도 역시 대학생이면서 딥러닝 공부를 하는 입장에선 역시 ML/DL기반의 서비스 솔루션을 위한 모델 개발 후 직접 웹 서빙을 할 수 있는게 가장 크게 와닿는다고 생각한다.

Heroku 와 함께 Flask 를 사용하여 ML/DL 모델을 서빙하여 웹 페이지에서 제공하는 방식의 토이프로젝트들이 많은 것으로 알고있다.
그렇기 때문에 Flask 코드와 FastAPI의 코드가 크게 다르지 않고, 속도는 그 이상이기 때문에 FastAPI를 사용하는 사람들이 점점 늘어나지 않을까 싶다.

아직은 이러한 기술이 존재하고, 내 프로젝트에 어떤 방식으로 적용할 수 있을까를 생각하는 수준이다.
하지만 빠른 시일 내에 지금 진행하고있는 딥러닝 프로젝트를 직접 FastAPI와 Heroku를 사용하여
웹페이지에서 딥러닝 서비스를 배포해보려고 한다.

사용한 코드리뷰와 함께 배포 과정에 대한 글을 작성하려 한다.

제발 배포할 수 있기를...

참조:
https://fastapi.tiangolo.com/ko/
https://jybaek.tistory.com/890

0개의 댓글