계층을 분리해서 관리하는 아키텍처 패턴이고, 현재 가장 흔하게 사용되고 있는 아키텍처 패턴 중 하나이다.
어떤 경우든 계층을 분리해서 유지하고, 각 계층이 자신의 바로 아래 계층에만 의존하게 만드는 것이 목표이다.
계층화의 핵심은 각 계층은 응집도(Cohesion)가 높으면서, 다른 계층과는 낮은 결합도(Coupling)를 가지고 있어야한다.
여기서 상위 계층은 하위 계층을 사용할 수 있지만, 하위 계층은 자신의 상위 계층에 누가 있는지 알 수 없고, 사용할 수 조차 없도록 구성해야한다.
3계층 아키텍처에서 구성되는 각각의 계층(Layer)는 아래와 같다.
Layered Architecture는 아래의 3가지의 처리과정을 이용해서 구현한다.
💡 짚고 넘어가기
- 3-Layered Architecture에서 아래의 플로우를 기반으로 로직 수행
- 클라이언트(Client)가 요청(Request)을 보낸다.
- 요청(Request)을 URL에 알맞은 컨트롤러(Controller)가 수신 받는다.
- 컨트롤러(Controller)는 넘어온 요청을 처리하기 위해 서비스(Service)를 호출한다.
- 서비스(Service)는 필요한 데이터를 가져오기위해 저장소(Repository)에게 데이터를 요청한다.
- 서비스(Service)는 저장소(Repository)에서 가져온 데이터를 가공하여 컨트롤러(Controller)에게 데이터를 넘긴다.
- 컨트롤러(Controller)는 서비스(Service)의 결과물(Response)을 클라이언트(Client)에게 전달해준다.