오늘은 레이어드 아키텍처 패턴에 대해 개념은 어렴풋이 알고 있지만, 제대로 정리해본 적이 없어 한번 정리해보았다.
서버는 새로운 데이터를 처리하는 부분
, 서비스 로직을 처리하는 부분
, 기존의 데이터를 이용하는 부분
으로 나눌 수 있다.
사용자와 상호작용 처리 계층. 스프링에서는 @Controller
어노테이션을 사용하여 표현.
CLI, HTTP요청, HTML처리 등을 담당. HTTP요청 처리 및 HTML 렌더링에 대해 알고있는 웹 계층
흔히 말하는 MVC(Model/View/Controller)도 여기 속한다.
서비스/시스템의 핵심 로직. 스프링에서는 @Service
어노테이션으로 표현
유효성 검사 및 계산을 포함하는 Business 논리 계층. 입력/저장된 데이터를 기반으로 계산
애플리케이션이 수행해야하는 도메인과 관련된 작업들을 담당.
Presentaition 계층에서 받은 데이터의 유효성(Validation) 검사. 어떤 Data Access를 선택할지 결정.
DAO 계층. 스프링에서는 @Repository
어노테이션으로 표현
Database / Message Queue / 외부 API와의 통신 등 처리
데이터베이스 or 원격서비스에서 영구 데이터를 관리하는 방법을 분류하는 데이터 접근 계층
스프링이 편한 이유? 단순반복 작업이 많은 Controller와 Repository쪽을 개발관점에서 매우 쉽고 편하게 처리해줘서 Service 레이어에 집중할 수 있게 해주기 때문.
자바문법과 스프링 문법이 묘하게 다른 부분이 있는데 따로 메모하고 외우는 것이 나중에 IOC, DI 등 설계철학을 배우고 이해하는데 좋다.