본문 바로가기
Architecture

3-layer Architecture란?

by shinbian11 2022. 10. 3.

FE - BE (controller - service & entity.service - model) 의 구조

 

 

3 Layer Architecture 구조는 아래와 같이 나눠지며, 각 layer마다 주요 역할이 존재한다.

 

  • Presentation & Controller layer 역할 : Request parameter의 유효성 처리 / Service layer 호출
  • Business layer 역할 : 핵심적인 비즈니스 로직 / 대부분의 주요 코드들이 위치 / DB에 접근하는 Model layer 호출
  • Persistence layer 역할 : DB에 접근하여 데이터를 조작 / 데이터에 영속성(Persistence)을 부여하는 계층

 


 

예시) 회원가입을 하는 상황이라면?

 

Front-End

  1. 유저가 회원가입에 필요한 요소들(이메일, 비밀번호, 이름, 전화번호 등)을 회원가입 창에서 입력한다.
  2. BE에 /signup 이라는 endpoint의 API를 호출하며, 이 입력 데이터들을 인자로 전달한다. 

 

Back-End

 

Controller layer

 

  • /signup이라는 endpoint의 API 호출을 받는 곳에서 이메일, 비밀번호, 이름, 전화번호의 정보를 매개변수로 받는다.
  • 입력한 정보들의 유효성을 검사한다.
    • 이메일의 형식(xxxx@xxx.com)을 지켰는지
    • 비밀번호의 형식(영문, 특수기호 포함 8 ~ 16글자)을 지켰는지
    • 기타 형식(빈 값은 없는지 등)을 지켰는지
  • 유효성 검사에 통과했을 시, Service layer에 정보들을 인수로 담아 호출한다.

 

Service layer

 

  • 유저 데이터베이스에 입력받은 이메일이 존재하는지 확인 (존재하면 회원가입 불가)
  • Entity.service layer에 정보들을 전달하며 함수 호출

 

Entity.Service layer (Entity의 CRUD 작업을 담당하는 layer)

 

  • Model layer에 정보들을 전달하며 함수 호출 (유저를 생성하는 기능을 담당하는, 데이터베이스에 직접 접근하여 데이터를 저장하는 함수)

 

Model layer

 

  • 받은 유저 정보들을 데이터베이스에 저장

 


Controller와 Service의 의존성이 낮다?

 

  • 각자의 업무가 섞이지 않고, 각자의 Layer에서 잘 분리하여 처리한다는 의미!
    • Controller Layer에서는 Request parameter의 유효성 검사와 Service layer를 호출하는 역할(건물의 1층 로비 안내원의 역할)을,
    • Service Layer에서는 비즈니스 로직의 처리(회사 임직원들의 역할)를 잘 수행해내는 것!

 

Entity.service 의 역할

 

  • Model Layer에서 예측하기 어려운 응답값이나 예외처리들을 핸들링하는 부분
  • Entity를 DTO로 변경하는 부분 (Service에서 Controller로 반환하는 값은 DTO를 이용하기 때문에)
  • Entity의 CRUD 작업을 처리하는 부분