[Flask] API 아키텍쳐 - Layered pattern

김기용·2020년 12월 17일
0
post-thumbnail

⚡️코드 아키텍쳐(architecture)

코드의 양이 적을때는 한 파일에 모든 코드를 작성해도 문제 없지만 프로젝트 규모가 커지면 파일 하나만 가지고 코드를 작성하기에는 너무 복잡해진다.🤯

🤔그럼 복잡하고 규모가 큰 프로젝트의 코드는 어떻게 관리하는것일까? 프로젝트를 시작할때 제일 먼저 다음 요소들을 염두해 두고 코드의 아키텍쳐를 생각해 보는 것이 좋다.

1. 확장성, 2.재사용성, 3. 유지보수성, 4. 가독성, 5. 테스트가능성

⚡️ Layered pattern

제일 많이쓰이는 흔한? 널리 적용되는 패턴 중 하나인 Layerd architecture pattern 에 대해서 정리해 보겠다.

multi-tier architecture pattern 이라고도 부른다(속닥속닥)

코드를 논리적인 부분 /
역할에 따라 독립된 모듈로 나누어서 구성하는 패턴이다.

실제 layer 들이 층을 구분하듯이 각 모듈들이 쌓여서 연결된 구조이다. 시스템마다 다를 수 있다고 하지만 보통 다음과 같은 3개의 layer가 존재한다고 한다.

1. presentation Layer, 2. Business Layer, 3. Persistence Layer

🕹 Presentation Layer(View)

제일 위에 위치한 layer 이며, 시스템을 사용하는 클라이언트와 연결되는 부분이다. 웹에서는 UI부분, backend에서는 endpoint 부분에 해당한다.

UI <-----------------------------------------------> Endpoint

presentation layer에서 API의 엔드포인트를 정의하고 request를 읽는 로직을 구현한다. 그 외의 일은 처리 하지 않는다. 짬이 좀 있나보다


🕹 Business Layer(service)

이메일 validate_check 나 해당 request를 거부해야하는 비지니스로직을 구현하기 위한 공간이다.


🕹 persistence Layer(model)

데이터 베이스와 관련된 로직을 구현하는 층이다. CRUD 작업이 이층에서 이루어진다


⚡️Layered Architecture의 특징

🕹단방향 의존성

기억하자 🙏단방향 의존성. 각 레이어는 자기보다 밑에 있는 Layer에게만 의존한다. 반대로 보면 각 층은 자기보다 위에 있는 층에 대해 독립적이란 뜻이다.

🕹 separation of concern

각 레이어의 역할이 명확하다. 각 층은 맡은일 빼고는 하지 않는다. cool


reference

참고 - 깔끔한 파이썬 탄탄한 백엔드 - 대장님송은우지음
profile
매일 새로운 배움을 통해 꾸준히 성장하는 것을 목표를 두고 있습니다. 논리적인 사고로 문제해결 하는것에 희열을 느끼고 언젠가 제가 만든 결과물들이 사람들에게 편이를 제공하며 사용되는 날을 간절히 소망하고 있습니다. 🙏

0개의 댓글