Programming

풀스택 프레임워크 Vs 마이크로 프레임워크 비교

디자이너 슈 2025. 2. 17. 09:11

마이크로 프레임워크(Microframework)는 최소한의 기능만 제공하는 경량 웹 프레임워크입니다.
"마이크로"라는 이름처럼, 핵심 기능만 담아 작고 빠르며 유연하게 설계되었습니다.


1. 마이크로 프레임워크의 핵심 특징

(1) 최소주의 철학 (Minimalism)

  • 필수 기능만 포함: 라우팅(Routing), 요청 처리, 기본 템플릿 엔진
  • 확장성: 데이터베이스 연동, 인증 등 추가 기능은 플러그인 방식으로 선택
  • 예시: Flask, Express.js (Node.js), Bottle (Python)

(2) 풀스택 프레임워크 vs 마이크로 프레임워크

  풀스택 프레임워크 마이크로 프레임워크
예시 Django (Python), Ruby on Rails Flask (Python), Express.js
특징 모든 기능 내장 (ORM, 인증, 관리자 페이지 등) 기본 기능만 제공 → 개발자가 직접 확장
장점 대규모 프로젝트에 적합 소규모·맞춤형 프로젝트에 유연
단점 학습 곡선 가파름 필요한 기능을 직접 구현해야 함

2. 왜 "마이크로"라고 부르나요?

  • 코드 라인 수가 적음: Flask는 약 1,000줄 내외 (Django는 20만 줄 이상)
  • 의존성 최소화: 핵심 라이브러리만 사용 → 빠른 실행 속도
  • 자유도 높음: 개발자가 아키텍처를 직접 설계할 수 있음

3. 마이크로 프레임워크의 장단점

👍 장점

  1. 학습이 쉬움: 핵심 개념만 배우면 바로 시작 가능
  2. 유연한 확장: 프로젝트에 맞춰 필요한 기능만 추가 (예: flask-sqlalchemy로 DB 연동)
  3. 가벼움: 불필요한 기능이 없어 성능 효율적

👎 단점

  1. 기능 부족: 인증, ORM 등은 별도 라이브러리 설치 필요
  2. 설계 책임: 아키텍처를 개발자가 직접 결정해야 함 → 초보자에게 혼란

4. 마이크로 프레임워크가 적합한 경우

  1. RESTful API 서버: 가볍고 빠른 응답이 필요한 경우
  2. 소규모 웹앱: 단순한 기능의 블로그, 포트폴리오 사이트
  3. 프로토타이핑: 아이디어를 빠르게 검증할 때
  4. 커스텀 아키텍처: 특정 기술 스택을 조합해 사용할 때

5. 실제 예시: Flask 코드로 이해하기

from flask import Flask
app = Flask(__name__)

# 1. 라우팅: URL과 함수 연결
@app.route('/')
def home():
    return "Welcome to my Micro App!"

# 2. 확장: 플러그인 추가 (예: JSON 응답)
@app.route('/api/data')
def get_data():
    return { "message": "This is JSON!" }

# 3. 실행
if __name__ == '__main__':
    app.run()
  • Flask의 마이크로함:
    • 라우팅(@app.route)과 응답 반환만 가능 → 그 외 기능은 확장 필요
    • 10줄 안팎으로 웹 서버 구동 가능

6. 대표적인 마이크로 프레임워크

  • Python: Flask, FastAPI, Bottle
  • JavaScript: Express.js, Koa
  • Java: Spark Java, Javalin
  • Go: Gin, Echo

7. 철학 비교: Flask vs Django

  Flask (마이크로) Django (풀스택)
데이터베이스 직접 ORM 선택 (SQLAlchemy) 내장 ORM 제공
관리자 페이지 직접 구현 필요 자동 생성 가능
보안 CSRF, 세션 등 직접 처리 내장 보안 기능
시작 속도 빠름 (5분) 느림 (설정 복잡)

📚 결론

  • 마이크로 프레임워크 = "레고 기본 세트"
    • 기본 블록만 제공 → 원하는 대로 조립 가능
    • 복잡한 구조는 직접 만들어야 하지만 자유도 최고
  • 풀스택 프레임워크 = "완성된 레고 킷"
    • 설명서대로 조립하면 완성품 생성 → 규모 있는 프로젝트에 적합

Flask로 시작해 필요에 따라 기능을 추가해가며 나만의 서버를 커스텀 할 수 있음.