프로그래밍 언어/Python

Django vs Flask 파이썬 웹 프레임워크 비교 - Flask #1

eco7T 2025. 4. 1. 09:41
반응형

Flask와 Django를 비교해 보며 어떤 상황에서 Flask를 선택하는 것이 유리한지 판단해 보고자 하며, 초보 웹 개발자도 쉽게 이해할 수 있는 예제 코드와 구조 설명을 통해 Flask의 학습 장벽을 낮추고, 궁극적으로 Flask 기반 웹 프로젝트 개발 적용할 수 있도록 정리합니다.

Django vs Flask 파이썬 웹 프레임워크 비교
Django vs Flask 파이썬 웹 프레임워크 비교

 

반응형

 

  Flask 기본 배경

Flask는 "필요한 기능만 붙이자", "개발자가 구조를 정의한다"는 철학 아래 다음과 같은 특징을 가집니다.

  • 의존성 최소화: Flask는 처음 설치할 때 매우 가볍습니다. 단 두 개의 외부 라이브러리만을 기본으로 의존합니다: `Werkzeug`(웹 서버 게이트웨이 인터페이스)와 `Jinja2`(템플릿 엔진).
  • 플러그인 구조: 필요한 기능(ORM, 인증, 관리 콘솔 등)은 개발자가 선택해 확장할 수 있도록 설계되어 있습니다.
  • 명시적인 구조: 암묵적인 설정이 적고, 파일 구조나 흐름을 개발자가 직접 설계할 수 있어 학습자에게 명확성을 제공합니다.

이러한 ‘작은 출발’은 실무에선 종종 단순하지만 명확한 구조를 선호하는 프로젝트나, 빠르게 프로토타입을 개발하고자 할 때 매우 큰 이점을 제공합니다.

 

아래 코드는 Flask의 기본 철학이 잘 드러나는 “Hello, World!” 예시입니다.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, Flask!'

if __name__ == '__main__':
    app.run(debug=True)

 

이 간단한 코드만으로 웹서버를 띄우고, 라우팅을 정의하고, 응답을 반환할 수 있습니다. 설정 파일도, 디렉터리 구조도 강제되지 않으며, 개발자가 설계한 대로 흘러갑니다.

 

 

 

  Django와의 차이

Flask와 Django는 모두 파이썬 기반의 웹 프레임워크지만, 지향하는 개발 방식은 완전히 다릅니다.

Django는 “배터리가 포함된 프레임워크(Batteries Included)”라고 모든 것을 갖춘 프레임워크를 지향합니다. 반면 Flask는 “최소한의 구성으로 출발하되, 필요한 것만 추가한다”는 개념을 가지고 있죠.

 

1) 프레임워크 구조 비교

항목 Django Flask
프레임워크 철학 완전한 도구 세트를 제공 (배터리 포함) 최소한의 코어 기능, 필요시 확장
디렉토리 구조 기본 앱 구조 자동 생성 구조 없음, 개발자가 직접 설계
ORM 내장된 강력한 ORM (Django ORM) ORM 없음. 주로 SQLAlchemy를 별도로 사용
Admin 인터페이스 기본 제공 기본 제공되지 않음 (Flask-Admin 등 사용)
라우팅 방식 URLconf에 명시적으로 정의 데코레이터 기반으로 간결하게 정의

 

 

2) 개발 방식 차이

  • Django는 "정해진 대로 따라오기만 하면 된다"는 식의 개발 경험을 제공합니다. 프로젝트 구조, URL 설정, 데이터베이스 연동, 폼 처리까지 모두 포함되어 있어 비교적 빠르게 결과를 낼 수 있습니다.
  • Flask는 "모든 것을 내가 정의한다"는 느낌입니다. 자유도는 높지만, 그만큼 개발자가 책임져야 할 부분도 많습니다. 그러나 이 유연성 덕분에, 실제 서비스 개발에서 **사용자 정의 구조나 특수한 비즈니스 로직**을 적용하기가 훨씬 수월합니다.

 

3) 학습 곡선 비교

  • Django는 초기에 제공되는 기능이 많아 학습량이 많고, 구조를 익히는 데 시간이 걸릴 수 있습니다.
  • Flask는 처음부터 코드 중심으로 접근할 수 있어 빠른 입문이 가능하지만, 프로젝트가 커질수록 구성 요소를 어떻게 결합할지 스스로 설계해야 하는 도전이 있습니다.

 

 

 

Django의 기본 라우팅 예시 (urls.py):

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]

 

 

Flask의 기본 라우팅 예시 (app.py):

from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
    return 'Welcome to Flask!'

Django는 여러 파일이 연결되어 있어 구조적이지만 복잡한 반면, Flask는 하나의 파일로 시작해 바로 실행할 수 있는 간결함이 특징입니다. 

반응형