개요
- 레이어 (Layer) = 계층
- 가장 흔히 사용되는 패턴으로, Multi-Tier 아키텍처 패턴이라고도 한다.
- 시스템을 계층화하고 하위 레이어가 제공하는 기능을 상위 레이어가 이용함으로써 각 레이어의 구조를 단순화한다는 발상에서 시작
- 코드를 논리적인 부분 혹은 역할에 따라 독립된 모듈로 나누어 구성
- 각 모듈이 서로의 의존도에 따라 층층히 쌓듯이 연결되어 전체의 시스템을 구현하는 구조 (레이어 형태)
- 각 레이어는 해당 레이어가 의존하는 직접적인 하위 레이어만 알면 됨
장점
- 하나의 모듈을 업데이트 할 때 다른 모듈이 받는 영향을 최소화할 수 있다.
- 각 레이어의 책임을 명확히 할 수 있다.
- 관심사의 분리
- 각 개별 구성 요소의 단일 책임을 보장 (종속성 저하)
- 개발의 용이성
- 잘 알려져 있고, 구현하기 어려운 패턴이 아님
- 테스트가 쉬움
- 모든 Layer가 개별적으로 단위 테스트로 커버될 수 있고 특정 Layer에 속한 구성요소도 분리되어 있어 개별적 테스트가 가능
- 격리
- 각 Layer가 다른 Layer와 독립적이어서 변경 사항이 다른 Layer로 영향을 끼치지 않는다.
단점
- 확장성
- 애플리케이션 복잡도가 증가하고, 프로젝트에 더 많은 기능을 추가해야 하는 경우 확장 비용이 크다 (모놀리식 구현 경향)
- 상호 의존성
- 하나의 계층이 데이터 수신을 위해 상위 Layer에 의존하기에 상호 의존성 존재
- 배포
- 특정 Layer에 대한 변경은 전체 시스템을 재배포해야 함을 의미
- 큰 애플리케이션의 경우 더 문제
- 성능
- 비즈니스 요청을 이행하기 위해 아키텍처의 여러 레이어를 거쳐야 하는 비효율성
- 고성능 애플리케이션에 적합하지 않음
- 병렬처리가 불가능
레이어 구조
- 3계층 Layered Pattern
- Presentation Layer
- 해당 시스템을 사용하는 사용자 혹은 클라이언트 시스템과 직접적으로 연결
- 백엔드 API에서 엔드포인트에 해당
- API의 엔드포인트들을 정의하고, 전송된 HTTP Repuese를 읽어 들이는 로직 구현
- 실제 시스템이 구현하는 비즈니스 로직은 다음 레이어로 넘김 (본인의 역할만 수행)
- 응용프로그램에서 사용자와 상호작용하는 인터페이스(UI)로 데이터를 표시
- 서버와의 통신을 처리
- Application Layer
- 사용자와 상호작용하면서 수집된 데이터를 처리
- API를 통해 Data Layer와 통신
- Data Layer
- Application Layer에서 처리된 데이터를 저장하고 관리
- Presentation Layer
- 4계층 Layered Pattern
- Application Layer를 Business/Persistence Layer로 세분화
- Presentation Layer
- Business Layer (= Service Layer)
- 실제 시스템이 구현해야 하는 비즈니스 로직 구현
- 회사의 비즈니스 운영하기 위해 필요한 로직
- 핵심 로직 구현, 데이터 적합성 검증 (비밀번호 Validation 등)
- Persistence Layer
- 데이터베이스와 관련된 로직을 구현
- Business Layer에서 필요한 데이터 생성, 수정, 읽기 등을 처리
- 실제로 DB에서 데이터를 저장, 수정, 읽기를 하는 역할
- Database Layer
레이어 사용 규칙
- 모듈은 반드시 하나의 레이어에만 존재해야 한다.
- 상위 레이어는 하위 레이어를 이용 가능해야 한다.
- 의존 방향은 한 방향으로 흘러야 한다. (상→하)
MVC 패턴과의 차이점
- Layered 패턴은 관심사를 분리해서 Layer들로 나누고, Layer 내부에 관련되거나 유사한 구성 요소들ㅇ르 배치함으로써 Layer간의 종속성을 저하시켜 격리를 통한 이점을 만들어내는 아키텍처이다.
- Layer의 내부 구성 요소가 되는 것이 MVC 패턴이다.
- Model
- 데이터와 관련된 부분
- 데이터와 비즈니스 로직을 관리
- = 데이터를 처리하는 Business Layer
- View
- 사용자에게 보여지는 부분
- = 사용자와의 상호작용을 통해 정보를 표시하고 가져오는 Presentation Layer
- Controller
- 사용자의 입력된 Domain을 DTO로 변환, 처리
- Model과 View를 이어주는 역할
- = Presentation Layer
References
[패턴] 자주 사용되는 아키텍처패턴 4가지
1. 레이어 패턴(Layer Pattern) 가장 흔히 사용되는 패턴으로 시스템을 계층화하고 하위 레이어가 제공하는 기능을 상위 레이어가 이용함으로써 각 레이어의 구조를 단순화한다는 발상에서 시작된
blog.tetedo.com
[Architecture] Layered Architecture(feat. MVC 패턴)
[Architecture] Layered Architecture(feat. MVC 패턴)
❓Software Architecture소프트웨어 아키텍처는 모든 소프트웨어 시스템의 기본 구조를 말하며 시스템이 제대로 기능하고 작동하도록 하는 모든 측면을 말한다.소프트웨어 시스템에서의 아키텍처는
gnuoyus.tistory.com
[Architecture] Layered Architecture(feat. MVC 패턴)
[Architecture] Layered Architecture(feat. MVC 패턴)
❓Software Architecture소프트웨어 아키텍처는 모든 소프트웨어 시스템의 기본 구조를 말하며 시스템이 제대로 기능하고 작동하도록 하는 모든 측면을 말한다.소프트웨어 시스템에서의 아키텍처는
gnuoyus.tistory.com
Layered Pattern
코드의 구조를 구상할 때 고려해야할 점은 여러가지다. 또, 코드 구조의 하나하나가 모두 중요하기 때문에, 매번 좋은 코드의 구조를 생각해 내기란 쉽지 않습니다. 다행히도 “코드의 구조를
velog.io
'개발 이야기 (Dev Story)' 카테고리의 다른 글
"가상 면접 사례로 배우는 대규모 시스템 설계 기초"를 읽고 - 6장 (0) | 2024.05.11 |
---|---|
"가상 면접 사례로 배우는 대규모 시스템 설계 기초"를 읽고 - 4장 (0) | 2024.05.11 |
"가상 면접 사례로 배우는 대규모 시스템 설계 기초"를 읽고 - 3장 (0) | 2024.05.10 |
"가상 면접 사례로 배우는 대규모 시스템 설계 기초"를 읽고 - 1장 (0) | 2024.05.10 |
"그림으로 공부하는 마이크로서비스 구조" 을 읽고 (5장 - 끝) (2) | 2024.01.24 |