Chapter 1-5. Flask란?
Flask란?
Flask는 파이썬으로 개발된 가벼운 웹 프레임워크입니다. Django와 같은 풀스택 프레임워크와는 달리, 필요한 기능만을 추가하여 빠르고 유연한 웹 애플리케이션 개발이 가능합니다.
특징
- 자유도가 높다 ⇒ Django처럼 정해진 틀이 아니라 필요한 모듈들을 불러와 자유롭게 개발 가능 (→확장성이 좋다고도 표현)
- 가볍고, 간결하다 ⇒ python 파일 하나로 서버 생성 가능
- 쉽다!!!
- 처음 파이썬으로 백엔드 서비스를 구축하는 경우 Django는 진입장벽이 있음.
- 객체지향에 대한 이해, Django의 구조적 엄격함 등으로 인함
- 처음 파이썬으로 백엔드 서비스를 구축하는 경우 Django는 진입장벽이 있음.
Flask 공식 문서
풀스택 프레임워크 vs 마이크로 프레임워크
📌 풀스택 프레임워크 vs 마이크로 프레임워크
풀스택 프레임워크 (Full-Stack Framework)
풀스택 프레임워크는 웹 애플리케이션을 구축하는 데 필요한 모든 도구와 라이브러리를 포괄적으로 제공합니다. 서버 사이드와 클라이언트 사이드 개발을 지원하며, 데이터베이스 처리부터 사용자 인터페이스까지 모든 기능을 관리합니다. 이 프레임워크는 통합된 개발 환경을 제공하고, 여러 기능을 내장하고 있어 개발자가 하나의 프레임워크만으로 전체 애플리케이션을 구축할 수 있게 도와줍니다.
특징:
- 기능의 포괄성: 데이터베이스 처리, 서버 구축, 사용자 인터페이스(UI) 처리, 보안 등 웹 애플리케이션의 거의 모든 측면을 지원합니다.
- 내부 일관성: 코드 구조와 설계 원칙이 일관되기 때문에 프로젝트의 일관성을 쉽게 유지할 수 있습니다.
- 커스터마이징이 제한적: 대부분의 기능이 내장되어 있어 개발자는 프레임워크가 제공하는 방식에 맞춰야 합니다.
장점:
- 빠른 개발: 기본적인 기능들이 내장되어 있어 빠르게 웹 애플리케이션을 시작할 수 있습니다.
- 일관된 코드베이스: 기능들이 이미 통합되어 있기 때문에 프로젝트 구조나 코드의 일관성을 쉽게 유지할 수 있습니다.
단점:
- 무거운 학습 곡선: 처음에는 많은 기능을 배워야 하므로, 초기 학습이 다소 어렵고 시간이 걸릴 수 있습니다.
- 유연성 부족: 프레임워크가 제공하는 방법대로 개발해야 하므로, 유연성이 부족할 수 있습니다.
주요 풀스택 프레임워크
1. Java Spring
Java Spring은 자바 기반의 오픈 소스 프레임워크로, 엔터프라이즈급 애플리케이션 개발을 위한 강력한 기능을 제공합니다. 다양한 모듈을 통해 웹 애플리케이션, 마이크로서비스, 데이터 액세스, 보안 등 폭넓은 기능을 지원합니다.
- 주요 모듈: Spring MVC (웹 애플리케이션), Spring Boot (마이크로서비스), Spring Data (데이터 액세스), Spring Security (보안)
- 장점:
- 의존성 주입(DI)과 제어 역전(IoC)으로 모듈 간 결합도를 낮추어 유지보수성을 높입니다.
- 방대한 커뮤니티와 생태계를 통해 빠른 문제 해결과 기능 확장이 가능합니다.
- 단점:
- 초기 학습 곡선이 높을 수 있습니다. Spring의 다양한 설정과 규칙을 익히는 데 시간이 걸립니다.
2. Python Django
Django는 Python 기반의 고수준 웹 프레임워크로, 고급 기능들을 내장하고 있어 빠르게 웹 애플리케이션을 구축할 수 있습니다. ORM(Object-Relational Mapping), 인증 및 권한 관리, URL 라우팅 등의 기능을 제공합니다.
- 주요 모듈: ORM, MTV(Model-Template-View) 아키텍처, Django REST Framework (RESTful API)
- 장점:
- 기본적인 웹 애플리케이션 기능들이 내장되어 있어 빠른 개발이 가능합니다.
- 강력한 ORM 지원을 통해 데이터베이스 작업을 효율적으로 처리할 수 있습니다.
- 단점:
- 설정이 자동으로 이루어지므로 초보자에게는 이해하기 어려울 수 있습니다.
- 프로젝트의 구조나 설정을 사용자 정의하기에 제약이 있을 수 있습니다.
3. Ruby on Rails
Ruby on Rails는 Ruby 언어를 기반으로 하는 풀스택 웹 프레임워크로, 간결하고 직관적인 코드 작성이 특징입니다. MVC 패턴을 기반으로 애플리케이션을 구조화하고, 기본적인 기능들이 내장되어 있습니다.
- 주요 모듈: MVC 아키텍처, ActiveRecord (ORM), Action Pack (웹 요청 처리)
- 장점:
- 간결하고 직관적인 코드 작성이 가능하며, 개발 생산성이 높습니다.
- 개발자 친화적인 코드 작성 방식으로 빠른 개발이 가능합니다.
- 단점:
- 대규모 애플리케이션에서는 성능 문제가 발생할 수 있습니다.
- 동적 언어인 Ruby의 특성상, 코드의 유지보수와 확장성이 어려울 수 있습니다.
마이크로 프레임워크 (Micro Framework)
마이크로 프레임워크는 기능이 제한적이고 경량화된 웹 프레임워크입니다. 필요한 부분만을 제공하며, 개발자가 필요한 기능을 선택적으로 추가할 수 있습니다. 서버의 기본적인 동작을 구현할 수 있는 최소한의 기능만 제공하고, 다른 필요한 도구나 라이브러리는 개발자가 추가하여 확장할 수 있습니다.
특징:
- 경량성: 기본적인 웹 서버 기능만 제공하며, 프로젝트에 필요한 기능을 선택적으로 확장할 수 있습니다.
- 유연성: 다양한 도구와 라이브러리를 추가하여 사용할 수 있어 매우 유연합니다.
- 빠른 학습 곡선: 코드가 단순하고 구조가 간단해 학습이 빠르고 쉽게 이루어집니다.
장점:
- 빠른 개발: 기본 기능만 제공하므로, 애플리케이션을 간단히 구축할 수 있습니다.
- 유연성: 개발자가 필요에 따라 다양한 기능을 추가할 수 있습니다.
단점:
- 대규모 애플리케이션에 부적합: 복잡한 애플리케이션을 구축하기에는 기능이 부족할 수 있습니다.
- 기능 확장에 대한 관리: 필요한 기능을 하나하나 추가해야 하므로, 많은 라이브러리나 도구를 관리하기 어려울 수 있습니다.
주요 마이크로 프레임워크
d1. Flask (Python)
Flask는 Python 기반의 가벼운 웹 프레임워크로, 서버 구축을 위한 최소한의 기능만을 제공합니다. 기본적인 웹 요청 처리 및 템플릿 렌더링 기능만 제공하며, 추가적인 기능은 개발자가 필요한 대로 선택적으로 추가해야 합니다.
- 장점:
- 간결하고 직관적인 코드 작성이 가능합니다.
- 필요한 기능을 자유롭게 추가할 수 있어 확장성이 뛰어납니다.
- 단점:
- 대규모 애플리케이션에는 불편할 수 있으며, 복잡한 기능을 추가하는 데 시간이 더 걸릴 수 있습니다.
2. Express.js (JavaScript - Node.js)
Express.js는 Node.js 기반의 경량 웹 프레임워크로, JavaScript로 서버 사이드 애플리케이션을 구축할 때 사용됩니다. 간단한 API 서버나 웹 애플리케이션을 빠르게 개발할 수 있습니다.
- 장점:
- 비동기 프로그래밍에 강점을 가지며, 높은 확장성을 제공합니다.
- Node.js의 비동기 처리 모델을 활용하여 높은 성능을 발휘합니다.
- 단점:
- 복잡한 애플리케이션을 만들기 위해서는 여러 가지 추가 모듈과 미들웨어를 관리해야 하므로, 관리가 복잡해질 수 있습니다.
- 구조에 대해 엄격한 규칙이 없기 때문에 프로젝트가 커질수록 구조적 일관성을 유지하기 어려울 수 있습니다.
✅ 마무리 요약
- 풀스택 프레임워크는 모든 기능을 내장하고 있어 빠른 개발이 가능하지만, 기능에 제한이 있을 수 있으며, 학습이 다소 어려울 수 있습니다. Java Spring, Django, Ruby on Rails는 대표적인 풀스택 프레임워크로, 각각 자바, 파이썬, 루비 언어 기반에서 강력한 기능을 제공합니다.
- 마이크로 프레임워크는 가볍고 유연하지만, 대규모 애플리케이션에는 적합하지 않을 수 있습니다. Flask와 Express.js는 필요한 기능을 선택적으로 추가할 수 있어, 작은 규모의 프로젝트나 빠른 개발이 필요한 경우에 유리합니다.
'Flask' 카테고리의 다른 글
Chapter 1-8 Jinja (Template Engine) (0) | 2025.04.17 |
---|---|
Chapter 1-7 라우팅(Routing) (0) | 2025.04.17 |
Chapter 1-4 Flask 서버 구축을 위한 개발 환경 설정 (0) | 2025.04.17 |
Chapter 1-3_1 파이썬 내장 함수 / 외장 함수 (import) (0) | 2025.04.17 |
Chapter 1-3 파이썬 문법정리 (0) | 2025.04.17 |