-
2023 - 07 - 12 레이어드 아키텍쳐 Layered Architecture PatternToday I Learned/TIL 07 2023. 7. 12. 19:58
오늘 배운 것 : 레이어드 아키텍쳐
1.컨트롤러 Controller
컨트롤러(Controller)란 클라이언트의 요청을 처리 한 후 서버에서 처리된 결과를 반환해주는 역할을 한다.
- 클라이언트의 요청(Request)을 수신한다.
- 요청(Request)에 들어온 데이터 및 내용을 검증한다.
- 서버에서 수행된 결과를 클라이언트에게 반환(Response)한다.
2. 서비스 Service
서비스 계층(Service Layer)이란 비즈니스 로직 계층(Business logic layer)이라고도 불린다. 아키텍처의 가장 핵심적인 비즈니스 로직을 수행하고 실제 사용자(클라이언트)가 원하는 요구사항을 구현하는 계층이다.
- 프레젠테이션 계층(Presentation Layer)과 데이터 엑세스 계층(Data Access Layer) 사이에서 중간 다리 역할을 하며 서로 다른 두 계층이 직접 통신하지 않게 만들어 준다.
- 서비스(Service)는 데이터가 필요할 때 저장소(Repository)에게 데이터를 요청한다.
- 어플리케이션의 규모가 커지면 커질수록 서비스의 역할 및 코드또한 점점 더 커지게 된다.
- 어플리케이션의 핵심적인 비즈니스 로직을 수행하여 클라이언트들의 요구사항을 반영하여 원하는 결과를 반환해주는 계층.
3. 저장소 Repository
저장소 계층(Repository Layer)이란 데이터 엑세스 계층(Data Access Layer)이라고도 불린다. 대표적으로 Database와 관련된 작업을 수행하는 계층이다.
- 모든 데이터가 Memory상에 존재하는 것처럼 가정해 데이터 접근과 관련된 세부 사항을 감춘다.
- 대표적인 저장소 계층의 메소드
- add() : 새 원소를 저장소에 추가
- get() : 이전에 추가한 원소를 저장소에서 가져옴
- 저장소 계층을 구현했을 때 데이터를 저장하는 방법을 더 쉽게 변경할 수 있고, 테스트 코드 작성시 가짜 저장소(Mock Repository) 를 제공하기가 더 쉬워진다.
- 어플리케이션의 다른 계층에서는 저장소의 세부 사항이 어떤 방식으로 구현되어 있더라도 영향을 받지 않는다.
- 객체 지향의 개념 중에서 추상화(Abstraction)와 관계가 있다.
- 저장소 계층은 데이터 저장소를 간단히 추상화한 것으로 이 패턴을 사용하면 모델 계층과 데이터 계층을 분리할 수 있다.
'Today I Learned > TIL 07' 카테고리의 다른 글
2023 - 07 - 14 쿼리문 Query - 데이터 생성, 수정, 삭제, 조회 (0) 2023.07.18 2023 - 07 - 13 쿼리문 Query 컬럼 (column, field) 생성, 추가, 수정, 삭제 (1) 2023.07.13 2023 - 07 - 11 테스트코드 (Test Code) (0) 2023.07.11 2023 - 07 - 10 객체지향 설계 5가지 원칙 SOLID (0) 2023.07.08 2023 - 07 - 07 Json Web Token (JWT)의 장단점, 토큰과 DB 사용자 인증, 쿠키, 세션 (면접 단골질문) (0) 2023.07.07