[Spring] 레이어드 아키텍처(Layered Architecture)와 Spring MVC

2025. 8. 5. 17:52·Spring


들어가며

Spring MVC 패턴과 레이어드 아키텍처를 통해 Spring의 기본적인 동작 방식에 대해서 알아보려고 한다. 


레이어드 아키텍처 (Layered Architecture) 

레이어드 아키텍처는 애플리케이션의 컴포넌트를 유사 관심사를 기준으로 레이어(=계층)으로 묶어 수평적으로 구성한 구조를 말한다. 일반적으로 프레젠테이션 계층, 비즈니스 계층, 데이터 접근 계층 총 3가지 계층으로 구성된다. 

  • 계층을 묶고 나서 각 계층이 가장 가까운 하위 계층의 의존성을 주입받아, 다른 계층과 통신하게 된다.
  • 각 계층은 각자에 맞는 역할을 수행할 수 있게 되어 효율적인 개발이 가능해진다.
  • 계층이 독립적으로 작성되므로 단위 테스트에 용이하며 코드의 확장성도 좋아진다. 

스프링 부트에서는 Controller가 프레젠테이션 계층, Service가 비즈니스 계층, Repository가 데이터 접근 계층이라고 보면 된다. 

1) 프레젠테이션 계층 (Presentation Layer) 

  • HTTP 요청/응답을 처리하는 계층 
  • URL 매핑(@RequestMapping, @GetMapping 등)을 통해 요청을 받아 처리를 시작 
  • 클라이언트로부터 받은 데이터를 Service 계층으로 전달하고 응답 데이터를 뷰나 JSON 형태로 반환한다. 

2) 비즈니스 계층 (Business Layer) 

  • 애플리케이션의 핵심 로직을 담당
  • 트랜잭션 처리, 도메인 규칙 검증, 여러 Repository 호출 등을 수행 
  • Controller와 Repository 사이에서 중간 조율자 역할 

3) 데이터 접근 계층 (Data Access Layer) 

  • DB, 파일 시스템, 외부 API 등 데이터 소스와 직접 연결되는 계층
  • Spring Data JPA, MyBatis 등의 기술을 사용 
  • CRUD(Create, Read, Update, Delete) 작업 수행 

Spring MVC 란 ? 

MVC 패턴은 애플리케이션을 개발할 때 사용하는 디자인 패턴으로 애플리케이션 개발 영역을 MVC(Model, View, Controller)로 구분하여 각 역할에 맞게 코드를 작성하는 개발 방식이다. 

Model (모델) 

애플리케이션의 핵심 데이터와 비즈니스 로직을 담당하는 영역으로 데이터베이스에서 가져온 데이터나 처리 결과를 저장하고 이를 View로 전달한다. 

View (뷰)

레이아웃과 화면을 담당한다. UI에 나타날 데이터를 모델로부터 받아 화면에 표현한다. 

Spring에서는 Thymeleaf, JSP, Mustache 와 같은 템플릿 엔진이 View 역할을 수행한다.
(`@RestController` 를 사용하면 View 없이 JSON, XML 응답을 직접 반환한다.) 

Controller (컨트롤러)

클라이언트의 요청을 받고, 적절한 비즈니스 로직을 호출한 뒤 결과를 View에 전달한다. 


흐름 

1. Presentation Layer (프레젠테이션 계층) 

2. Business Layer (비즈니스 계층) - Service : 애플리케이션의 핵심 로직 담당 

3. Data Access Layer (데이터 접근 계층) - DAO(Repository) : 데이터베이스, 외부 API, 파일 등 데이터 소스에 직접 접근 


마무리하며

MVC 패턴이 애플리케이션의 역할 분리에 집중한다면, 레이어드 아키텍쳐는 이를 계층적으로 구조화하여 유지보수성과 확장성을 높인다. 그리고 각 계층에서 다루는 데이터 구조를 명확히 구분하면, 코드 변경이 특정 영역에만 영향을 미치도록 설계할 수 있어 안정성이 높아진다. 

'Spring' 카테고리의 다른 글

[Spring] ORM과 JPA(Java Persistence API)  (3) 2025.08.11
[Spring] IoC(Inversion of Control)와 DI(Dependency Injection)  (2) 2025.08.08
[Spring] DispatcherServlet과 스프링부트 동작 구조  (3) 2025.07.26
[Spring] Spring Security의 구조와 흐름  (0) 2025.07.17
[Spring] JWT 토큰 인증 & 쿠키, 세션, 토큰  (0) 2025.07.16
'Spring' 카테고리의 다른 글
  • [Spring] ORM과 JPA(Java Persistence API)
  • [Spring] IoC(Inversion of Control)와 DI(Dependency Injection)
  • [Spring] DispatcherServlet과 스프링부트 동작 구조
  • [Spring] Spring Security의 구조와 흐름
erika0915
erika0915
백엔드 개발자가 되고 싶어요 .
  • erika0915
    erikoding
    erika0915
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • 프로젝트 (13)
        • 끼니콩 (3)
        • 덕메랑 (3)
        • handDoc (7)
        • Haeil (0)
      • Java (9)
        • 클린코더스 (0)
      • Spring (30)
      • Redis (3)
      • CS (7)
        • 운영체제 (3)
        • 컴퓨터구조 (0)
        • 네트워크 (4)
      • DevOps (2)
      • 코딩테스트 (0)
      • Tech (14)
        • TDD (1)
        • 정리 (5)
        • 우테코 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CoolSMS
    jira
    docker
    git
    STT
    springboot
    OS
    지라
    몽고디비
    java
    AI
    도커
    TDD
    레디스
    깃허브
    promtail
    Spring
    Network
    coderabbit
    스프링
    파인튜닝
    운영체제
    코드레빗
    자바
    MongoDB
    github
    네트워크
    redis
    스프링부트
    깃
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
erika0915
[Spring] 레이어드 아키텍처(Layered Architecture)와 Spring MVC

티스토리툴바