계층형 아키텍쳐 패턴(Layered Architecture Pattern)

아키텍처 패턴은 각각의 시스템들과 그 역할이 정의되어 있고,
여러 시스템 사이의 관계와 규칙 등을 정의해둔 패턴을 의미한다!

계층형 아키텍처 패턴은 시스템을 여러 계층으로 분리하여 관리하는 아키텍처 패턴으로,
현재 가장 널리 채택되고 있는 아키텍처 패턴 중 하나이다!

  • 각 계층을 명확하게 분리해서 유지하고, 각 계층이 자신의 바로 아래 계층에만 의존하게 만드는 것이 목표

  • 일반적으로 규모가 작은 어플리케이션의 경우 3개의 계층, 크고 복잡한 경우는 그 이상의 계층으로 구성

장점

  • 관심사를 분리하여 현재 구현하려하는 코드명확하게 인지할 수 있음

  • 계층은 서로 독립적이며, 의존성이 낮아 모듈을 교체하더라도 코드 수정이 용이

  • 단위 테스트를 작성할 수 있어 테스트 코드를 조금 더 용이하게 구성할 수 있음

3계층 아키텍쳐(기본 이론)

Image

계층명 역할 및 설명
프레젠테이션 계층 (Presentation Layer) 사용자 인터페이스, 사용자와 상호작용하는 부분 (웹페이지, 앱 UI 등)
비즈니스 로직 계층 (Business Logic Layer) 애플리케이션 핵심 로직, 업무 규칙 처리, 계산, 의사 결정 등
데이터 엑세스 계층 (Data Access Layer) / 영속 계층 (Persistence Layer) 데이터베이스나 파일 시스템 등에서 데이터 저장, 조회, 수정 담당

3계층 아키텍쳐(구현 관점)

Image

계층명 역할 상세
Controller 클라이언트 요청을 받아 응답을 담당, 서비스 호출
Service 실제 비즈니스 로직 실행, 여러 트랜잭션 조합, 검증 등
Repository DB 접근 및 CRUD 작업, 데이터 관리
관계명 설명
Request 클라이언트 → 컨트롤러로 요청 전달
Response 컨트롤러 → 클라이언트로 응답 전달
Business Logic 컨트롤러에서 서비스 계층 쪽으로 비즈니스 로직 위임
Data Control 서비스가 저장소(Repository)와 데이터 조작 약속 수행

실행 순서

  1. 클라이언트(Client)가 어플리케이션에 요청(Request)

  2. 요청(Request)을 URL에 알맞은 컨트롤러(Controller)가 수신 받음

3️. 컨트롤러(Controller)요청처리하기 위해 서비스(Service)를 호출

4️. 서비스(Service)는 필요한 데이터를 가져오기 위해 저장소(Repository)에게 데이터를 요청

5️. 서비스(Service)저장소(Repository)에서 가져온 데이터를 가공하여 컨트롤러(Controller)에게 데이터를 전달

6️. 컨트롤러(Controller)서비스(Service)결과물(Response)클라이언트(Client)에게 전달해줌

한줄 평

  • 다른 아키텍쳐 패턴(MVC, MSA 등)을 이전에 배웠지만, 제일 기본적인 계층형 아키텍쳐를 정리해두지 않은게 안타까웟지만 해결되었다.