정의

- 요런식으로 논리적 구분을 했음
- 상위 layer의 변화가 하위 layer에 영향을 주지 않는 것이 핵심
Repository vs DAO
일반적인 애플리케이션 아키텍처

- 표현계층
- 사용자의 요청을 처리하고 사용자에게 정보를 보여줌
- 사용자는 소프트웨어 사용하는 사람뿐만 아니라 외부시스템일 수 있다
- 컨트롤러
- request에 대해 객체로 변환(to DTO)
- response를 맞는 타입으로 변환(JSON)
- 응용계층
- 사용자가 요청한 기능을 실행한다
- 업무 로직을 직접 구현하지 않으며 도메인 계층을 조합해서 기능을 실행한다
- 서비스계층
- infrastructure
- 데이터베이스나 메시징 시스템과 같은 외부 시스템과의 연동을 처리한다