본문 바로가기

Programming/Spring

[Spring] Spring 웹 계층

반응형

Web Layer
  • 웹 어플리케이션의 최상위에 있다. Controller, JSP/Freemaker 등의 뷰 템플릿 영역이다. 사용자의 요청(input)을 받고 요청에 따른 정확한 응답(output)을 전달한다.
  • 외부 요청을 처리하고, 올바른 응답을 사용자에게 반환하는 것에 대한 전반적인 영역을 말한다.
  • Web Layer는 웹 어플리케이션의 최전방에 있기 때문에 다른 레이어에서 발생한 예외 처리, 인증 관리 및 권한 없는 사용자 인가 거부 등을 통해 해당 웹 어플리케이션에 대한 보안 위협을 방지할 수 있다.

 

Service Layer
  • @Service, @Transactional에 사용되는 서비스 영역.
  • 트랜잭션과 도메인 간의 순서만 보장하는 역할 수행.
  • 트랜잭션에 대한 경계(구분선) 역할을 하고 어플리케이션과 인프라 서비스를 포함한다. 인프라 서비스의 경우 파일 시스템, 데이터베이스, 이메일 서비스와 같은 외부 리소스와 통신하는 plumbing code를 포함한다.

 

Repository Layer
  • Database와 같이 데이터 저장소에 접근하는 영역.
  • 일반적으로 Dao(Data Access Object) 영역이다.

 

DTOs
  •  DTO(Data Transfer Object)는 계층 간에 데이터 교환을 위한 객체를 말하는데, DTOs는 이들의 영역을 이야기한다.

 

Domain Model
  • 도메인은 소프트웨어를 개발하는 대상 영역. 배달앱을 만든다면 식당에 주문 콜을 하고, 주문을 받고, 요금을 지불하는 등의 전 과정이 도메인이 된다. 
  • 도메인이라 불리는 개발 대상을 모든 사람이 동일한 관점에서 이해할 수 있고 공유할 수 있도록 단순화시킨 것을 도메인 모델이라고 한다.
  • @Entity가 사용된 영역 역시 도메인 모델이라고 할 수 있지만, 무조건 DB와 관계가 있어야 하는 것은 아니다.
  • VO처럼 값 객체들도 이 영역에 해당된다.

 

총 다섯 가지 레이어에서 비즈니스 로직(핵심 기능)을 담당해야 할 곳은 Domain이다.

 


참고

https://www.petrikainulainen.net/software-development/design/understanding-spring-web-application-architecture-the-classic-way/

 

Understanding Spring Web Application Architecture: The Classic Way

Understanding Spring Web Application Architecture: The Classic Way Every developer must understand two things: Architecture design is necessary. Fancy architecture diagrams don’t describe the real architecture of an application. The real architecture is

www.petrikainulainen.net

 

반응형