[Spring] 3계층 아키텍처(3-Tier Architecture)

koline·2024년 4월 30일

Spring

목록 보기
8/15

3계층 아키텍처


3계층 구조는 일반적으로 표현 계층 (Presentation Layer), 비즈니스 계층 (Application Layer/Business Logic Layer), 영속 계층 (Persistance Layer/Data Access Layer)의 3가지 계층으로 구성된 설계 방식을 뜻한다.



3-tier - MVC


흔히 3계층 구조와 스프링 MVC를 헷갈릴 수 있는데, 3계층 구조는 구조(아키텍처)이고 MVC는 디자인패턴 이라는점에서 차이가 있다.

여기서 3계층 구조는 각각 물리적으로 독립된 모듈로 개발하고 유지하는 구조로 각 계층은 비즈니스 계층을 통해 접촉 계층과 통신한다.

이와 달리 MVC 패턴은 물리적인 구분이 아닌 거대한 프로그램 개발을 더 효율적이게 만드는 문서화된 패턴이다.

즉, MVC 패턴은 3계층 구조로 이뤄진 스프링이라는 거대한 구조 안에서 서로 작용하는 방식이다.

이를 그림으로 표현하면 다음과 같다.

위 그림을 보면 알 수 있듯이 MVC 패턴에서 데이터는 비즈니스 계층에 속한 Model(Service)을 통해 ViewController가 소통하는 형태이다. 여기서 데이터 접근은 비즈니스 계층에 속한 Model이 직접 수행하지 않고 영속 계층에 속한 Repository에게 위임한다.




구조


표현 계층 (Presentation Layer)

화면에 보여주는 기술을 사용하는 영역으로Controller에서 사용자의 요청에 맞는 응답처리를 진행한다. HTML 엔진 (thymeleaf), HTML 등이 담당한다. Spring MVC 객체를 말하기도 하며, 프론트 컨트롤러 (DispatcherServlet), Controller, View가 포함된다.

서비스 계층, 데이터 엑세스 계층에서 발생하는 Exception을 처리한다.

@Controller/@RestController 어노테이션을 사용하여 작성된 Controller 클래스가 이 계층에 속한다.


비즈니스 계층 (Application Layer/Business Logic Layer)

영속 계층과 표현 계층의 중간다리 역할로 순수한 비즈니스 로직을 담고 있는 영역이다.

이 계층은 비즈니스 로직에 대한 처리만을 담당하며 표현 계층(Controller, View)의 어떠한 정보도 포함하지 않는다.

일반적으로 이 비즈니스 계층에 있는 객체들은 Service라는 용어를 많이 사용하며 인터페이스로 Controller에게 오픈되며, 구현체(주로 ServiceImpl로 이름짓는다)에서 구현된다.

@Service 어노테이션을 사용하여 작성된 Service 구현 클래스가 이 계층에 속한다. 


영속 계층 (Persistance Layer/Data Access Layer)

데이터를 어떤 방식으로 보관하고 사용하는 가에 대한 설계가 들어가는 계층이다.

일반적으로 DBMS를 많이 이용해 데이터를 저장하고 읽고 쓰는(CRUD) 계층이다. 경우에 따라서는 네트워크 호출이나 원격 호출 등의 기술이 접목될 수 있다.

DAO 인터페이스, JPARepository@Repository 어노테이션을 사용하여 작성된 구현 클래스가 이 계층에 속한다.

profile
개발공부를해보자

0개의 댓글