Flask Project 초기세팅

BLAKE KIM·2020년 9월 27일
0

Flask

Flask는 파이썬으로 작성된 마이크로 웹 프레임워크의 하나로 Werkzeug 툴킷과 Jinja2 템플릿 엔진에 기반을 둔다. (사실 툴킷과 템플릿 엔진에 기반을 둔다는 게 무슨 소린지는 잘 모르겠다. 추후에 공부해보자.) Flask는 특별한 도구나 라이브러리가 필요 없기 때문에 마이크로 프레임워크라고 부른다.

마이크로 프레임워크(Micro Framework)

마이크로 프레임워크는 Minialistic한 웹 애플리케이션 프레임워크를 가리키기 위해 사용되는 용어이다. 대조되는 용어로는 풀 스택 프레임워크가 있다. Django나 Spring, Ruby on Rails와 같은 것이 풀 스택 프레임워크이다. 마이크로 프레임 워크에서는 가능한 모든 서비스를 분할해서 관리하고, 필요할 때마다 서비스간의 통신으로 연결하여 거대한 서비스를 만든다는 개념을 가지고 있다.

즉 이전 프로젝트까지 사용했던 Django와는 다르게 API를 만드는 우리가 처음부터 모든 것을 세팅해주어야 한다. Django에서 명령어 하나로 프로젝트의 구조나 앱의 구조가 생성되는 것과는 다르다.

프로젝트 구조

현재 진행 중인 프로젝트에서는 Layered Architecture를 사용하여 프로젝트 구조를 생성했다. 그러나 이전 포스팅에서 존재하는 Controller 계층은 제외하고 해당 계층의 역할을 View에서 실행되도록 구조화하였다.

실질적으로 이런 방식으로 구조화하지 않는다면 app.py 안에서 모든 기능을 구현할 수 있다. 그러나 app.py에서 Flask 객체를 생성하고 각 계층을 연결하도록 하였으며 run.py에서 run 명령어를 통해서 해당 Flask 객체가 실행되도록 하였다. Django의 manage.py의 역할을 run.py가 대신한다고 이해하면 쉽다.

model 디렉토리는 Database에서 데이터를 가져오거나 입력하고 삭제하는 기능이 존재하는 계층, service 디렉토리는 해당 데이터를 받아와서 처리하는 로직이 구현된 계층, view 디렉토리는 endpoint가 생성되고 http 요청과 응답을 처리하고 DB와의 연결을 맺고 끊는 작업이 구현되어 있다. control 계층에서 실행되어야한 DB connection이 view에서 실행되도록 처리하였다.

app.py

CORS(app)을 통해 다른 네트워크와도 연결하도록 하였으며 Services라는 빈 class를 생성하여 service 계층에서 생성된 각각의 service를 하나로 합하여 endpoints에 전달할 수 있도록 하였다. 모델 계층인 Dao 클래스 또한 해당 서비스와 연결되는 코드를 볼 수 있다.

기본적인 사항은 깔끔한 파이썬 탄탄한 백엔드 책을 참고하였다.

profile
BackEnd

0개의 댓글