본문 바로가기
Days/IT

파이썬 웹 프레임워크(Flask, Django, FastAPI)

by TIS_Ha 2023. 12. 5.
반응형

파이썬은 웹 애플리케이션 개발을 위한 다양한 프레임워크를 제공하며 대표적으로 Django, Flask, FastAPI가 있다.

* 프레임워크 : 웹 어플리케이션이나 서비스를 구현하는데 필요한 패키지나 모듈을 제공하여 개발과정을 더 수월하게 만들어주는 일종의 뼈대.

 

플라스크(Flask)

장점 

  • 단순하고 간단하게 일부를 쉽게 안전하게 변경할 수 있다.
  • 대규모 네트워크에 배포할 수 있는 모듈식의 응용 프로그램이나 서버를 만들 수 있다.
  • 파이썬을 잘 이해하면 쉽게 응용 프로그램을 개발할 수 있다.
  • 모놀리식 애플리케이션이 아니므로 확장성이 뛰어나다.

단점

  • Django에 비해 기능이 적고, 표준화되어 있지 않기때문에 Django 등의 프레임워크 전환이 어려울 수 있다.
  • 개발 확장과 배포를 위해서 라이브러리 및 확장을 많이 검색해봐야 한다.
  • 전체 웹 애플리케이션을 개발하기에는 제약이 있다.

 

장고(Django)

Django는 웹 애플리케이션 개발을 위한 풀스택 웹 프레임워크이다. 

내장 ORM과 DB 마이그레이션으로 model을 쉽게 관리할 수 있고 많은 보안기능을 제공하고 있다.

장점

  • Model(모델), Template(템플릿), View(뷰)로 구성된 MTV 패턴을 사용하고 있다. (MVC 패턴과 유사)
  • MVC (모델-뷰-컨트롤러) 아키텍처를 활용한 데이터 베이스 접근이 용이하다.
  • SQL을 사용하지 않고 Database에서 사용하는 테이블(RDBMS)을 자동으로 대응해 주는 ORM(Object-Relational Mapping)을 통하여 코드를 작성할 수 있다.
  • 많은 보안 기능을 내장하고 있어, 보안성이 우수하다.(CSRF (사이트간 요청 위조), 사이트 간 스크립팅, SQL Injection 등의 보안 모듈 제공)
  • 다양한 타사 패키지 및 플러그인을 지원하며, 다른 프레임워크보다 많은 라이브러리를 사용할 수 있다.

단점 

  • 소규모 프로젝트에는 무겁고 기능이 많아 부적합하다.
  • Django 프레임워크의 규칙이 별도로 존재하지 않는다.
  • 단일 패키지로 간주해야 하는 모놀리식 아키텍처이다.
  • 개별 프로세스에 대한 요청은 Django 개발 프로세스를 느리게 할 수 있다.
  • ORM을 사용한다고 했을 때, 복잡한 데이터 구조(Join이 많은 경우)나 Procedure(프로시져)를 많이 사용한 곳에는 적합하지 않을 수 있다.

 

FastAPI

파이썬 웹 프레임워크 중 가장 유명한 장고와 플라스크는 주로 웹 서비스를 만들때 사용한다.

하지만 FastAPI는 API를 만드는데 보다 집중한 프레임워크이다.

FastAPI로 작성한 API는 리액트, Vue.js과 같은 프론트엔드 웹 프레임워크에서 사용할 수 있고 안드로이드, 아이폰 앱에서도 사용할 수 있다.

만약 장고나 플라스크로 웹 서비스를 만들었다면 이에 대응하는 안드로이드나 아이폰 앱을 위한 API 개발을 따로 해야 하지만 FastAPI는 한번 만든 API를 여러 클라이언트에서 변경 없이 사용할 수 있다.

FastAPI는 Flask와 비슷한 구조를 가졌으며, 비동기식으로 작성되어 병목현상이 자주 일어나는 웹 서버에서 빠른 성능을 보여준다.

* 비동기처리(Asynchronous) : 특정 로직의 실행이 끝날때까지 기다리지 않고 나머지 코드를 먼저 실행하여 처리함.

 

장점 

  • FastAPI는 내부적으로 Starlette이라는 비동기 프레임워크를 사용하기 때문에 빠른 속도와 높은 성능 지원이 가능하다.
  • FastAPI는 입출력을 정의하고 입출력 값의 검증을 빠르고 안전하게 할 수 있다.
  • FastAPI로 작성한 API는 API 사용법에 관한 문서를 따로 작성할 필요 없이 API 문서가 자동으로 생성된다. API 문서는 웹 페이지 형태로 제공되며 쉽게 API 동작을 테스트할 수 있다.
  • 웹 서버 WSGI (Web Server Gateway Interface) 및 비동기 ASGI (Asynchronous Server Gateway Interface)을 지원한다.

단점

  • FastAPI는 새로운 프레임워크이기 때문에 다른 프레임워크에 비해 커뮤니티 등 교육 정보가 매우 적고 신뢰성이 낮다.
  • FastAPI Security를 제공하지만 Django에 비해 보안성이 부족하다.
  • ORM 사용을 위해 sSqlAlchemy 사용, DB마이그레이션을 위해 Alembic 설치, validation을 위한 Pydnatic 설치 등 다양한 의존성을 직접 관리해야한다.

선택의 기준

각각의 프레임워크는 다른 목적과 용도에 적합한 장단점을 가지고 있다.

프로젝트의 목표, 규모, 기술적 요구 등 프로젝트의 특성에 따라 적합한 프레임워크를 선택해야한다.

  • Flask : 작은 규모의 웹 애플리케이션을 개발하고자 하는 경우, 유연한 개발이 필요한 경우
  • Django : 전체 웹 애플리케이션을 개발하고자 하는 경우, 강력한 보안기능이 필요한 경우
  • FastAPI : 비동기 처리를 필요로 하는경우, 높은 성능과 효율성이 요구되는 경우, API 개발에 중점을 둔 경우
반응형

'Days > IT' 카테고리의 다른 글

깃헙 소스트리 사용해보기  (0) 2024.02.23
DNS  (1) 2023.12.20
GET / POST  (1) 2023.12.04
데이터 크롤링과 BeautifulSoup  (1) 2023.12.01
알아두면 도움이 되는 IT 용어  (0) 2022.07.01

댓글