계층을 분리해서 관리하는 아키텍처 패턴이고, 현재 가장 흔하게 사용되고 있는 아키텍처 패턴
어떤 경우든 계층을 분리해서 유지하고, 각 계층이 자신의 바로 아래 계층에만 의존하게 만드는 것이 목표
계층형 아키텍처 패턴의 장점
상위 계층은 하위 계층을 사용할 수 있지만, 하위 계층은 자신의 상위 계층에 누가 있는지 알 수 없고, 사용할 수 조차 없도록 구성해야 함
=> 예를 들어 데이터 엑세스 계층 (Data Access Layer)은 비즈니스 로직 계층 (Business Logic Layer)에 어떤 코드들이 있는지 알 수 조차 없고, 사용하면 안된다.
일반적으로 계층형 아키텍처 패턴의 경우 규모가 작은 어플리케이션의 경우 3개, 크고 복잡한 경우는 그 이상의 계층으로 구성됨
저희가 알아볼 아키텍처 패턴은 **3계층 아키텍처(3-Layered Architecture)**
입니다.
3계층 아키텍처에서 구성되는 각각의 계층(Layer)는 아래와 같습니다.
3-Layered Architecture 처리과정을 이용해서 구현
3-Layered Architecture에서는 아래의 플로우를 기반으로 로직이 수행
클라이언트(Client)가 요청(Request)을 보냅니다.
요청(Request)을 URL에 알맞은 컨트롤러(Controller)가 수신 받습니다.
컨트롤러(Controller)는 넘어온 요청을 처리하기 위해 서비스(Service)를 호출합니다.
서비스(Service)는 필요한 데이터를 가져오기위해 저장소(Repository)에게 데이터를 요청합니다.
서비스(Service)는 저장소(Repository)에서 가져온 데이터를 가공하여 컨트롤러(Controller)에게 데이터를 넘깁니다.
컨트롤러(Controller)는 서비스(Service)의 결과물(Response)을 클라이언트(Client)에게 전달해줍니다.
- 클라이언트의 요청을 받음
- 요청에 대한 처리는 서비스에게 전담
- 클라이언트에게 응답