-
백엔드 API 패턴 - Layered ArchitectureServer 2022. 11. 15. 09:55
1. Layered Architecture란?
- Multi-tier 아키텍쳐 패턴이라고도 불리는데, 레이어드 아키텍쳐는 코드를 논리적인 부분 혹은 역할에 따라 독립 모듈로 나누어서 구성하는 패턴을 말한다. 각 모듈이 하위 모듈에 의존하면서 레이어처럼 쌓여 있는 구조이다.
- 이번에 구현한 구조는 3개의 레이어로 구성되었다.
1.1 Presentation layer
- User interface단으로 클라이언트와 직접 연결되는 부분이다. 이 단에서는 API들의 엔드포인트를 정의하고 HTTP요청을 읽어들이는 로직이 구현하며 요청(request)을 Business layer로 보내기 위해 요청에 담겨있는 데이터들이 우선 올바르게 전송되었는지 선 검증작업을 한다.
- 역할 : EndPoint, Authentication, JSON Translation
1.2 Business layer
- 비즈니스 로직을 구현하는 부분이다. 예를들면, 회원가입 요청 시 해당 유저가 이미 회원 가입이 되어있는지 등을 판단하는 로직이 들어가거나, 로그인 요청 시 해당 유저가 회원인지 판단하고 비밀번호가 일치한지를 확인하는 등의 로직이 구현된다.
- 역할 : Business Logic, Validation, Authorisation
1.3 Persistence layer
- 데이터베이스와 직접 연결된 로직이다. CRUD를 실제로 처리하는 로직이 구현된다.
- 역할 : Storage Logic
2. Layered Pattern의 특징
1. 단방향 의존성 : 하위 레이어는 상위 레이어가 담당하는 일을 알 필요가 없다. 하위 레이어는 자신을 이용할 수 있도록 상위레이어에게 모듈을 제공하고, 접근 가능하게 한다. 상위 레이어로부터 하위 레이어로만 '요청'하는 형태이다. 따라서, 한 단계를 건너뛴 요청은 원칙상 용납되지 않는다.
2. 관심의 분리(Seperation of concerns) : 각 레이어는 자신의 역할만 담당한다.
이러한 특성 때문에 레이어드 아키텍쳐 패턴으로 로직을 구현하면 각 레이어가 독립적이고 역할이 분명하기 때문에 코드의 확장성과 재사용성, 가독성, 유지보수 가능성, 테스트 가능성이 향상된다.
'Server' 카테고리의 다른 글
HTTP 상태코드 정리 (0) 2022.12.23 REST API (path parameter, query parameter) (0) 2022.11.20 API METHOD PATCH vs PUT (0) 2022.11.15 [생활코딩] Home Server (0) 2022.10.01