본문 바로가기
Spring과 진짜 초면인 우리들에게

DDD설계의 🌷(꽃), 스프링의 3(🌷🌷🌷)대장

by eddy0223 2023. 4. 7.
Spring과 진짜 초면인 우리

 

 

스프링 전체 틀 이해하기! 정말 쉽지 않네요 후욱후욱..

그래도 이제 거의 다 온 것 같네요

 이번에는 DDD 설계의, 사실 상 3대장이라고 불리우는 녀석들을 만나는 이야기입니다

 

Client -- Controller 👉🏻 Service 👉🏻 Repository -- DB

 

'그냥 단순히 이런가보다.. 이렇게 하라니까 이렇게 해야지..'라고 썼던 제 자신을 뒤돌아 보며,,!!!

 

이 구조를 제. 대.로 알아보자고요~!

 

DDD를 기반으로 3대장의 역할 뿌셧 👊👊👊

 

Domain-Driven Design Service

크게 3가지 Layer로 구분하는 것이 바로 핵심!

  1. Application Layer: 주로 도메인과 Repository 바탕으로 실제 서비스(API) 제공하는 계층
  2. Domain Layer: Entity, VO(Value Object) 활용하여 도메인 로직이 진행되는 계층 
    (잠깐! Entity와 VO가 낯설다면 ? -> https://eddy0223.tistory.com/11 )
  3. Infrastructure Layer: 외부와의 통신(ORM, DB, NoSql) 담당하는 계층

자, 그러면 DDD(Domain Driven Design)를 기반으로 Controller, Service, Repository를 알아보자구요~

  1. Controller:
    웹 애플리케이션에서 클라이언트 요청을 처리하고 응답하는 계층이죠!
    Controller는 사용자 요청을 받아 Service 계층에 전달하고, Service 계층에서 처리한 결과를 클라이언트에게 반환해줘요
    클라이언트의 요청에 따라 데이터 유효성 검증, DTO 객체 생성 등을 수행하는 문지기(?) 같은 친구네요~

  2. Service:
    도메인 로직을 처리하는 계층으로, Controller와 Repository 간의 중개자 역할을 하고있어요!
    Service에서는 '비즈니스 로직'을 처리하고, 필요한 데이터를 Repository에서 조회하여 반환해줘요
    또한, Service에서는 '트랜잭션 처리', '예외 처리' 등의 기능을 수행하는 너무너무 소중한 친구랍니다

  3. Repository:
    데이터베이스와의 데이터 입출력을 처리하는 계층이에요!
    Repository는 도메인 모델의 상태를 영속화하고, 필요한 데이터를 조회하여 반환해주고,
    데이터베이스 연동 등을 처리하고 수행하고 있어요

이러한 계층 구조는 DDD에서 도메인 모델을 중심으로 설계되고, 비즈니스 로직이 외부 계층에 종속되지 않도록 설계되기때문에

유연하고 확장성 있는 소프트웨어를 개발을 하려면 꼭꼭 알아야만 하는 중요한 스프링의 🌷🌷🌷(3대장) 이었습니다!

 


도서관앱 구조 예시 ( 정답은 아닙니다!  참고용 )