Python을 기반으로 하는 웹 프레임워크인 Django, Flask, FastAPI에 대해 알아보자 ❕
1. 프레임 워크
프레임워크는 Frame(틀) + work(일)의 합성어로, 일을 처리하기 위한 구조를 의미한다. 전체 동작 방식은 프레임워크가 제공하고 우리는 프레임워크의 일부분만 개발하는 것이다.
^즉, 프레임워크의 정해진 규칙을 지켜 우리가 일정 부분을 개발하면 실제 동작은 프레임워크가 책임진다.^

파이썬은 웹 애플리케이션 개발을 위한 여러 프레임워크를 제공한다. 그 중에서도 Django, Flask, FastAPI는 가장 인기 있는 프레임워크이다.
2. Django
Instagram, YouTube 등에서 사용되며, 가장 많이 쓰이는 파이썬 웹 프레임워크이다. 다양한 기능을 내장하고 있어 대규모 및 복잡한 웹 애플리케이션에 적합하다.
특징
- Full-stack Framework
- 높은 수준의 추상화
- 많은 기능들을 추상화하여, 개발자가 애플리케이션을 쉽게 구현할 수 있도록 한다.
- 보안 및 사용자 인증 기능 내장
- 관리자 화면 제공
- 관리자의 데이터베이스 관리 및 CRUD 작업을 쉽게 수행할 수 있다.
- ORM 내장 (Django ORM)
- 내장 ORM을 이용해, SQL 쿼리 대신 파이썬으로 DB 조작을 수행할 수 있다.
단점
- 다양한 기능이 내장되어 있어 상대적으로 무겁다. (소규모 프로젝트에는 적합 X)
- 원하는 기능을 추가하는데 유연하지 않다.
3. Flask
간단한 웹 사이트 혹은 간단한 API 서버 같은 소규모 웹 애플리케이션에 적합한 웹 프레임워크이다. 가볍게 설계되었기 때문에 필요한 기능만 선택적으로 추가하여 사용할 수 있으며, 애플리케이션의 구조와 기능을 유연하게 설계할 수 있다.
특징
- Micro Framework
- 경량화된 마이크로 프레임워크로, 기본적인 요청 처리만을 제공한다.
- 최소한의 추상화
- 확장성, 유연함
- 필요한 기능을 쉽게 추가하여 사용할 수 있다.
- ORM 내장 X
- 낮은 러닝커브
단점
- 가벼운 만큼 개발자가 신경써줘야 할 것이 많다.
- ORM이 내장되지 않아 별도의 ORM 라이브러리를 사용해야 한다.
4. FastAPI
빠른 성능과 사용하기 쉬운 API로 유명한 웹 프레임워크이다. Python 3.7+에서 비동기 프로그래밍을 지원하며, 실시간 애플리케이션 구축에 적합하다. 또한 자동 API 문서화 및 유효성 검사 등 개발자에게 편리한 기능을 제공한다.
특징
- Mircro Framework
- 빠른 성능, 빠른 속도, 적은 버그
- *Starlette 프레임워크와 *Pydantic 등의 라이브러리를 기반으로 하며, 비동기 및 병렬 처리를 통해 높은 성능을 제공한다.
- 쉬운 사용법
- 직관적인 문법 제공
- 자동 API 문서화 및 유효성 검사
- 유연함
- 필요한 기능을 자유롭게 추가할 수 있다.
- ORM 내장 X
단점
- 최신 프레임워크라 커뮤니티 지원 및 리소스가 비교적 적다.
- ORM이 내장되지 않아 별도의 ORM 라이브러리를 사용해야 한다.
* Starlette, Pydantic ?
- Starlette : FastAPI의 기반이 되는 경량 ASGI 프레임워크. 비동기 웹 애플리케이션 개발을 위한 기본적인 도구를 제공한다.
- Pydantic : 데이터 검증과 설정 관리를 위한 Python 라이브러리. 타입 힌트를 사용해 데이터의 구조를 정의하고, 자동으로 데이터 타입을 검증한다.
5. 비교
언제 Django를 사용해야 할까?
- 대규모 및 풀스택 웹 애플리케이션을 개발하고자 하는 경우
- 빠른 개발이 필요한 경우 (이미 내장되어 있는 기능을 이용해 일관성 있는 코드를 작성할 수 있기 때문)
언제 Flask를 사용해야 할까?
- 작은 규모의 웹 애플리케이션을 개발하고자 하는 경우
- 유연한 개발이 필요한 경우
언제 FastAPI를 사용해야 할까?
- 고성능 및 빠른 속도가 목적인 경우
- 비동기 처리가 필요한 경우
⇒ 이 외에도 프레임워크를 결정하기 위해 고려해야 할 사항이 많을 것이다. 각 프레임워크마다 장단점이 있기 때문에 개발하는 서비스의 특징을 반영해서 선택해야 한다. (위 세가지 외에도 다양한 프레임워크 존재)
Django와 FastAPI는 아직 사용해보지 않았지만, Flask 프레임워크를 이용해 파이썬 웹 애플리케이션을 구현한 적이 있다. 처음에는 간단한 API 서버 구현을 목표로 했기 때문에 Flask를 택했다. 간단한 코드와 다양한 라이브러리를 사용해 짧은 코드로 구현이 가능했지만 특정 기능들(트랜잭션, DB, ORM 등)을 직접 구현해줘야 하고 정해진 개발 패턴이 없으니 직접 프로젝트를 구성하는데 애를 먹었다.
실무에서는 여러 프레임워크를 모두 사용해볼 수 없으니, 설계 초기에 어떤 프레임워크를 선택해야 할지 많이 고민하는 것이 중요해 보인다. 개발 초기에는 이런 것들을 따지며 선택하기 어렵겠지만 프로젝트의 규모, 성능 요구사항, 개발 스타일 등은 미리 고려해보도록 하자.
참고자료 😃
https://www.youtube.com/watch?v=t9ccIykXTCM
https://blog.naver.com/it-edu/223193268573
https://dingrr.com/blog/post/언제-django를-언제-flask를-사용해야-할까
https://tech.toktokhan.dev/2021/06/28/python-web-framework/
https://backstreet-programmer.tistory.com/195
'Python' 카테고리의 다른 글
[Python] SQLAlchemy 트랜잭션 설계 (+ decorator) (0) | 2024.06.24 |
---|---|
[Python] 파이썬 동시성 프로그래밍 (+ GIL, 코루틴) (2) | 2024.06.15 |
[Python] SQLAlchemy 개념 및 설정 방법 (0) | 2024.06.05 |
[Python] CGI & WSGI & ASGI (0) | 2024.04.16 |
Python을 기반으로 하는 웹 프레임워크인 Django, Flask, FastAPI에 대해 알아보자 ❕
1. 프레임 워크
프레임워크는 Frame(틀) + work(일)의 합성어로, 일을 처리하기 위한 구조를 의미한다. 전체 동작 방식은 프레임워크가 제공하고 우리는 프레임워크의 일부분만 개발하는 것이다.
즉, 프레임워크의 정해진 규칙을 지켜 우리가 일정 부분을 개발하면 실제 동작은 프레임워크가 책임진다.

파이썬은 웹 애플리케이션 개발을 위한 여러 프레임워크를 제공한다. 그 중에서도 Django, Flask, FastAPI는 가장 인기 있는 프레임워크이다.
2. Django
Instagram, YouTube 등에서 사용되며, 가장 많이 쓰이는 파이썬 웹 프레임워크이다. 다양한 기능을 내장하고 있어 대규모 및 복잡한 웹 애플리케이션에 적합하다.
특징
- Full-stack Framework
- 높은 수준의 추상화
- 많은 기능들을 추상화하여, 개발자가 애플리케이션을 쉽게 구현할 수 있도록 한다.
- 보안 및 사용자 인증 기능 내장
- 관리자 화면 제공
- 관리자의 데이터베이스 관리 및 CRUD 작업을 쉽게 수행할 수 있다.
- ORM 내장 (Django ORM)
- 내장 ORM을 이용해, SQL 쿼리 대신 파이썬으로 DB 조작을 수행할 수 있다.
단점
- 다양한 기능이 내장되어 있어 상대적으로 무겁다. (소규모 프로젝트에는 적합 X)
- 원하는 기능을 추가하는데 유연하지 않다.
3. Flask
간단한 웹 사이트 혹은 간단한 API 서버 같은 소규모 웹 애플리케이션에 적합한 웹 프레임워크이다. 가볍게 설계되었기 때문에 필요한 기능만 선택적으로 추가하여 사용할 수 있으며, 애플리케이션의 구조와 기능을 유연하게 설계할 수 있다.
특징
- Micro Framework
- 경량화된 마이크로 프레임워크로, 기본적인 요청 처리만을 제공한다.
- 최소한의 추상화
- 확장성, 유연함
- 필요한 기능을 쉽게 추가하여 사용할 수 있다.
- ORM 내장 X
- 낮은 러닝커브
단점
- 가벼운 만큼 개발자가 신경써줘야 할 것이 많다.
- ORM이 내장되지 않아 별도의 ORM 라이브러리를 사용해야 한다.
4. FastAPI
빠른 성능과 사용하기 쉬운 API로 유명한 웹 프레임워크이다. Python 3.7+에서 비동기 프로그래밍을 지원하며, 실시간 애플리케이션 구축에 적합하다. 또한 자동 API 문서화 및 유효성 검사 등 개발자에게 편리한 기능을 제공한다.
특징
- Mircro Framework
- 빠른 성능, 빠른 속도, 적은 버그
- *Starlette 프레임워크와 *Pydantic 등의 라이브러리를 기반으로 하며, 비동기 및 병렬 처리를 통해 높은 성능을 제공한다.
- 쉬운 사용법
- 직관적인 문법 제공
- 자동 API 문서화 및 유효성 검사
- 유연함
- 필요한 기능을 자유롭게 추가할 수 있다.
- ORM 내장 X
단점
- 최신 프레임워크라 커뮤니티 지원 및 리소스가 비교적 적다.
- ORM이 내장되지 않아 별도의 ORM 라이브러리를 사용해야 한다.
* Starlette, Pydantic ?
- Starlette : FastAPI의 기반이 되는 경량 ASGI 프레임워크. 비동기 웹 애플리케이션 개발을 위한 기본적인 도구를 제공한다.
- Pydantic : 데이터 검증과 설정 관리를 위한 Python 라이브러리. 타입 힌트를 사용해 데이터의 구조를 정의하고, 자동으로 데이터 타입을 검증한다.
5. 비교
언제 Django를 사용해야 할까?
- 대규모 및 풀스택 웹 애플리케이션을 개발하고자 하는 경우
- 빠른 개발이 필요한 경우 (이미 내장되어 있는 기능을 이용해 일관성 있는 코드를 작성할 수 있기 때문)
언제 Flask를 사용해야 할까?
- 작은 규모의 웹 애플리케이션을 개발하고자 하는 경우
- 유연한 개발이 필요한 경우
언제 FastAPI를 사용해야 할까?
- 고성능 및 빠른 속도가 목적인 경우
- 비동기 처리가 필요한 경우
⇒ 이 외에도 프레임워크를 결정하기 위해 고려해야 할 사항이 많을 것이다. 각 프레임워크마다 장단점이 있기 때문에 개발하는 서비스의 특징을 반영해서 선택해야 한다. (위 세가지 외에도 다양한 프레임워크 존재)
Django와 FastAPI는 아직 사용해보지 않았지만, Flask 프레임워크를 이용해 파이썬 웹 애플리케이션을 구현한 적이 있다. 처음에는 간단한 API 서버 구현을 목표로 했기 때문에 Flask를 택했다. 간단한 코드와 다양한 라이브러리를 사용해 짧은 코드로 구현이 가능했지만 특정 기능들(트랜잭션, DB, ORM 등)을 직접 구현해줘야 하고 정해진 개발 패턴이 없으니 직접 프로젝트를 구성하는데 애를 먹었다.
실무에서는 여러 프레임워크를 모두 사용해볼 수 없으니, 설계 초기에 어떤 프레임워크를 선택해야 할지 많이 고민하는 것이 중요해 보인다. 개발 초기에는 이런 것들을 따지며 선택하기 어렵겠지만 프로젝트의 규모, 성능 요구사항, 개발 스타일 등은 미리 고려해보도록 하자.
참고자료 😃
https://www.youtube.com/watch?v=t9ccIykXTCM
https://blog.naver.com/it-edu/223193268573
https://dingrr.com/blog/post/언제-django를-언제-flask를-사용해야-할까
https://tech.toktokhan.dev/2021/06/28/python-web-framework/
https://backstreet-programmer.tistory.com/195
'Python' 카테고리의 다른 글
[Python] SQLAlchemy 트랜잭션 설계 (+ decorator) (0) | 2024.06.24 |
---|---|
[Python] 파이썬 동시성 프로그래밍 (+ GIL, 코루틴) (2) | 2024.06.15 |
[Python] SQLAlchemy 개념 및 설정 방법 (0) | 2024.06.05 |
[Python] CGI & WSGI & ASGI (0) | 2024.04.16 |