[Spring] 레이어드 아키텍처

매일 꾸준하게·2024년 10월 17일

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


레이어드 아키텍처(Layered Architecture)는 애플리케이션을 계층으로 나누어 각 계층이 특정 역활을 담당하도록 설계하는 방식을 의미한다.

유지보수성, 확장성을 높이고 각 레이어디마다 책임을 분리해 코드의 재사용성과 테스트 용이성을 높인다.

특히, Spring 프레임워크를 사용할 때 적용하는 계층 구조는 아래와 같다.

1. Presentation Layer (프레젠테이션 계층)

  • 사용자 인터페이스를 담당하며, 보통 웹 애플리케이션의 경우 controller가 이 역활을 한다.

2. Service Layer (서비스 계층)

  • 비즈니스 로직을 처리하는 계층, 일반적으로 Service 클래스가 이 계층에 위치, 데이터를 처리하고 트랜잭션을 관리한다.
  • 프레젠테이션 계층에서 받은 요청을 처리하고 필요한 비즈니스 로직을 수행한 뒤 데이터를 반환하거나 데이터 액세스 계층을 호출한다.

3. Repository Layer (영속성, DAO 계층)

  • 데이터베이스와의 상호작용을 담당하는 계층
  • Repository or DAO(DATA Access Object)가 이 계층에 위치한다.
  • 데이터베이에 접근해 데이터를 저장하거나 조회하는 역활을 한다.

4. Domain Layer (도메인 계층)

  • 비즈니스 도메인에 대한 객체(엔티티)를 정의.
  • 도메인 모델이라고 불리며, 애플리케이션의 비즈니스 규칙을 표현하는 클래스들이 위치한다.

spring layered architecture

레이어드 아키텍처는 각 계층 간의 의존성을 명확하게 하여, 계층의 변경이 다른 계층에 최소한의 영향을 미치도록 설계한다.
예를 들어, 서비스 계층은 영속성 계층을 통해 데이터 베이스와 상호작용하고, 프레젠테이션 계층은 서비스 계층을 통해 비즈니스 로직을 실행한다.

profile
현직 BackEnd Dev with Spring

0개의 댓글