[스프링부트 핵심가이드] 개발에 앞서 알면 좋은 기초 지식 - 레이어드 아키텍처
by 볼빵빵오춘기레이어드 아키텍처(Layered Architecture)
- 애플리케이션의 컴포넌트를 유사 관심사를 기준으로 레이어 묶어 수평적으로 구성한 구조를 의미한다.
- 여러 방면에서 쓰이는개념이며, 어떻게 설계하느냐에 따라 용어와 계층 수가 달라진다.
- 일반적으로는 3 or 4계층 구성을의미한다.
- 차이는 인프라(데이터 베이스) 레이어의 추가 여부로 결정된다.
프리젠테이션 계층
- 애플리케이션의 최상단 계층으로, 클라이언트의 요청을 해석하고 응답하는 역할이다.
- UI나 API를 제공한다.
- 별도의 비즈니스 로직을 포함하고 있지 않으므로 비즈니스 계층으로 요청을 위임하고 받은 결과를 응답하는 역할만 수행한다.
비즈니스 계층
- 애플리케이션이 제공하는 기능을 정의하고 세부 작업을 수행하는 도메인 객체를통해 업무를 위임하는역할을 수행한다.
- DDD(Domain-Driven Design) 기반의 아키텍처에서는 비즈니스 로직에 도메인이 포함되기도 하고 별도로 도메인 계층을 두기도 한다.
데이터 접근 계층
- DB에 접근하는 일련의 작업을수행한다.
레이어드 아키텍처 기반 설계의 특징
- 각 레이어는 가장 가까운 하위 레이어의 의존성주입을 받는다.
- 각 레이어는 관심사에 따라 묶여 있으며, 다른 레이어의 역할을 침범하지 않는다.
- 각 컴포넌트의 역할이 명확하므로 코드의 가독성과 기능 구현에 유리하다.
- 코드의 확장성도 좋아진다.
- 각 레이어가 독립적으로 작성되면 다른 레이어와의 의존성을 낮춰 단위 테스트에 용이하다.
스프링의 레이어드 아키텍처
- View와 Controller는 프레젠테이션 계층 영역이며, Model은비즈니스와 접근 계층역역으로 구분할 수 있다.
- 스프링 MVC 모델로 레이어드 아키텍처를 구현하기 위해서는 역할의 세분화한다.
- 비즈니스 계층에 서비스를 배치해 엔티티와 같은 도메인 객체의 비즈니스로직을 조합하도록 하고 데이터 접근 계층에는 DAO(Spring Data JPA에서는 Repository)를 배치에 도메인을 관리한다.
※ 스프링 부트는 별도의 설정 없이 spring-boot-atarter-web의 의존성을 사용할 때는 기본적으로 스프링 MVC 구조를 띠게 된다.
일반적인 레이어드 아키텍처 vs 스프링의 레이어드 아키텍처
대체로 역할은 동일하다.
일반적인 레이어드 아키텍처 | 스프링의 레이어드 아키텍처 | |
프레젠테이션 계층 |
|
|
비즈니스 계층 |
|
|
데이터 접근 계층 |
|
|
'👩🏻💻 About 프로그래밍 > Spring, Spring boot' 카테고리의 다른 글
[디자인 패턴] - Abstract Factory (0) | 2025.03.25 |
---|---|
[스프링부트 핵심가이드] 개발에 앞서 알면 좋은 기초 지식 - 디자인 패턴 (0) | 2025.02.01 |
[스프링부트 핵심가이드] 개발에 앞서 알면 좋은 기초 지식 - 스프링 부트의 동작 방식 (0) | 2025.01.25 |
[스프링부트 핵심가이드] 개발에 앞서 알면 좋은 기초 지식 - 서버 간 통신 (0) | 2025.01.24 |
[스프링부트 핵심가이드] 스프링 부트란? (0) | 2025.01.24 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기