ComputerScience/Web, HTTP

Flask 유저가 FastAPI를 접하며 느낀 점, 무엇인지 왜 사용하는 지 정리

Flask로 처음 백엔드 프레임워크를 접한 내가 FastAPI를 공부하며 알게된 점

그리고 FastAPI가 무엇인지, 왜 사용하는 지에 대해 정리해보려고 한다.


첫인상은 FastAPI가 Flask의 영향을 많이 받았다던데, 정말 비슷하다? Flask()를 호출해서 앱을 인스턴스화 하고, 데코레이터를 애용해서 앤드포인트 만들기.. 아주 비슷한 느낌인데 그래도 차이를 정리해보자면
또 GET을 호출할 수 있는 앤드포인트는 flask 방식이라면 @app.route("/") 이런데,
FastAPI는 @app.get("/") 이런식으로 작성해야한다.
실행결과는, http://localhost:8000에서,

또 자동 생성된 스웨거문서는 http://localhost:8000/docs에서 api테스트가능하다는장점있는 스웨거문서를 볼 수 있다
또 잘 사용은 안하지만, /redoc도 있다고

flask의 경우에는 swaggerUI인가 third party사용해야 API문서를 작성할 수 있는 데 FastAPI 기능이👍.

또 실행할 때 Django나 Flask는 'python manage.py runserver', 'flask run' 등의 명령어를 통해 Django나 Flask 프레임워크에 내장되어있는 개발서버가 작동되는데, FastAPI는 개발서버가 내장되어 있지 않다는 점이 특징인 것 같다.
서버를 이용해 실행하려면 uvicorn이나 hypercorn을 설치해야한다. 그리고, 'python app.py'등이 아닌, 'uvicorn main:app --reload'를 입력해 실행해야 한다. 매번 명령어 입력이 어렵다면, uvicorn라이브러리를 직접 import해 실행하도록 uvicorn.run("main:app", reload=True)를 추가해도 된다.

What is FastAPI?

- 웹 프레임워크 : Spring Framework, Django, Flask, Sanic etc
- 마이크로 프레임워크 : Flask, Sanic
- ASGI애플리케이션 : WSGI + 비동기, 웹소켓 지원 (https://asgi.readthedocs.io/en/latest/introduction.html)
c.f. WSGI(파이썬에서 정의한 웹 앱 인터페이스, 파이썬으로 웹 프레임워크 만들려면, 이런 규칙을 따라야 한다.) (https://docs.python.org/ko/3/library/wsgiref.html)
-> 결론 : FastAPI는 마이크로 프레임워크인데, ASGI기반

WHY FastAPI?

- 배우기 쉽다. 모던 파이썬(3.6이상: 비동기 키워드 (async, await), 타입 힌트(JS,Python는 동적타입언어는 변수 선언할 때 타입 지정하지 않지만 힌트 주는 방식)) 문법 사용.
- OpenAPI기반. GraphQL도 지원한다. -> swagger api : restful표현하기 위한 일종의 스펙, Restful기반
- 자동문서 생성해준다. flask에서 문서 생성하려면, 다른 서드파티 깔아야 가능했다.
- 마이크로프레임워크 : 마이크로서비스 아키텍처이기 때문에 한 서비스가 죽어도 다른 서비스는 살아있다. 쿠버네티스도 MSA 에서 서비스 관리하기 위한 프로그램 cf) 모놀리틱 - (자바 스프링이나 , 장고)아키텍처 : 하나의 앱에 모든 기능이 다 들어있는 것이 주류였다. 그러나 이건 서비스 하나가 죽으면 서비스 전체가 다 다운된다.

'ComputerScience > Web, HTTP' 카테고리의 다른 글

Scrapy, Selenium  (0) 2022.03.22
RESTful API  (0) 2021.12.19
CORS  (0) 2021.12.19