Spring Boot 공부 일기 <16>- 3 Layer Architecture

이동휘·2024년 9월 9일

Spring Boot

목록 보기
16/21

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) - 각 레이어를 독립적으로 테스트 할 수 있음
  • 단점
    • 복잡성 증가 - 작은 애플리케이션에서는 불필요하게 복잡할 수 있음
    • 초기 설정 부담 - 각 레이어에 대해 추가적인 설정이 필요
    • 오버헤드 - 각 레이어가 독립적으로 동작하기 떄문에, 여러 레이어 간의 호출로 인한 성능 오버헤드가 발생할 수 있음

0개의 댓글