상세 컨텐츠

본문 제목

SPRING 레이어드 아키텍처

개발언어/Java

by A_D 2024. 10. 23. 09:00

본문

반응형

 

Spring 애플리케이션을 설계할 때 가장 효율적이고 보편적으로 사용되는 레이어드 아키텍처는 보통 4계층 구조로 나뉩니다. 이 레이어드 아키텍처는 애플리케이션의 구조를 명확하게 하고, 각 계층의 역할과 책임을 분리하여 유지보수성과 확장성을 높이는 데 기여합니다.

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

  • 역할: 사용자의 요청을 받고 응답을 처리합니다. 주로 REST API 또는 MVC 패턴을 사용하는 웹 컨트롤러들이 위치하는 계층입니다.
  • 구현: Spring MVC, Spring WebFlux 등을 사용하여 구현할 수 있습니다. 이 계층에서는 주로 컨트롤러(Controller) 클래스들이 존재하며, 사용자의 요청을 받아 필요한 데이터를 서비스 계층에 요청하고, 받은 결과를 포맷팅하여 응답합니다.


2. Service Layer (서비스 계층)

  • 역할: 비즈니스 로직을 처리하는 계층입니다. Presentation Layer로부터 요청을 받아 도메인 객체를 사용하여 비즈니스 규칙을 적용하고, 필요에 따라 데이터를 처리하거나 다른 계층에 요청을 전달합니다.
  • 구현: 이 계층은 서비스 클래스(Service)로 구성되며, 일반적으로 인터페이스와 그 구현체로 나뉩니다. Spring의 @Service 애너테이션을 사용하여 구현할 수 있습니다.


3. Repository Layer (저장소 계층)

  • 역할: 데이터베이스와의 상호작용을 담당하는 계층입니다. 데이터베이스에서 데이터를 조회하거나, 저장, 수정, 삭제 등의 작업을 수행합니다.
  • 구현: Spring Data JPA, MyBatis, Hibernate 등을 사용하여 구현할 수 있습니다. 이 계층에서는 Repository 인터페이스와 그것을 구현하는 클래스들이 주로 존재합니다. Spring Data JPA의 경우, CrudRepository 또는 JpaRepository 인터페이스를 상속받아 사용합니다.


4. Domain Layer (도메인 계층)

  • 역할: 애플리케이션의 핵심 비즈니스 로직을 담고 있는 도메인 객체가 위치하는 계층입니다. 이 계층은 주로 엔티티(Entity), 값 객체(Value Object), 집합체(Aggregate) 등으로 구성됩니다.
  • 구현: 이 계층에서는 비즈니스의 핵심 규칙과 데이터 구조를 반영하는 클래스들이 존재합니다. Spring에서는 보통 @Entity 애너테이션을 사용하여 JPA 엔티티로 구현합니다.


5. Optional Layer: Infrastructure Layer (인프라 계층)

  • 역할: 특정 기술 스택이나 프레임워크에 종속적인 기능을 처리하는 계층입니다. 예를 들어, 메일 서비스, 외부 API 호출, 메시징 서비스 등과 같은 기술적인 구현이 필요할 때 사용됩니다.
  • 구현: 이 계층에서는 Spring의 다양한 모듈(Spring Cloud, Spring Batch 등)을 사용할 수 있으며, 기술 스택에 따라 다양한 구현체를 포함할 수 있습니다.


추가적인 고려사항

  • DTO (Data Transfer Object): Service Layer와 Presentation Layer 간의 데이터 교환 시에 사용됩니다. 일반적으로 서비스 계층의 결과물을 표현하기 위해 사용되며, 도메인 모델을 외부에 노출하지 않기 위해 사용됩니다.
  • AOP (Aspect-Oriented Programming): 공통 관심사(예: 로깅, 트랜잭션 관리, 보안 등)를 분리하기 위해 AOP를 사용하여 각 계층의 코드에 영향을 미치지 않고 공통 기능을 구현할 수 있습니다.


이와 같은 레이어드 아키텍처는 각 계층의 역할을 명확히 구분하여 모듈성을 높이고, 유지보수성과 확장성을 향상시킬 . 수있습니다. 또 Spring의 다양한 기능과 모듈을 활용하여 각 계층을 효율적으로 구현할 수 있습니다.

 

반응형

'개발언어 > Java' 카테고리의 다른 글

관련글 더보기

댓글 영역