강의

멘토링

로드맵

BEST
Programming

/

Back-end

トビのクリーンスプリング - ドメインモデルパターンとヘキサゴナルアーキテクチャ Part 1

仮想のスタートアップ開発チームが段階的にクリーンコードとSpring開発原則に従って、迅速で安定かつ柔軟、そして保守性の高い開発を行う過程を実際の業務遂行と類似した方式で経験できるようにする講座シリーズである「クリーンSpring」の第1回目講座です。ドメインモデルパターンとヘキサゴナルアーキテクチャを活用して、ドメイン中心の初期開発段階で必要な技術と開発戦略を習得できます。

  • tobyilee
실습 중심
백엔드이해하기
클린코드
Java
Spring
Spring Boot
JPA
hexagonal-architecture

学習した受講者のレビュー

こんなことが学べます

  • ドメインモデルを中心とした設計と開発戦略

  • ドメイン駆動設計(DDD)のさまざまなパターンと実践法

  • ヘキサゴナルアーキテクチャの特徴と効果、簡単にこれを適用する方法

  • 多様なテスト技法とアーキテクチャテストツールの使用法

  • AIを活用してJPAエンティティを簡潔なドメインモデルにする方法

  • 最新スプリングウェブ例外処理の技法とテストツールの使用法

  • アグリゲートを用いたモジュール構成

トビーと一チームなる
スプリングサービスを完成させます。

<トビーのクリーンスプリング>は、仮想のオンライン教育サービス「スプラーン(Splearn)」を共に開発し、企画から設計、実装、リファクタリングまで、全体の過程を本番のように体験する講義です。

皆さんはトビーと一チームになり、一つのサービスを一緒に完成していきます。企画から実装、リファクタリングまで、各過程ごとに何を考慮し、どんな決定を下すべきかトビーとともに現実的な観点から悩んで判断していきます。このプロセスを通して、あなたはどの技術が「いつそしてなぜ必要なのか」、「なぜこのような構造を設計したのか」という文脈を理解する力を養います。

<トビーのクリーンスプリング>ロードマップ
クリーンコードとスプリング開発の原則を習得するシリーズ講義です。ドメインモデリングからMSA、観測性まで、Springアプリケーションの成長プロセスを7つのコースに収めました。 (ロードマップに行く>>)

336073_1

持続可能なコードの選択
クリーンスプリング

クリーンスプリングは、「クリーンコード」の原則をスプリング開発に適用する実践戦略です。単に見やすいコードではなく、チームの生産性と長期的なコード品質を一緒に引き上げることが目標です。ケント・ベックが語った「機能的でクリーンなコード」は、その重要な哲学をよく示しています。

保守性と生産性はお互いを前提とします。変更しやすいコードがメンテナンスを容易にし、素早く変えることができなければ生産性も上がります。この構造を作るためにはリファクタリングが必須であり、その前提はテストコードです。

このレッスンでは、機能を追加したり構造を整理したりするたびに、直接リファクタリングしてテストを作成するプロセスを繰り返し表示します。

これらの実践はまもなくクリーンスプリング戦略であり、あなたはこれによって変化に強いコードを生み出す事故の力を育てます。

(クリーンスプリング詳細な話はインフコン2024発表映像でご覧いただけます。👉 )

トビーのクリーンスプリングシリーズ、第一

ドメインモデルと
ヘキサゴナルアーキテクチャ

クリーンスプリング開発の始まりは、サービスが解決しようとしている問題(ドメイン)を深く理解することです。そしてこれをコードに反映し、機能が拡張されても安定的に発展できるように設計する核心戦略がドメインモデルパターンとヘキサゴナルアーキテクチャ(hexagonal-architecture)です。

講義では、最新のSpring、Web、JPA技術をもとにドメインモデルとヘキサゴナルアーキテクチャを実際に適用してみて、プロジェクト構造の把握、モジュール分離、コラボレーション方式、テスト戦略といった実務初期のコア悩みを一緒に解決していきます。このプロセスでは、ドメインモデルをリファクタリングして発展させる流れを体験することができます。

<ドメインモデルとヘキサゴナルアーキテクチャ>は、part1,2の2つの講義で構成されています。

Part1.メンバー機能を中心に、ドメインモデルとアーキテクチャのスケルトンを構築し、コアロジック設計、構造化、テストコードベースの開発方法を実践します。 *本講義

Part2.複雑な要件をカバーし、モデルをリデザインし、実践に必要な深い設計、さまざまなリファクタリング技術、テストサポートツールを適用します。

ドメインモデルとヘキサゴナルアーキテクチャ part1。

学習内容

ドメインモデルを中心とした開発戦略

ドメインの概念と関係を正確に反映するには、それを抽象化したドメインモデルが必要です。ドメイン主導設計(DDD)は、ドメイン専門家と開発チームが一緒にモデルを確立し発展させ、複雑な問題を効果的に解決するアプローチです。

講義では、複雑なドメインではなくても、DDDの重要な原則とパターンを実際のサービス開発に適用します。また、ドメインモデルをコードに自然に溶かし、継続的な統合を通じて発展させる方法も一緒に練習します。

コミュニケーションのためのドメインモデル文書の作成方法

ドメインモデル中心の開発が効果的になるためには、すべての開発チームのメンバーがドメインの専門家と一緒にモデルを作成してコミュニケーションできる必要があります。

そのためには、文書、コード、会議など、あらゆるコミュニケーションで単一の語彙システム、つまりユニバーサル言語(Ubiquitous Language)を一貫して使用することが重要です。

レッスンでは、この普遍的な言語とドメインモデルをマークダウン文書としてプロジェクトに書き込む方法を紹介し、コードの変更とともにモデルがどのように進化していくのかをまとめていきます。

ヘキサゴナルアーキテクチャの事実と誤解

ヘキサゴナルアーキテクチャはよく誤解されますが、Springの基本原則に従う開発者であれば、すでにその価値をある程度活用している可能性があります。

レッスンでは、ヘキサゴナルアーキテクチャの重要な概念、階層、インターフェイスの構成方法を調べ、アーキテクチャが提供する利点を効果的に得る方法を学びます。

簡単な原則だけを守ってもドメインロジックに集中することができます。

階層間依存関係ルールの適用

ヘキサゴナールアーキテクチャとドメインモデルパターンを一緒に適用すると、凝集度が高くメンテナンス性に優れた構造を作ることができます。ただし、これらの構造の価値を適切に活用するには、階層アーキテクチャの依存関係規則をよく守る必要があります。

講義では、各階層の責任に応じて機能をどのように配置するか、コード構成をどのようにすべきかを中心に、階層設計でよく見逃しやすい部分を深く扱います。

アグリガートを用いたモジュール構造設計

ドメイン主導設計で導入されたアグリゲートは、データ変更の単位を設計し、変更の一貫性を維持します。

アグリゲート内で満たさなければならない不変式をどのように見つけて扱うか、アグリゲートルートをどのように使用するのか、それをサポートするSpring Dataプロジェクトのリポジトリパターンはどのように使用するのかを見て、アグリゲートパターンを適用します。

アグリゲットとヘキサゴナールアーキテクチャを組み合わせて詳細モジュールを設定する方法も説明します。

JPAエンティティによるきちんとしたドメインオブジェクトの作成

JPA技術の特徴と目的を見て、JPAエンティティをドメインオブジェクトを効果的にする技術として活用する方法を紹介します。

過度のJPAアノテーションがドメインロジックと混在している問題を解決するための標準的なアプローチもお知らせします。この時、AI技術を活用してみます。

JPAエンティティをドメインと区別して使用する特別なケースについても話します。

アーキテクチャテストとコード検証、テスト戦略

作成したアプリケーションコードが外部に提供する機能が正しく作成されていることを確認するテストコードを作成します。テストでは直接確認が難しいが、運用環境で問題になる可能性がある、静的分析ツールを活用したコード検証方式も併せて適用し、コードの安定性と一貫性を高める方法を習得します。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • WebとDBを使うSpring技術での実務開発がどう進むか知りたい方

  • クリーンコード原則を適用して保守性に優れ生産性の高いシステム開発をご希望の方

  • サービス開発をリードする中級以上の開発者に成長したいジュニア開発者

  • 最新アーキテクチャと開発技法を学び、多大な期待を胸に働き始める新人、ジュニア開発者をリードしたいシニア開発者

前提知識、
必要でしょうか?

  • Java 言語

  • スプリングの基本原理の理解

  • ウェブAPIとJPAを使用するスプリングアプリケーション開発経験

こんにちは
です。

14,560

受講生

870

受講レビュー

402

回答

5.0

講座評価

8

講座

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

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

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

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

 

 

カリキュラム

全体

43件 ∙ (14時間 31分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

210件

5.0

210件の受講レビュー

  • Zin님의 프로필 이미지
    Zin

    受講レビュー 2

    平均評価 5.0

    5

    29% 受講後に作成

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

    • 토비
      知識共有者

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

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

    受講レビュー 2

    平均評価 5.0

    修正済み

    5

    100% 受講後に作成

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

    • 토비
      知識共有者

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

  • 삼류진사님의 프로필 이미지
    삼류진사

    受講レビュー 1

    平均評価 5.0

    5

    100% 受講後に作成

    링크드인에 남겼던 완강 소감을 인프런에도 옮겨둡니다. https://www.linkedin.com/posts/arawn_%EA%B8%B0%EB%8B%A4%EB%A6%AC%EB%8D%98-%EC%9D%B4%EC%9D%BC%EB%AF%BC%EB%8B%98%EC%9D%98-%EC%8B%9C%EB%A6%AC%EC%A6%88-%EA%B0%95%EC%9D%98-%EB%A1%9C%EB%93%9C%EB%A7%B5-%ED%86%A0%EB%B9%84%EC%9D%98-%ED%81%B4%EB%A6%B0-%EC%8A%A4%ED%94%84%EB%A7%81%EC%9D%98-%EC%B2%AB-%EC%A3%BC%EC%A0%9C%EC%9D%B8-activity-7352614457123987456-pleA?utm_source=share&utm_medium=member_desktop&rcm=ACoAABvezLwBBEWVnGUkIY_xxm2aE3-sGtVHt0g -- 이일민님의 강의는 이번에도 기대를 저버리지 않았습니다. 특유의 사려 깊고 친절한 설명은 물론, 라이브 코딩을 통해 사고의 흐름을 차분하게 풀어가는 방식이 특히 좋았습니다. 지금 어떤 생각을 하고 있는지, 어떤 의도로 코드를 작성하고 있는지를 조목조목 짚어주며 진행하는 모습은 감탄을 자아낼 정도였습니다. 강의를 따라가다 보면 마치 강사 본인이 되어 사고 과정을 그대로 체험하는 듯한 몰입감을 느낄 수 있었고, 이를 통해 자바와 스프링으로 애플리케이션을 개발할 때 도메인 모델 패턴과 헥사고날 아키텍처를 어떻게 적용할 수 있는지 자연스럽게 이해하게 됩니다. 기술적인 깊이도 뛰어났지만, 이번 강의에서 특히 인상 깊었던 점은 전문가로서 '기술을 대하는 태도'와 '학습 방법'을 몸소 보여준다는 점이었습니다. 첫째, 기술 학습에 대한 올바른 접근 방식을 명확하게 제시합니다. 헥사고날 아키텍처를 설명할 때는 이를 처음 제안한 앨리스터 코번의 원문과 핵심 주장을 기반으로 내용을 전개합니다. 이는 너무나 당연한 방식처럼 보이지만, 실제로 많은 이들이 1차 자료가 아닌 2차, 3차로 가공된 콘텐츠를 통해 기술을 접합니다. 가공된 자료는 이해를 돕는 데 유용할 수 있지만, 원저자의 의도가 희석되거나 왜곡될 위험도 존재합니다. 기술의 본질을 이해하려면 가능하면 원천 자료에 접근해야 한다는 점을 다시 한번 되새기게 했습니다. 둘째, 자신만의 논리를 갖춘 사고방식의 중요성을 실감할 수 있었습니다. 예를 들어 "Entity vs DTO" 수업에서는 프레젠테이션 계층에서 엔티티를 사용하는 것이 왜 문제가 되지 않는지에 대해 자신의 견해를 하나하나 논리적으로 증명해보여 주셨습니다. 개발자라면 어떤 기술적 결정을 내렸을 때, 그 이유를 외부 권위에 의존하지 않고 스스로의 논리로 설명할 수 있어야 합니다. 이는 당연하지만 실제로 실천하기는 쉽지 않은 부분인데, 이일민님은 그 당연한 것을 어떻게 구현할 수 있는지 직접 보여줍니다. 이 강의는 단순히 기술을 가르치는 데 그치지 않고, 개발자로서 갖춰야 할 사고방식과 태도까지 함께 전달하는 값진 경험이었습니다. 진지하게 개발을 대하고자 하는 분들께 적극 추천드립니다.

    • 토비
      知識共有者

      강의를 통해서 전달하고 싶었던 것을 잘 정리해주셨네요. 감사합니다.

  • MASKUN님의 프로필 이미지
    MASKUN

    受講レビュー 2

    平均評価 5.0

    5

    79% 受講後に作成

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

    • 토비
      知識共有者

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

  • 오길환님의 프로필 이미지
    오길환

    受講レビュー 3

    平均評価 5.0

    5

    98% 受講後に作成

    강의를 구매하고 나서 바로 빠르게 보고 수강평을 작성하고 싶었지만, 시간이 지나 이제야 후기를 남기게 되었습니다. 눈물.. 이번 강의 역시 '믿고 듣는 토비님 강의'라는 말이 괜히 나온 게 아니라는 걸 다시 한번 느낄 수 있었습니다!!! 최근 들어 많은 개발자들이 헥사고날 아키텍처에 대한 관심이 높아지면서 다양한 이야기들이 오가고 있는데요. 개념에 대한 오해도 그만큼 많아지고 있는 것 같습니다. 하지만 이번 강의에서는 그러한 오해를 풀기 위해 아키텍처의 정의부터 차근차근 짚어주시고, 왜 그런 구조가 필요한지 논리적으로 설명해 주셔서 매우 인상 깊었습니다. 특히, 단순히 이론에 그치는 것이 아니라 실제 사례와 함께 설명해 주셔서 이해가 훨씬 잘 되었습니다. 또한, 도메인 모델에 @Entity, @Column과 같은 JPA 애노테이션이 침범하는 것에 대해 많은 분들이 의문을 갖고, 때론 혼란스러워하는데요. 이 강의에서는 그 부분에 대해 깊이 있는 고민을 함께 나누고, 그에 대한 현실적인 해결 방향을 제시해 주신 점이 정말 좋았습니다. 실무에서 자주 마주치는 고민들에 대해 정면으로 마주하고, 하나씩 짚어가는 방식과 적절한 트레이드 오프를 설명해주시는 부분이 인상적이었어요! 최고였습니다. 그리고 개발을 하다 보면 점점 복잡도가 늘어나고, 그러다 보면 내가 만들었던 시스템의 흐름조차 놓치게 되는 경우가 많습니다. 그런데 강의에서는 그러한 복잡성을 어떻게 다뤄야 하는지, 복잡도를 정리하는 과정이 얼마나 중요한지를 체계적으로 보여주셨고, 그것을 기반으로 개발을 이어가는 접근 방식이 정말 인상 깊었습니다. 이런 부분은 여느 강의에서 보기 힘든, 실무적인 내용이 녹아 있었어요. 마치 토비님과 한 팀이 되어 함께 실제 프로젝트를 진행하는 느낌이 들 정도로 몰입감이 높았습니다. 그리고 무엇보다 좋았던 점은, 정답을 성급하게 제시하지 않고 함께 고민하면서 점진적으로 개선해 나가는 흐름이었습니다. 이 방식은 현실의 개발 환경과 너무도 닮아 있어서, 단순히 지식을 전달받는 것이 아니라, 실무에서 어떤 관점으로 문제를 바라봐야 하는지를 자연스럽게 터득할 수 있었습니다. 정말 재미있게 강의를 들을 수 있었던 경험이었습니다. 강의를 보며 과거에 개발했던 그 시절이 스쳐지나가면서 도파민이 생겨났고, 그 때가 그리워졌습니다. 정말 다음 강의도 기대하고 싶습니다! 정말 너무너무너무너무 재밌었어요! 이런 귀한 강의를 내주셔서 너무 감사합니닷!

    ¥14,716

    tobyileeの他の講座

    知識共有者の他の講座を見てみましょう!

    似ている講座

    同じ分野の他の講座を見てみましょう!