[Spring] 레이어드 아키텍처

WOOK JONG KIM·2022년 10월 25일
1
post-thumbnail
post-custom-banner

Layered Architecture

애플리케이션의 컴포넌트를 유사 관심사를 기준으로 레어이로 묶어 수평적으로 구성한 구조

보통 프레젠테이션 계층, 비즈니스 계층(서비스), 데이터 접근 계층(Repository)로 나뉨

프레젠테이션 계층

애플리케이션의 최상단 계층으로, 클라이언트의 요청을 해석하고 응답하는 역할

UI 나 API 제공

별도의 비즈니스 로직을 포함하고 있지 않으므로 비즈니스 계층으로 요청을 위임하고 받은 결과를 응답하는 역할만 수행

비즈니스 계층

애플리케이션이 제공하는 기능을 정의하고, 세부 작업을 수행하는 도메인 객체를 통해 업무를 위임하는 역할을 수행

도메인 기반 아키텍처에는 비즈니스 로직에 도메인이 포함되기도 하고, 별도로 도메인 계층을 두기도 함

데이터 접근 계층

데이터베이스에 접근하는 일련의 과정을 수행

특징

  1. 각 레이어는 가장 가까운 하위 레이어의 의존성을 주입받음

  2. 각 레이어는 관심사에 따라 묶여 있으며, 다른 레이어의 역할을 침범하지 않음
    -> 각 컴포넌트의 역할 이 명확하여, 가독성 및 기능 구현에 유리

  3. 각 레이어가 독립적으로 작성되면 다른 레이어와의 의존성을 낮춰 단위 테스트에 용이


스프링의 레이어드 아키텍처

Spring MVC에서 Model은 비즈니스 영역, View&Controller은 프레젠테이션 영역

-> 레이어드 아키텍처를 구현하기 위해 역할을 세분화 하였음

비즈니스 계층 계층에 서비스를 배치하여 엔티티와 같은 도메인 객체의 비즈니스 로직을 조합하게 함

데이터 접근 계층에는 DAO(Spring JPA에서는 Repository)를 배치해 도메인 관리

Presentation Layer

UI 계층이라고도 부르며, 클라이언트와의 접점이 됨

클라이언트로 부터 데이터와 함께 요청을 받고 처리 결과를 응답으로 전달하는 결과

Business Layer

Service 계층이라고도 하며, 핵심 비즈니스 로직을 구현하는 영역

트랜잭션 처리나 유효성 검사 등의 작업도 수행

Data Access Layer

데이터베이스에 접근해야 하는 작업을 수행


핵심

  • 레이어드 게층구조는 필요에 따라 조금씩 변형해 사용하며, 비즈니스 계층영역에서 로직을 어떻게 담당할지 결정하고 설계하는 것이 바람직
    -> 보통 도메인 계층에서 담당

  • JPA 사용 시 @Entity를 정의한 클래스가 도메인 객체가 되며, 여기서 로직을 설계하는 것이 좋음
    -> 서비스 레이어에서 로직을 담당하는 경우도 있으므로 잘 구분하여 설계

profile
Journey for Backend Developer
post-custom-banner

0개의 댓글