카테고리 없음

스프링 레이어드 아키텍처

elog 2025. 5. 13. 02:55

레이어드 아키텍처(Layered Architecture)

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

 

프레젠테이션 계층(Presentaion Layer)

  • 애플리케이션의 최상단 계층
  • 사용자에게서 데이터를 입력받거나 데이터 결과를 웹 서버에 전달하여 사용자에게 보여주는 계층

서비스/비즈니스 계층(Service/Business Layer)

  • 클라이언트에서 요청한 데이터를 가져오거나 변경하려고 데이터 접근 계층 계층을 호출하며, 프레젠테이션 계층과 데이터 접근 계층 사이를 연결하는 역할을 한다.
  • DDD(Domain-Driven design) 기반의 아키텍처에서는 비즈니스 로직에 도메인이 포함되기도 하고, 별도로 도메인 계층을 두기도 한다.

데이터 접근/퍼시스턴스 계층(Data Access/Persistence Layer)

  • 데이터베이스나 파일에 접근하여 데이터를 처리한다.

 

레이어드 아키텍처 특징

  • 각 레이어는 가장 가까운 하위 레이어의 의존성을 주입받는다.
  • 각 레이어는 관심사에 따라 묶여 있으며, 다른 레이어의 역할을 침범하지 않는다.
    • 각 컴포넌트의 역할이 명확하므로 코드의 가독성과 기능 구현에 유리하다.
    • 코드의 확장성도 좋아진다.
  • 각 레이어가 독립적으로 작성되면 다른 레이어와의 의존성을 낮춰 단위 테스트에 용이하다.

 

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

프레젠테이션 계층
(Presentaion Layer)
클라이언트로부터 데이터와 함께 요청을 받고 처리 결과를 응답으로 전달하는 역할
서비스/비즈니스 계층
(Service/Business Layer)
핵심 비즈니스 로직을 구현하는 영역
트랜잭션 처리나 유효성 검사 등의 작업도 수행한다.
데이터 접근/퍼시스턴스 계층
(Data Access/Persistence Layer)
데이터베이스에 접근해야 하는 작업을 수행한다.
Spring Data JPA에서는 DAO 역할을 리포지토리가 수행하기 때문에 리포지토리로 대체할 수 있다.

 

구현과정

도메인 객체 > 데이터 접근 계층 > 서비스 계층 > 프레젠테이션 계층(컨트롤러->뷰)