Creating a better Flask application - 1. Hello World

city7310·2019년 2월 12일
3
post-thumbnail

'더 좋은 Flask 어플리케이션 만들기'는 1 module 기반의 Flask 어플리케이션에서, 필자가 작성한 Flask-Large-Application-Example까지 나아가는 여정을 다룹니다.

약간의 웹 프레임워크 이야기

웹 프레임워크의 종류를 따지면 대부분 full-stack web frameworkmicro web framework로 나누곤 한다. full-stack web framework는 웹 어플리케이션 하나를 완성하기 위한 모든 게 준비되어 있고, micro web framework는 웹 어플리케이션 서버를 개발하기 위한 '최소한'이 준비되어 있으며 확장이 용이하게 설계되어 있는 것이 특징이라고 한다.

쉽지 않은 이야기고, 그냥 우리에게 당장 와닿는 부분은 '프로젝트의 초기 상태'일 것이라고 생각한다. Python 쪽에서 두 종류의 프레임워크를 대표하는 것이 Django(full-stack)Flask(micro)인데, 두 프레임워크의 초기 상태는 다음과 같다.

Django의 프로젝트 초기 상태

django-admin startproject {project_name} 커맨드를 입력해서 프로젝트를 시작하고, 명령어가 실행된 디렉토리에 아래와 같이 이런저런 파일들이 세팅된다. 프로젝트 이름이 planb라면, 아래처럼 만들어진다.

생성된 파이썬 모듈들에는 django가 자동으로 코드를 삽입해 둔 상태다.

Flask의 프로젝트 초기 상태

프로젝트를 시작하기 위한 커맨드는 없고, 그냥 모듈 하나 생성해서 아래처럼 코드를 작성하면 된다.

뭐가 더 좋음?

뭐가 생산성이 더 좋고 그런건 없고, 그냥 익숙함과 취향의 차이라고 생각한다. 구조에 대해 신경쓰지 않아도 되고 ORM같은 것들을 이미 준비해 주어서 딱 맞춰 개발하면 되니까 Django를 좋아하는 사람들도 있고, 필자처럼 고민의 흔적이 들어간 '이유 있는 구조'를 만들어가는 것을 즐거워해서(솔직히 말하면 그냥 지 맘대로 하는 거 좋아해서) Flask를 좋아하는 사람들도 있다. 또는 클라이언트 사이드 렌더링 기반의 웹 서비스를 개발하기 위해 API 서버를 구현하기에 좋은 프레임워크라서 Flask를 쓰는 경우도 있고.

이 컨텐츠의 동기

고등학교 1학년 때 Flask라는 프레임워크를 쓰기 시작했고, 졸업한 지금까지도 + 회사에서도 쓰고 있다. Flask 어플리케이션의 '좋은 구조'를 만들기 위해 참 많이 고민했고, 이런 경험을 공유하고자 이 컨텐츠를 기획했다.

한 모듈에 이것저것 다 우겨넣은 어플리케이션을 리팩토링하는 방식으로 진행할지, 아니면 간단한 Hello World 서버로 시작해서 Flask에 대한 배경지식을 쌓아가며 진행할지 고민했었는데, 아무리 생각해도 후자가 좋을 것 같아서 이번 챕터에서 Hello World 서버를 작성하는 것으로 긴 여정을 시작하도록 하겠다.

일러두기

코드 참조

GitHub에 저장소를 만들어 두었다. 컨텐츠의 진행 흐름에 따라 커밋도 깔끔하게 정리하려고 한다. 첫 커밋부터 코드 스냅샷과 diff들을 보며 어플리케이션 구조가 잡혀가는 모습을 시간 순서대로 잘 살펴볼 수 있게 만들기 위함이다.

의존성 관리 방식

pipenv를 사용하겠다. 컨텐츠를 읽는 데에 필요한 필수 소양은 아니지만, 알아두면 좋을 것이라 생각한다.

파이썬 버전

Python 3.6을 사용하겠다.

gitignore

gitignore.io에서 Python, macOS, Windows, PyCharm+all을 선택하고, 그 내용을 .gitignore에 추가하겠다.

작업

Hello World 서버 작성

위에서도 이야기했듯, Hello World 서버를 작성하도록 하자. GET / 요청 시, text/plain으로 Hello World라는 문자열을 반환하는 WAS다. 그 전에 .gitignore 추가와 pipenv 설정도 진행했다. 스냅샷

profile
PlanB라는 닉네임으로 활동하고 있는 주니어 백엔드 엔지니어입니다. 자기계발 욕구는 노력충들 전유물이 아니라 세상을 똑바로 살기 위한 기본 태도라고 생각합니다. 기술을 확실하게 이해하고, 성숙한 글을 쓰기 위해 노력하겠습니다.

0개의 댓글