Spring Boot 공부 일기 <16>- 3 Layer Architecture
1. IDE
Intellij
2. 오늘 공부 내용
3 Layer Architecture
- 소프트웨어를 세 가지 주요 레이어로 나누어 책임을 분리하고 유지보수성을 높임
- 각 레이어는 특정 역할을 맡아, 애플리케이션의 복잡성을 줄이고 확장성을 높이는 데 도움
Presentation Layer (프레젠테이션 레이어) - Controller 부분
- 역할: 사용자의 요청을 처리하고, 적절한 응답을 반환하는 역할을 합니다. 주로 웹 애플리케이션의 경우, 이 레이어는 컨트롤러로 구성됩니다.
- 구성 요소: Spring MVC의
@Controller 또는 @RestController 클래스가 여기에 해당합니다.
- 주요 기능:
- 클라이언트(브라우저, 모바일 앱, API 요청 등)로부터 요청을 받아, 처리하고 응답을 반환합니다.
- 요청 데이터를 검증하고, 비즈니스 로직을 수행하는 서비스 레이어로 데이터를 전달합니다.
- 사용자 인터페이스와 관련된 부분을 처리합니다.
Service Layer (서비스 레이어)
- 역할: 비즈니스 로직을 처리하는 핵심 레이어입니다. 데이터 처리, 트랜잭션 관리, 비즈니스 규칙 검증 등 애플리케이션의 실제 로직이 구현됩니다.
- 구성 요소:
@Service로 정의된 클래스가 포함됩니다.
- 주요 기능:
- 데이터 액세스 레이어와 프레젠테이션 레이어 간의 중재자 역할을 합니다.
- 비즈니스 규칙을 처리하고, 트랜잭션을 관리합니다.
- 프레젠테이션 레이어에서 전달받은 요청을 처리하여 필요한 데이터를 액세스 레이어로 전달하거나, 외부 API 호출 등을 처리합니다.
Data Access Layer (데이터 액세스 레이어)
- 역할: 데이터베이스와의 통신을 담당하는 레이어로, CRUD(Create, Read, Update, Delete) 작업을 수행합니다. 보통 JPA, Hibernate, MyBatis와 같은 ORM(Object Relational Mapping) 또는 JDBC를 사용하여 데이터베이스와 상호작용합니다.
- 구성 요소:
@Repository로 정의된 클래스나 인터페이스가 이 레이어에 해당합니다.
- 주요 기능:
- 데이터베이스에 저장된 데이터를 조회, 삽입, 수정, 삭제하는 역할을 합니다.
- 서비스 레이어에 데이터베이스 접근을 제공하며, 서비스 레이어가 직접 데이터베이스를 다루지 않도록 합니다.
장점, 단점
- 장점
- 책임 분리 (Separation of Concerns) - 레이어가 고유한 역할을 담당하므로, 유지보수가 용이하고 코드가 명확해짐
- 재사용성 (Reusability) - 독립적으로 작동할 수 있기 대문에, 동일한 비지니스 로직을 다른 컨트롤러에서 재사용 할 수 있음
- 유연성 (Flexibility) - 애플리케이션의 특정 레이어를 쉽게 변경할 수 있음
- 테스트 용이성 (Testability) - 각 레이어를 독립적으로 테스트 할 수 있음
- 단점
- 복잡성 증가 - 작은 애플리케이션에서는 불필요하게 복잡할 수 있음
- 초기 설정 부담 - 각 레이어에 대해 추가적인 설정이 필요
- 오버헤드 - 각 레이어가 독립적으로 동작하기 떄문에, 여러 레이어 간의 호출로 인한 성능 오버헤드가 발생할 수 있음