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. 마이크로 프레임워크의 장단점
👍 장점
- 학습이 쉬움: 핵심 개념만 배우면 바로 시작 가능
- 유연한 확장: 프로젝트에 맞춰 필요한 기능만 추가 (예:
flask-sqlalchemy
로 DB 연동) - 가벼움: 불필요한 기능이 없어 성능 효율적
👎 단점
- 기능 부족: 인증, ORM 등은 별도 라이브러리 설치 필요
- 설계 책임: 아키텍처를 개발자가 직접 결정해야 함 → 초보자에게 혼란
4. 마이크로 프레임워크가 적합한 경우
- RESTful API 서버: 가볍고 빠른 응답이 필요한 경우
- 소규모 웹앱: 단순한 기능의 블로그, 포트폴리오 사이트
- 프로토타이핑: 아이디어를 빠르게 검증할 때
- 커스텀 아키텍처: 특정 기술 스택을 조합해 사용할 때
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로 시작해 필요에 따라 기능을 추가해가며 나만의 서버를 커스텀 할 수 있음.