Inflearn brand logo image
Inflearn brand logo image
NEW
개발 · 프로그래밍

/

백엔드

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

가상의 스타트업 개발팀이 단계적으로 클린 코드와 스프링 개발 원칙을 따라서 빠르고, 안정적이면서 유연하고, 유지보수하기 좋게 개발하는 과정을 실제 업무 진행과 유사한 방식으로 경험할 수 있도록 하는 강의 시리즈인 클린 스프링의 첫 번째 강의입니다. 도메인 모델 패턴과 헥사고날 아키텍처를 활용해서 도메인 중심의 초기 개발 단계에서 필요한 기술과 개발전략을 익힐 수 있습니다.

(5.0) 수강평 66개

수강생 1,328명

이런 걸 배울 수 있어요

  • 도메인 모델을 중심으로 하는 설계와 개발 전략

  • 도메인 주도 설계(DDD)의 다양한 패턴과 실천법

  • 헥사고날 아키텍처의 특징과 효과, 쉽고 간단하게 이를 적용하는 방법

  • 다양한 테스트 기법과 아키텍처 테스트 도구의 사용법

  • AI를 활용해서 JPA 엔티티를 깔끔한 도메인 모델로 만드는 방법

  • 최신 스프링 웹 예외처리 기법과 테스트 도구 사용법

  • 애그리거트를 이용한 모듈 구성

토비와 한 팀이 되
스프링 서비스를 완성합니다.

<토비의 클린 스프링>은 가상의 온라인 교육 서비스 ‘스프런(Splearn)’을 함께 개발하며, 기획부터 설계, 구현, 리팩터링까지 전체 과정을 실전처럼 경험하는 강의입니다.

여러분은 토비와 한 팀이 되어, 하나의 서비스를 함께 완성해 나갑니다. 기획부터 구현, 리팩터링까지 각 과정마다 무엇을 고려하고, 어떤 결정을 내려야 할지 토비와 함께 현실적인 관점에서 고민하고 판단해 나갑니다. 이 과정을 통해 여러분은 어떤 기술이 "언제 그리고 왜 필요한지", "왜 이런 구조를 설계했는지" 그 맥락을 이해하는 힘을 기르게 될 것입니다.

<토비의 클린 스프링> 로드맵
클린 코드와 스프링 개발 원칙을 익히는 시리즈 강의입니다. 도메인 모델링부터 MSA, 관측성까지 스프링 애플리케이션의 성장 과정을 7개 과정에 담았습니다. (로드맵 보러가기>>)

336073_1

지속 가능한 코드를 위한 선택
클린 스프링

클린 스프링은 ‘클린 코드’의 원칙을 스프링 개발에 적용하는 실전 전략입니다. 단순히 보기 좋은 코드가 아닌, 팀의 생산성과 장기적인 코드 품질을 함께 끌어올리는 것이 목표입니다. 켄트 벡이 말한 “작동하는 깔끔한 코드(Clean Code That Works)”는 그 핵심 철학을 잘 보여줍니다.

유지보수성과 생산성은 서로를 전제로 합니다. 바꾸기 쉬운 코드가 유지보수를 쉽게 하고, 빠르게 바꿀 수 있어야 생산성도 올라갑니다. 이 구조를 만들기 위해선 리팩터링이 필수고, 그 전제는 테스트 코드입니다.

이 강의에서는 기능을 추가하거나 구조를 정리할 때마다 직접 리팩터링하고 테스트를 작성하는 과정을 반복적으로 보여드립니다.

이러한 실천이 곧 클린 스프링 전략이며 여러분은 이를 통해 변화에 강한 코드를 만들어내는 사고의 힘을 키우게 됩니다.

(클린 스프링에 대한 자세한 이야기는 인프콘 2024 발표영상에서 보실 수 있습니다.👉 )

토비의 클린 스프링 시리즈, 첫번째

도메인 모델과
헥사고날 아키텍처

클린 스프링 개발의 시작은 서비스가 해결하려는 문제(도메인)를 깊이 이해하는 것입니다. 그리고 이를 코드에 반영하고, 기능이 확장되어도 안정적으로 발전시킬 수 있도록 설계하는 핵심 전략이 도메인 모델 패턴과 헥사고날 아키텍처(hexagonal-architecture)입니다.

강의에서는 최신 스프링, 웹, JPA 기술을 바탕으로 도메인 모델과 헥사고날 아키텍처를 실제로 적용해보며, 프로젝트 구조 잡기, 모듈 분리, 협업 방식, 테스트 전략 같은 실무 초기의 핵심 고민을 함께 해결해 나갑니다. 이 과정에서 도메인 모델을 리팩터링하며 발전시키는 흐름을 경험할 수 있습니다.

<도메인 모델과 헥사고날 아키텍처>는 part1,2 두 개의 강의로 구성됩니다.

Part1.회원 기능을 중심으로, 도메인 모델과 아키텍처의 뼈대를 세우며 핵심 로직 설계, 구조화, 테스트 코드 기반 개발 방식을 실습합니다. *본 강의

Part2. 복잡한 요구사항을 다루며 모델을 리디자인하고, 실무에 필요한 깊이 있는 설계와 다양한 리팩터링 기법, 테스트 지원 도구를 적용합니다.

도메인 모델과 헥사고날 아키텍처 part1.

학습 내용

도메인 모델을 중심에 두는 개발 전략

도메인의 개념과 관계를 정확히 반영하려면, 이를 추상화한 도메인 모델이 필요합니다. 도메인 주도 설계(DDD)는 도메인 전문가와 개발팀이 함께 모델을 정립하고 발전시키며 복잡한 문제를 효과적으로 해결하는 접근법입니다.

강의에서는 복잡한 도메인이 아니더라도 DDD의 핵심 원칙과 패턴을 실제 서비스 개발에 적용해봅니다. 또한 도메인 모델을 코드에 자연스럽게 녹여내고, 지속적인 통합을 통해 발전시키는 방법도 함께 실습합니다.

커뮤니케이션을 위한 도메인 모델 문서 작성법

도메인 모델 중심의 개발이 효과적으로 이뤄지려면, 모든 개발팀원이 도메인 전문가와 함께 모델을 만들고 소통할 수 있어야 합니다.

이를 위해선 문서, 코드, 회의 등 모든 의사소통에서 단일한 어휘 체계, 즉 보편 언어(Ubiquitous Language)를 일관되게 사용하는 것이 중요합니다.

강의에서는 이 보편 언어와 도메인 모델을 마크다운 문서로 프로젝트에 기록하는 방법을 소개하고, 코드 변경과 함께 모델이 어떻게 발전해가는지도 함께 살펴봅니다.

헥사고날 아키텍처의 사실과 오해

헥사고날 아키텍처는 자주 오해되지만, 스프링(Spring)의 기본 원칙을 따르는 개발자라면 이미 그 가치를 어느 정도 활용하고 있을 수 있습니다.

강의에서는 헥사고날 아키텍처의 핵심 개념과 계층 구조, 인터페이스 구성 방법을 살펴보고, 이를 통해 아키텍처가 제공하는 이점을 효과적으로 얻는 방법을 익힙니다.

간단한 원칙만 지켜도 도메인 로직에 집중할 수 있으며, 특히 환경에 독립적인 테스트를 구성하는 방법을 실습하며 적용해봅니다.

계층 간 의존관계 규칙 적용

헥사고날 아키텍처와 도메인 모델 패턴을 함께 적용하면, 응집도가 높고 유지보수성이 뛰어난 구조를 만들 수 있습니다. 하지만 이러한 구조의 가치를 제대로 활용하려면, 계층형 아키텍처의 의존관계 규칙을 잘 지켜야 합니다.

강의에서는 각 계층의 책임에 따라 기능을 어떻게 배열할지, 코드 구성을 어떻게 해야 할지를 중심으로, 계층 구조 설계에서 자주 놓치기 쉬운 부분들을 깊이 있게 다룹니다.

애그리거트를 이용한 모듈 구조 설계

도메인 주도 설계에서 소개된 애그리거트(Aggregate)는 데이터 변경의 단위를 설계해서 변경의 일관성을 유지하도록 해줍니다.

애그리거트 내에서 충족해야 할 불변식을 어떻게 발견하고 다룰 것인지, 애그리거트 루트를 어떤 식으로 사용해야 하는지, 이를 지원하는 스프링 데이터 프로젝트의 리포지토리 패턴은 어떻게 사용해야 하는지를 살펴보고 애그리거트 패턴을 적용해봅니다.

애그리거트와 헥사고날 아키텍처를 함께 사용해서 세부 모듈을 구성하는 방법도 설명합니다.

JPA 엔티티로 깔끔한 도메인 오브젝트 작성

JPA 기술의 특징과 목적을 살펴보고 JPA 엔티티를 도메인 오브젝트를 효과적으로 만드는 기술로서 활용하는 방법을 소개합니다.

과도한 JPA 애노테이션이 도메인 로직과 혼재되어 있는 문제를 해결할 수 있는 표준 접근방법도 알려드립니다. 이때 AI 기술을 활용해보기도 합니다.

JPA 엔티티를 도메인과 구분해서 사용하는 특별한 경우에 대해서도 이야기합니다.

아키텍처 테스트와 코드 검증, 테스트 전략

작성된 애플리케이션 코드가 외부에 제공하는 기능이 바르게 작성되었는지를 확인하는 테스트 코드를 만듭니다. 테스트로 직접 확인이 어렵지만 운영환경에서 문제가 될 수 있는, 정적 분석 도구를 활용한 코드 검증 방식도 함께 적용하며, 코드의 안정성과 일관성을 높이는 방법을 익힙니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 웹과 DB를 사용하는 스프링 기술을 이용한 실무 개발이 어떻게 진행되는지 알고 싶은 분

  • 클린 코드 원칙을 적용해서 유지보수성이 뛰어나고 생산성이 높은 시스템 개발을 원하시는 분

  • 서비스 개발을 이끄는 중급 이상의 개발자로 성장하고 싶은 주니어 개발자

  • 최신 아키텍처와 개발 기법을 익히고 많은 기대를 가지고 일을 시작하는 신입, 주니어 개발자들을 리드하고 싶은 시니어 개발자

선수 지식,
필요할까요?

  • 자바 언어

  • 스프링의 기본 원리의 이해

  • 웹 API와 JPA를 사용하는 스프링 애플리케이션 개발 경험

안녕하세요
입니다.

12,900

수강생

637

수강평

305

답변

5.0

강의 평점

7

강의

호주에 살고 있는 소프트웨어 개발자입니다. 30년간 다양한 분야의 시스템과 서비스를 개발해본 경험이 있습니다. 

스프링 프레임워크와 관련 기술을 좋아하고 JVM 기반 언어를 주로 사용합니다.

한국스프링사용자모임(KSUG)을 설립하고 활동했고, 토비의 스프링이라는 책을 쓰기도 했습니다.

개발과 관련된 다양한 주제에 관해 이야기하는 것을 좋아합니다. 

 

 

커리큘럼

전체

43개 ∙ (14시간 31분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

전체

66개

5.0

66개의 수강평

  • Zin님의 프로필 이미지
    Zin

    수강평 2

    평균 평점 5.0

    5

    29% 수강 후 작성

    처음 토비님과 개발을 함께 했을 때, 그 시간들을 동료 개발자 분들도 함께 경험해봤으면 했습니다. 그래서 <토비의 클린 스프링> 이라는 로드맵에 대한 아이디어를 드렸어요. 그 로드맵의 첫 강의가 시작되어서 설레네요! 본 강의로 비즈니스를 함께 고민하고, 개발에 적용하고, 배우고, 실무에 써보고.. 각자의 방식으로 재미있게 수강하셨으면 좋겠습니다. 저 또한 열심히 수강하며 아직 부족한 부분들을 차근차근 채워나가 보겠습니다. 함께하실 분~?🥰

    • 토비
      지식공유자

      이번 강의는 짧은 시간이었지만 Zin 님과 함께 개발하고 공부했던 기억을 떠올리면서 준비했습니다. 그때 만들었던 간단한 예제와 목적을 가진 아키텍처 구조와 도메인 로직을 다루는 방법, 테스트 코드를 잘 작성하고 리팩터링을 했던 것들이 강의로 다시 만들어졌습니다. 현장에서 함께 개발할 때도, 또 이후에 강의를 기획하고 준비하고 공개하는 모든 순간에 많은 도움이 되어주셔서 감사합니다. 바쁘시지만 강의를 다시 살펴보시고 이번엔 어떤 느낌이었는지도 꼭 남겨주세요. 기다리겠습니다. 감사합니다.

  • 최재형님의 프로필 이미지
    최재형

    수강평 2

    평균 평점 5.0

    수정됨

    5

    100% 수강 후 작성

    강의가 출시되었다는 소식을 듣고 주말에 봐야겠다 다짐하고 방금 완강했습니다. 대한민국 스프링 대장의 업무 스타일과 노하우를 간접 체험할 수 있는 소중한 시간이었습니다. 난이도가 초급으로 분류되어 있지만, 난이도를 떠나 다른 개발자의 업무 스타일과 사고방식은 아무데서나 쉽게 들을 수 있는 것이 아니라고 생각합니다. 모델을 설계하며, 가져야하는 역할, 역할을 위해 필요로하는 상태 등 점진적으로 코드를 바꿔나가는 과정과, 간간히 인간미(오타, 누락)를 보여주시는데 테스트 코드로 식별해내는 정말 수도 없이 일상에서 발생할 수 있는 부분들이 테스트 코드의 가치를 더 보여준다 느꼈습니다. Fixture, Mock(Stub) 등의 활용, 검증해야할 대상, 행위, 목적 식별 등 단위, 통합 등의 구분이라던지, 테스트에 대한 노하우가 많이 있습니다.! junit-platform.properties 대박 MockMvcTester 대박 특히 "헥사고날 아키텍처의 사실과 오해" 섹션이 인상깊었습니다. 뜨문뜨문 알고있었던지라 에릭 에반스와 알리스타 코번 등 창시자가 어떻게 설파했는지, 말했었던 본질적인 부분을 잘 짚어주셔서 어렵게 느껴지는 부분들을 잘 정리해주신 것 같습니다. 이 강의는 다음 분들께 도움이 될 것 같습니다 설계를 주도해야 하는 시니어 개발자분들 헥사고날 아키텍처 프로젝트를 공부하고 경험했지만 깊은 이해가 부족하다고 느끼시는 분들 도메인 모델 패턴, 트랜잭션 스크립트 패턴, 헥사고날 아키텍처에 대해 제대로 배워보고 싶은분 스프링 대장은 어떻게 개발하는지 알고 싶은분 클린 스프링, 스프링과의 통합으로 많은 이득을 취한 구성 방식에 대해 배우게 되었습니다. 감사합니다. 스프링 없인 개발 안합니다. 스프링은 POJO 다!!!

    • 토비
      지식공유자

      언제나 상세한 수강평을 남겨주시는 재형 님이군요. 패턴과 원칙 뿐만 아니라, 지금 시점의 스프링의 최신 기술도 사이사이 알려드리려고 노력했는데 그걸 잘 캐치해주셔서 감사합니다. 계속 좋은 개발자로 성장하시기를 기대합니다. 감사합니다.

  • MASKUN님의 프로필 이미지
    MASKUN

    수강평 2

    평균 평점 5.0

    5

    79% 수강 후 작성

    혼돈과 무질서가 가득한 곳에서 토비님이 빛이 있으리라 했더니 빛이 나타나 질서를 바로 잡았다. 제가 많은 고민을 해오고 있던 도메인 모델 패턴과 헥사고날 아키텍쳐에 대한 정론을 보고 있는 기분입니다. 추천드립니다.

    • 토비
      지식공유자

      헉.. 제가 그런 대단한 능력을 가진 사람은 아닙니다. 다만 열심히 공부하고 확인했던 것들을 조금 혼란을 겪으시거나, 기술의 가치를 잘 얻지 못하시는 분들을 볼 때 안타까웠던 것들을 기억하면서 열심히 설명해보려고 노력했습니다. 그럼에도 저도 틀린 것도 있을 겁니다. 여러 분들이 의견을 주고 계시니 저도 더 배우고 준비해서 이어지는 강의에서 계속 전달해드릴게요.

  • zecongbi님의 프로필 이미지
    zecongbi

    수강평 5

    평균 평점 5.0

    5

    30% 수강 후 작성

    아직 강의를 절반밖에 듣지 않았지만, 현업에서 일하며 잘못 알고 있던 부분들을 되짚어 보는 기회였습니다. 앞으로도 강의 이어서 들으면서 많은 지식 얻어가겠습니다. 좋은 강의 감사합니다.

    • 토비
      지식공유자

      도움이 되는 내용이 많이 있었기를 기대해봅니다. 좋은 평가 남겨주셔서 감사합니다.

  • 네오스카이님의 프로필 이미지
    네오스카이

    수강평 22

    평균 평점 5.0

    5

    30% 수강 후 작성

    기초부터 차근차근 설명해주시고 도메인주도 개발을 하시어 정말로 쉽게 가르쳐 주십니다. 감사합니다. 남의 강의도 힘을 내어 보겠습니다.

    • 토비
      지식공유자

      앞으로 시리즈로 이어질 강의가 많이 있습니다. 계속 힘을 내주세요! 너무 장황하게 말을 많이 하나 걱정이기도 했는데 차근차근 설명했다고 평가해주시니 감사하네요.

토비님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!

연관 로드맵

강의가 포함된 로드맵으로 학습해 보세요!