오늘은 레이어드 아키텍처 패턴(Layered Architecture)에 대해서 포스팅하려고 한다!
레이어드 아키텍처(Layered Architecture)
Layered Architecture을 직역하면 층이 이루어진 구성? 이라고 할 수 있을 것이다!
레이어드 아키텍처 : 코드를 논리적인 부분 혹은 역할에 따라 독립된 모듈로 나누어서 구성하는 패턴
: 각 모듈이 서로의 의존도에 따라 층층히 쌓듯이 연결되어서 전체의 시스템을 구현하는 구조
레이어드 아키텍처는 Multi-tier 아키텍처 패턴이라고도 하며 백엔드 API 패턴 중 하나이다!
레이어드 아키텍처는 보통 3개의 레이어 + DB 가 존재한다.
Presentation Layer(프레젠테이션 계층) : 유저 인터페이스
: 시스템을 사용하는 사용자 혹은 클라이언트 시스템과 직접적으로 연결되는 부분
: ex) 웹사이트 - UI / 백엔드 API - 엔드포인트
: API의 엔드포인트들을 정의하고 전송된 HTTP 요청을 읽어들이는 로직 구현
: 역할 - 엔드포인트, 인증, JSON 전송
Business Layer(비즈니스 계층) : 비즈니스(실제 시스템이 구현해야 하는) 로직을 구현하는 부분
: Presentation Layer에서 전송된 요청을 읽어들여 요청에 맞게 동작하는 로직 구현
: ex) 회원가입 요청 시 필수적인 요소들이 모두 포함되어 있지 않으면 거부
: 역할 - 비즈니스 로직, 검증, 권한 부여
Persistence Layer(지속성 계층) : 데이터베이스와 관련된 로직을 구현하는 부분
: Business Layer에 필요한 데이터를 CRUD를 하여 실제로 DB에서의 CRUD 역할
: 역할 - 저장 논리
레이어드 아키텍처의 핵심 요소는 두 가지(단방향 의존성, 관심사 분리)가 있다.
단방향 의존성 : 각각의 레이어는 자기보다 하위에 있는 레이어에만 의존
: ex) Presentation Layer -> 의존 -> Business Layer
: ex) Business Layer -> 의존 -> Persistence Layer
: 상위에 있는 레이어에게는 의존 X
관심사 분리 : 각 레이어의 역할이 명확
: ex) Persistation Layer은 비즈니스 로직이 전혀 구현되어 있지 않음
이런 핵심 요소로 각 레이어가 독립적이고 역할이 분명하므로 코드의 확장성이 높아진다.
또한 코드의 구조를 파악하기 쉬우며 재사용 가능성이 높아진다.
레이어를 테스트하는 테스트 코드의 작성도 훨씬 수월해진다.
마치며... 이전에 수강했던 Spring Boot와 비교해보면 Presentation Layer는 사용자 UI, Business Layer는 Spring의 서비스 계층, Persistence Layer는 리포지토리가 아닐까라고 생각이 들었다
따라서 Spring Boot에서 기본적으로 가지고 있는 특징이 레이어드 아키텍처 패턴이라고 이해되었다
저번 시간의 의존성 주입과 레이어드 아키텍처 패턴 등 용어를 알아가는 것도 발전해나간다는 것 아닐까 싶다
다음 포스팅은 Web Server vs. WSA를 포스팅이다!
'Spring Boot(스프링 부트)' 카테고리의 다른 글
Spring Boot(스프링 부트) > 스프링 DB 접근 기술 (2) | 2024.12.02 |
---|---|
Spring Boot(스프링 부트) > 스프링 빈과 의존관계 (1) | 2024.12.02 |
Spring Boot(스프링 부트) > 회원 관리 예제 (3) | 2024.11.17 |
URI vs. URL (1) | 2024.11.10 |
Spring Boot(스프링 부트) > 정적 컨텐츠 vs. MVC vs. API (4) | 2024.11.09 |