레이어 아키텍처

bp.chys·2020년 5월 17일
0

Spring Framework

목록 보기
6/15

정의

  • 핵심 설계 목표 중 하나는 관심사의 분리(Separation of Concerns)이다.
  • 레이어 아키텍처를 통해 관심사를 분리할 수 있다.
  • 또한, 단위테스트가 단순해지고, 다음 레이어에 대한 의존성을 모킹하여 완전히 테스트할 수 있다.
  • 각 레이어마다 다른 스프링 컨텍스트를 사용하는 것이 좋다.

대표적인 아키텍처

프레젠테이션 레이어

  • 가장 복잡한 계층이며, 매우 다양한 기술과 프레임워크의 조합을 가질 수 있는 계층이다.
  • 마이크로서비스에서 프레젠테이션 레이어는 REST 컨트롤러가 있는 곳이다.
  • 일반적으로 JSP, 템플릿 및 정적 콘텐츠 같은 뷰 관련 콘텐츠가 포함된다.
  • 서버의 앞단에서 클라이언트와 HTTP 프로토콜을 사용하여 요청을 받아들이고 서버 내부적으로는 서비스 레이어와 통신한다.

서비스 레이어

  • 비즈니스 레이어에 대한 퍼사드(facade) 역할을 한다.
  • 비즈니스 요구사항을 이해하고 프레젠테이션 레이어에 올바른 데이터를 제공한다.
  • 로직에서 에러가 발생하여 잘못된 데이터가 DB에 반영되는 것을 막기 위해서 Transaction 작업이 수행된다.

비즈니스 레이어 (도메인)

  • 모든 비즈니스 로직이 있는 곳이다.
  • 대부분의 비즈니스 로직은 도메인 모델에 위치하는 것이 좋다.
  • 비즈니스 레이어는 데이터 레이어와 통신해 데이터를 가져오고 그 위에 비즈니스 로직을 추가한다.

퍼시스턴스 레이어

  • 데이터를 검색하고 데이터베이스에 저장하는 역할을 한다.
  • DB connection은 상대적으로 비용이 큰 작업이기 때문에 효율적인 로직을 설계하는 것이 중요하다.
  • 일반적으로 JPA 매핑 또는 JDBC 코드를 포함한다.

참고자료

애플리케이션 아키텍쳐와 객체지향

profile
하루에 한걸음씩, 꾸준히

0개의 댓글