파이썬 프레임워크에 대해 간단히 정리하고 가보도록 하자.
기존 자바의 개발 프레임워크인 Spring은 자바의 프레임워크이자
프레임워크의 대명사라고도 불릴 정도로 인지도가 대단하다.
Spring만 다룰 수 있으면 Java로 무엇이든 좀 더 쉽고 빠르게 개발 할 수 있기에
'Spring의 활용 능력'은 'Java 개발 능력'과 직결된다고 봐도 무방할정도다.
Full Stack Framework
Spring과 같은 프레임워크를 풀 스택 프레임워크(Full Stack Framework)라고 부르며
다음과 같은 기능을 모두 갖추고 있다.
- Request/Response 추상화
- 세션 관리, 사용자 인증 및 권한관리
- 웹페이지 템플릿 및 URL 매핑
- DB 접근 관리
- 보안 기능
- Data Model 관리
- 기타 기능
이와 비슷한 프레임워크가 파이썬 진영에는 Django라는 녀석이 있으며,
Django 또한 Full Stack Framework의 기능은 대부분 갖추고 있다.
하지만 Full Stack Framework의 기능이 점점 다양해지고 심오해지면서
신규 개발자들의 체감 진입 장벽이 높아지고,
이에 마이크로 웹 개발 프레임워크가 인기를 얻기 시작했다.
Micro Framework
Micro Framework는 간단한 학습만으로도 순식간에 웹 서비스를 구현할 수 있다.
웹 브라우저에 'hello world!'를 나타나게 하는 시간이
Micro Framework에 대한 지식이 있는 사람은 5분이면 될 정도로 정말 간단하다.
Micro Framework의 대표적인 것으로 Ruby의 Sinatra라는 프레임워크가 있다.
기본적인 MVC Model (Model - View - Control)을 따르지 않는다.
이러한 주요 언어별 Micro Framework의 종류는 다음과 같다.
- Ruby : Almo Sinatra, Astaire, Cuba, Padrino, Pakyow
- PHP : Fat-Free, Fitzgeral, Glue, klein
- Javascript : Express, Picard
- Coffrescript : Zappa
- Python : Bottle, Flask, itty, Juno
- Groovy : Graffiti, Ratpack
- Scala : Finatra, Scalatra, BlueEyes
- Perl : Dancer, Mojolicious
Bottle
Flask와 더불어 대표적인 Python의 WSGI 기반 Micro Framework다.
Bottle의 특징은 다음과 같다.
- 라우팅 : 동적 URL 지원 (Request function fall mapping)
- 템플릿 : 빠른 속도의 내장 템플릿 엔진(pythonic), mako, jinja2와 cheetah 템플릿 지원
- 유틸리티 : 폼 데이터, 파일 업로드, 쿠키, 헤더 및 기타 HTTP 메타 데이터 관리 기능
- 서버 : 내장 HTTP 서버, fapws3, bjoern, Google AppEngine, cherrypy 등 WSGI 지원 서버
Flask
Flask는 Bottle과 마찬가지로 대표적인 Python Micro Framework다.
개인적으로는 요즈음 오히려 Bottle 보다 더 인기가 좋은 것 같다.
Flask 기본 모듈에는 핵심기능만 들어있으며 이것만으로 충분히 웹 서비스를 구현할 수 있다.
또한 손쉽게 확장 할 수 있도록 하여 다양한 모듈을 지원한다.
또한 웹 서비스를 위해 Jinja2를 기본 템플릿 엔진으로 내장하고 있으며
Secure Cookie 및 RESTful request 지원,
디버거 내장, WSGI 1.0 호환 등 특징을 가지고 있다.
Git : https://github.com/mitsuhiko/flask
URL : http://flask.pocoo.org/
공식 홈페이지는 가이드 문서와 스니펫(snippet) 코드
그리고 샘플 App인 flaskr, 공식 홈페이지 소스 코드를 받을 수 있다.
※ snippet : 개발 시 재사용을 위해 참고하려고 특정 기능을 구현해 둔 코드 블록
앞으로 Python, Flask, Jinja2, Bootstrap과
AWS Python SDK인 Boto3를 이용해 AWS관련 개발 내용과
트러블 슈팅에 대해서 작성할 예정이다.