마이크로 웹프레임워크를 표방하는 플라스크는 startproject를 입력하면 알아서 레이아웃을 짜주는 Django와 달리 API 구조도를 직접 짜야한다.
이때 베이직하게 적용되는 개념이 레이어드 아키텍쳐다.
레이어드 아키텍쳐가 뭐냐구? 레이어드가 구성요소가 몇겹의 수평구조가 중첩되어 구성되는 N계층패턴 방식이다. 대부분 소프트웨어 설계시 사용되는 전통방식이며, 계층 마다 자체적으로 독립적이다. 즉 모든 구성요소가 상호 연결되어 있지만 서로 의존하지는 않는다.
레이어드 아키텍쳐는 초기엔 2중구조로 출발했으나, 현재 대부분의 레이어드 3중이나 4중 구조를 택하고 있다. 3,4중도 DB를 레이어드에 넣느냐 마느냐의 유무에 따라 갈린다.
혹은 DB와 Persistence layer를 묶어서 Datalayer로 명명하냐에 따라 달라진다.
여기서는 4중 구조로 살펴보자.
Database layer : 모든 데이터가 저장되어있는 레이어다.
Persistence layer : 데이터베이스와 관련된 로직을 구현하는 부분이다. Business layer에 필요한 데이터의 생성, 수정, 읽기를 처리해 데이터 베이스에서 데이터를 저장, 수정, 읽기를 하는 역할을 한다.
Business layer : Application layer, Transaction layer 모두 같은 말로 통용된다. 이 레이어는 비즈니스 로직을 실제로 구현하는 레이어다. 쿼리나 계산, 평가, 필터링 같은 실제 활동이 이뤄지는 레이어다.
Presentation layer : 레이어 상에서 항상 최상단에 위치하게 되며, 시스템 사용자 혹은 클라이언트 시스템과 직접 연결되는 부분이다. 웹사이트에서는 UI가, 백엔드에서는 엔드포인트가 해당된다. 여기서는 세 가지 로직을 구현한다.
Presentation layer == View
Business layer == Service
Persistence layer == Model, DAO
Database layer == MySQL
Service를 분할해 Controller / Service로 나누는 경우도 있다.