Study/Spring

[Spring Framework] 티어와 레이어

AC 2019. 8. 3. 21:46

 

웹 애플리케이션의 아키텍처는 크게 티어라고 하는 물리층과 레이어라고 하는 논리층으로 나뉜다. 티어와 레이어 양쪽 다 한국어에서는 층이니 중의해야 한다. (사람에 따라서는 티어를 단, 레이어를 층으로 구별하기도 하지만, 보통 양쪽 다 층으로 해석한다.)

티어는 클라이언트 층, 중간층, EIS(enterprise Information System)층의 3개 층이 기본이다. 기본적으로 웹 애플리케이션에서 고려할 것은 중간 층이지만, 현재의 웹 애플리케이션에서는 클라이언트 층이 데스크톱 컴퓨터이고 중간층에 있는 웹 애플리케이션에서 웹 브라우저에 HTML을 보내는 것이라는 설명만으로는 충분하지 않는다. 예를 들어, 클라이언트가 스마트폰이고 스마트폰 앱이 웹 애플리케이션의 기능 일부를 구현하는 경우도 있다. 그럴 때는 레이어의 일부가 클라이언트에 있다고 생각하는 것이 좋다.

 

레이어는 앞에서 설명한 것처럼 클라이언트 층에도 일부 있지만, 기본적으로 중간층에 있는 웹 애플리케이션을 논리적으로 분류한 것이다. 여기서는 레이어를 약한 결합으로 유지해서 변경이나 기능 추가에 강한 웹 애플리케이션을 만드는 레이어의 기본 개념을 소개한다.

레이어는 원래 아키텍처 패턴 중 하나이며, 서로 인접한 레이어끼리만 단방향 엑세스를 할 수 있다. 일반적인 레이어는 다음 3개 층으로 나누고 각각 다른 역할을 부여한다.

 

● 프레젠테이션 층
사용자 인터페이스(UI)와 컨트롤러를 제공한다.
이 층에는 클래스 이름에 Controller나 Action이 붙은 클래스가 배치된다.

● 비즈니스 로직 층
비즈니스 로직을 제공한다. 이 층에는 이름 끝에 Service가 붙은 유스 케이스를 제어하는 클래스나 회사(Company)나 종업원(Empioyee), 주문(Order) 등 업무 대상의 이름이 붙은 클래스가 배치된다.

● 데이터 엑세스 층
데이터 베이스 엑세스를 추상화한다. 이 층에는 클래스 이름 끝에 Dao(Data Access Object)가 붙은 클래스가 배치된다.

또한, 컨트롤러나 비즈니스 로직 등의 용어는 여러 가지로 해석되거나 다른 이름이 붙기도 한다. 용어가 통일되지 않으면 엔지니어 사이의 의사소통을 방해하므로 원활한 의사소통을 위해서는 용어를 통일해야 한다. 아래의 표를 참고하자.


 

이 밖에도 웹 애플리케이션의 레이어를 분류하는 방법은 다양하지만, 이름이 다른 정도일 뿐 기본적인 사고방식은 같으므로 프로젝트나 이용 기술에 따라 구분해 사용하는 것이 좋다. 단, 레이어를 많이 나눈다고 좋은 앱 애플리케이션이 되는 것은 아니다.

 

현재 웹 애플리케이션 레이어라고 부르는 것에는 인접하는 레이어에 대한 단방향 엑세스뿐만 아니라, 상호 의존을 하는 것도 있다. 이러한 것은 레이어가 아니다. 단지 화면 쪽이나 데이터베이스 쪽에 관련된 내용이다.
이러한 현상을 발견하면 리팩토링 하는 것이 좋다.

 

LIST