개발이 취미인 사람

[Spring Boot] Spring Boot API 만들기 (2) - 계층 구조 설명 본문

백앤드(Back-End)/Spring Boot

[Spring Boot] Spring Boot API 만들기 (2) - 계층 구조 설명

RyanSin 2022. 4. 17. 19:54
반응형

- 지난 시간

안녕하세요. 지난 시간에는 Spring Boot 프로젝트를 생성하는 시간을 가져봤습니다.

 

혹시 놓치고 오신 분들은 아래 링크를 통해 프로젝트를 생성하고 오시는 걸 추천드리겠습니다.

[Spring Boot] Spring Boot API 만들기 (1) - 프로젝트 생성

 

[Spring Boot] Spring Boot API 만들기 (1) - 프로젝트 생성

- 개요 안녕하세요. 이번 시간부터 Spring Boot 프레임워크에 대한 전반적인 내용을 작성할 예정입니다. 첫 시간으로 Spring Boot 프로젝트 생성에 대해 알아보겠습니다. 저는 현업에서 JavaScript, Node를

any-ting.tistory.com

 

- 개요

이번 시간에는 Spring Boot 계층 구조에 대해 설명하는 시간을 가져 보도록 하겠습니다.

 

사실 계층 구조(Layered Architecture)는 Spring Boot에만 사용되는 개념은 아닙니다.

 

기본적으로 프레임워크를 사용해서 API 서버를 만들 때는 해당 프레임워크 구조를 지키며 만들어야 합니다.

(그래야 다른 사람들과 협업을 할 때 문제가 없습니다.)

 

그렇기 때문에 기본적인 개념을 숙지하고 있다면 다양한 프레임워크를 사용했을 때 적응하는 속도가 빠르다고 생각합니다.

 

또한 계층 구조(Layered Architecture)의 핵심은 "관심사 분리"라고 말할 수 있습니다.

 

각각의 계층은 자신이 담당하는 책임을 지키며 하위 계층에 대해서 의존합니다.

 

무슨 말이냐면, "내가 담당하는 업무만 신경 쓰고 다른 부분은 다른 계층이 담당"한다고 생각하시면 됩니다.

 

 

- 계층구조(Layered Architecture)

 

 

  1. Presentation Layer(프레젠테이션 계층)
    프레젠테이션 계층은 HTTP 요청을 처리하며, 파라미터와 JSON 매개변수를 처리하고 인증에 관련된 로직을 처리하는 계층입니다.

  2. Business Layer(비즈니스 계층)
    비즈니스 계층은 프레젠테이션 계층에서 전달 받은 데이터를 유효성 검사를 하며, 비즈니스 로직을 구성하는 계층입니다.

  3. Persistence Layer(지속성 계층)
    지속성 계층은 데이터베이스에 대한 논리 모델을 나타냅니다. 비즈니스 로직에서 생성된 개체를 데이터베이스 개체로 변환합니다.

  4. Database Layer(데이터베이스 계층)
    여러 데이터베이스에 대한 전반적인 CRUD 작업을 수행하며 담당하는 계층입니다.

 

계층 구조에 대한 개념은 위와 같습니다. 그렇다면 Spring Boot 프레임워크는 위와 같은 계층 구조를 어떤 식으로 지키고 있을까요?

 

- Spring Boot 계층 구조

 

 

Spring Boot 프로젝트 계층 구조는 위 그림과 같습니다.

 

  1. Controller(컨트롤러)
    컨트롤러 계층은 HTTP 요청과 요청된 정보를 체크하며, 인증을 담당합니다.

    기본적인 계층 구조에서는 비즈니스 계층이 유효성 검사를 하지만 Spring Boot 프로젝트에서는 Validation 라이브러리를 활용해서 요청 정보를 바로 체크할 수 있습니다.

  2. Service(서비스)
    서비스 계층은 비즈니스 로직을 담당하는 계층입니다. 기본적인 개념과 다른 부분은 없습니다.

  3. Domain(도메인)
    도메인 계층은 실제 데이터베이스 테이블 정보를 가지는 하나의 Entity 클래스를 생성하고 해당 Entity를 컨트롤 합니다.

  4. Repository(리포지토리)
    리포지토리에서는 실제 데이터베이스에 쿼리문을 실행하는 로직을 담당합니다.

이번 시간에는 계층 구조에 대해 알아봤습니다. 사실 직접 실습하지 않고서는 이해가 가지 않기 때문에 다음 시간에 바로 적용해 보겠습니다.