강의

멘토링

로드맵

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

토비의 클린 스프링은 스프런(Splearn)이라는 온라인 교육 서비스를 개발하고 운영하는 가상의 스타트업 개발팀이 단계적으로 클린 코드와 스프링 개발 원칙을 따라서 빠르고, 안정적이면서 유연하고, 유지보수하기 좋게 개발하는 과정을 실제 업무 진행과 유사한 방식으로 경험할 수 있도록 하는 강의입니다.

(5.0) 수강평 2개

수강생 74명

난이도 초급

수강기한 무제한

실습 중심
실습 중심
백엔드이해하기
백엔드이해하기
클린코드
클린코드
실습 중심
실습 중심
백엔드이해하기
백엔드이해하기
클린코드
클린코드

수강 후 이런걸 얻을 수 있어요

  • 애플리케이션 컴포넌트로 헥사고날 아키텍처 내부를 구성하는 방법

  • 복잡한 도메인 로직을 도메인 모델 패턴으로 안전하게 구현하고 진화시키는 전략

  • 설계 트레이드오프를 검토하고 리팩터링으로 기존 설계를 개선하는 실전 경험

  • 랜덤 데이터를 사용하는 테스트 픽스처 개발과 효율적인 테스트 작성 방법

  • ArchUnit으로 컴포넌트 간 의존관계 규칙을 검증하는 방법

  • DIP를 이용해 양방향 의존관계 문제를 해결하는 설계 기법

AI에게 코드를 맡기는 시대,
개발자에게 필요한 판단력과 설계력

AI에게 그냥 개발을 맡기면 가장 평균적인 스프링 코드, 심지어 안티 패턴이 섞인 코드가 나오기 쉽습니다.

AI가 코드를 작성하더라도, 최종 리뷰와 책임은 개발자의 몫입니다. 무엇이 최선인지 트레이드오프를 결정하는 일도, AI의 하네스가 될 도메인 모델 설계 문서·개발 가이드·아키텍처 테스트를 만드는 일도 개발자에게 달려 있습니다.

결국 AI를 제어하는 힘은 아키텍처, 도메인 모델,
그리고 유지보수하기 좋은 코드를 설계하는 실력에서 나옵니다.




역량 키우기 1. 개발자의 판단력

토비와 한 팀이 되
스프링 서비스를 만듭니다.

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

여러분은 토비와 한 팀이 되어 하나의 서비스를 완성해 나갑니다. 각 단계마다 무엇을 고려하고 어떤 결정을 내려야 할지, 31년 차 개발자의 사고 과정을 곁에서 따라갑니다. 이 과정을 통해 어떤 기술이 "언제, 왜 필요한지", "왜 이 구조로 설계했는지" 그 맥락을 이해하는 힘을 기르게 됩니다.

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


역량 키우기 2. 코드 설계력

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

이 모든 과정에서 우리가 중심으로 삼는 원칙이 클린 스프링입니다.

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

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

그리고 이 기준이 손에 잡히면, AI에게 무엇을 어떻게 지시해야 하는지도 비로소 명확해집니다.

토비의 클린 스프링, 첫 번째 주제

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

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

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

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


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

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


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

학습 내용

Part 1 피드백과 설계 리팩터링

Part 1을 수강한 분들의 피드백과 질문을 바탕으로 기존 설계를 다시 검토합니다. 설계 트레이드오프의 정확한 의미를 짚어보고, 도메인 값 객체와 애플리케이션 DTO를 분리하는 설계 변경을 마틴 파울러 방식의 안전한 점진적 리팩터링으로 수행합니다. 테스트가 항상 성공하는 상태를 유지하면서 리팩터링을 진행하는 방법을 몸에 익힐 수 있습니다.

소통의 의도를 드러내는 헥사고날 포트 설계

포트는 애플리케이션이 외부 세계와 어떤 의도를 가지고 상호작용하는지를 캡처한 것입니다. 하나의 거대한 서비스 인터페이스에 모든 메소드를 몰아넣는 대신, 인터페이스 분리 원칙(ISP)에 따라 소통 의도 단위로 포트를 구성하는 방법을 회원 인증 포트 개발을 통해 실습합니다. 포트 테스트를 인터페이스 기준으로 작성해, 리팩터링에도 깨지지 않게 만드는 방법그리고 팀의 설계 관례를 개발 가이드 문서로 명문화하는 방법도 함께 다룹니다.

애플리케이션 컴포넌트 - 헥사고날의 내부 구성

헥사고날 아키텍처는 내부를 어떻게 구성해야 하는지에 대해서는 답을 주지 않습니다. 이 강의에서는 UML 컴포넌트 개념을 가져와서 하나의 애그리거트와 이를 둘러싼 애플리케이션 서비스를 애플리케이션 컴포넌트라는 독립적이고 교체 가능한 모듈 단위로 설계하는 전략을 제안합니다. 애그리거트 사이의 직접 참조와 식별자 참조, 변경 단위의 제한, 컴포넌트 사이의 단방향 의존관계 같은 실전 원칙을 정립하고, 강사·강의·수강·커리큘럼 네 개의 컴포넌트를 차례로 완성합니다.

테스트 개선과 아키텍처 검증

아키텍처 원칙은 사람의 주의력이 아니라 테스트 코드로 강제해야 합니다. 커스텀 스테레오타입 합성 애노테이션으로 아키텍처의 의도를 코드에 명시하고, ArchUnit으로 슬라이스 사이의 순환 의존 금지, 다른 애그리거트의 상태 변경 차단 같은 팀의 아키텍처 규칙을 빌드 시점에 자동 검증하는 방법을 익힙니다. 또한 Instancio를 활용한 랜덤 테스트 데이터, 테스트 픽스처와 베이스 클래스를 이용해서 테스트 코드의 품질과 작성 효율을 함께 끌어올리는 기법을 실습합니다.

복잡한 도메인의 애그리거트 설계와 TDD

강의(Course)의 생애 주기(초안-검수-공개-보관)를 상태 전이로 모델링하고, 수강(Enrollment)에서 복합 내추럴 아이디와 예외·Optional의 사용 기준을 정리합니다. 마지막 커리큘럼 컴포넌트에서는 보편 언어의 발견이 애그리거트 경계 문제를 풀어내는 과정을 경험하고, 섹션과 수업의 추가·이동·삭제 같은 복잡한 컬렉션 기반 도메인 로직을 TDD로 개발합니다. 나아가 @OrderColumn과 @EntityGraph로 애그리거트를 효과적으로 영속화하고, Hibernate 통계로 실행 쿼리 수까지 테스트로 검증해서 N+1 문제를 잡아냅니다.

DIP를 이용한 컴포넌트 의존관계 문제 해결

컴포넌트가 늘어나면 순환 의존의 유혹이 찾아옵니다. 인터페이스에 의존하는 것만으로는 부족하고, 인터페이스의 소유권까지 역전해야 진짜 의존관계 역전(DIP)이라는 것을 코스와 커리큘럼 사이의 양방향 의존 문제를 해결하며 확인합니다. 헥사고날 아키텍처의 required 포트가 바로 DIP의 적용례라는 사실도 함께 이해하게 됩니다.

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • 클린 스프링 Part 1을 학습했고, 나머지 도메인의 실제 구현까지 완성해보고 싶은 분

  • 도메인 모델 패턴과 헥사고날 아키텍처를 실무 수준의 복잡한 도메인에 적용하는 방법이 궁금하신 분

  • 애플리케이션이 커질 수록 내부 구조를 어떻게 나누고 조직해야 할지 막막한 개발자

  • 테스트를 만드느라 개발이 느려진다고 느껴서 테스트를 빠르고 효과적으로 작성하는 방법을 찾고 있는 분

  • 문서로만 존재하다가 무너지는 아키텍처 규칙을 코드로 검증하고 지키고 싶은 개발자

  • AI 코딩 에이전트가 만든 코드를 이해하고 리뷰할 수 있는 설계 역량을 갖추고 싶은 개발자

선수 지식,
필요할까요?

  • 자바 언어 - JDK21

  • 스프링 기본 원리의 이해

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

안녕하세요
토비입니다.

인프런인증

16,213

수강생

1,109

수강평

427

답변

5.0

강의 평점

9

강의

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

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

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

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

 

 

커리큘럼

전체

48개 ∙ (12시간 58분)

해당 강의에서 제공:

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

수강평

전체

2개

5.0

2개의 수강평

  • Zin님의 프로필 이미지
    Zin

    수강평 3

    평균 평점 5.0

    5

    100% 수강 후 작성

    AI 시대에 클린 스프링은 AI에게 어떤 하네스를 제공해야할지 알려주는 길잡이가 될 것 입니다. 도메인 모델 문서, 개발 가이드, 그리고 아키텍처 테스트 등 개발자가 AI를 믿고 개발할 수 있는 환경을 제공해줘야 하기 때문입니다. 그런 의미에서 이번 클린 스프링 1 Part2 는 내가 혹은 개발팀이 기대하는 방향의 개발을 할 수 있도록 도울 수 있지 않나 생각합니다. 이번 강의도 재밌습니다. 😊 많은 개발자분들이 수강하시길 바랍니다!

    • 제미니님의 프로필 이미지
      제미니

      수강평 3

      평균 평점 5.0

      5

      33% 수강 후 작성

      AI가 코드를 작성해 주는 시대에도 정말로 필요한 강의입니다! 구현과 리팩토링, 테스트 코드에 대한 토비님의 관점과 어떤 방식으로 토비님이 개발에 대해 생각을 펼쳐가시는지 생각 흐름을 훔쳐볼 수 있는 강의기에 구매가 아깝지 않은 강의입니다! 특히 마지막 수업인 강의 정리 부분은 현재 시대에 대한 토비님의 인사이트까지 담겨있어 아직은 인간이 더 공부하고 더 학습하고 더 훈련해야 한다는 것을 느낄 수 있었습니다 단순히 강의 메인 주제를 떠나서 년차 상관없이 개발자라면 추천드립니다!

      얼리버드 할인 중

      월 ₩291,503

      5개월 할부 시

      29%

      ₩99,000

      ₩1,457,516

      토비님의 다른 강의

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

      비슷한 강의

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

      연관 로드맵

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