강의

멘토링

로드맵

Inflearn brand logo image
BEST
Programming

/

Back-end

Toby's Clean Spring - Mô hình Domain Model và Kiến trúc Hexagonal Part 1

Đây là bài giảng đầu tiên của Clean Spring, một chuỗi bài giảng cho phép đội ngũ phát triển startup ảo trải nghiệm quá trình phát triển nhanh, ổn định, linh hoạt và dễ bảo trì, bằng cách từng bước tuân theo Clean Code và nguyên tắc phát triển Spring, theo phương pháp gần với thực tế công việc. Sử dụng Domain Model Pattern và Hexagonal Architecture, bạn có thể nắm vững các kỹ thuật và chiến lược phát triển cần thiết trong giai đoạn phát triển ban đầu tập trung vào Domain.

(5.0) 150 đánh giá

1,835 học viên

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

Đánh giá từ những học viên đầu tiên

Dịch cái này sang tiếng Việt

  • Chiến lược thiết kế và phát triển tập trung vào mô hình miền

  • Thiết kế hướng miền (DDD): Mẫu và thực tiễn đa dạng

  • Đặc điểm và hiệu quả của Kiến trúc lục giác, cách áp dụng nó dễ dàng và đơn giản.

  • Cách sử dụng các kỹ thuật kiểm thử đa dạng và công cụ kiểm thử kiến trúc

  • Cách tạo mô hình miền tinh gọn từ các thực thể JPA bằng AI

  • Kỹ thuật xử lý ngoại lệ Spring Web mới nhất và cách dùng công cụ kiểm thử

  • Cấu hình mô-đun dùng 애그리거트

Trở thành một đội với Toby
Hoàn thành nghi lễ mùa xuân.

<Toby's Clean Spring> là khóa học nơi bạn có thể trải nghiệm toàn bộ quá trình, từ lập kế hoạch đến thiết kế, triển khai và tái cấu trúc, như thể đang diễn ra ngoài đời thực, trong khi phát triển dịch vụ giáo dục trực tuyến ảo 'Splearn'.

Bạn sẽ hợp tác với Toby và cùng nhau hoàn thành một dịch vụ duy nhất . Từ khâu lập kế hoạch đến triển khai và tái cấu trúc , bạn sẽ làm việc với Toby để cân nhắc một cách thực tế những gì cần xem xét và những quyết định cần đưa ra ở mỗi giai đoạn. Thông qua quá trình này, bạn sẽ phát triển khả năng hiểu được bối cảnh "khi nào và tại sao" một công nghệ là cần thiết và "tại sao một kiến trúc cụ thể được thiết kế".

Lộ trình Mùa xuân sạch của Toby
Chuỗi bài giảng này sẽ hướng dẫn bạn về mã sạch và các nguyên tắc phát triển Spring. Chuỗi bài giảng bao gồm quy trình phát triển ứng dụng Spring, từ mô hình hóa miền đến MSA và khả năng quan sát, trong bảy khóa học. ( Xem lộ trình >>)

336073_1

Lựa chọn cho Mã bền vững
Mùa xuân sạch

Clean Spring là một chiến lược thực tế áp dụng các nguyên tắc của "mã sạch" vào phát triển Spring . Mục tiêu của nó không chỉ đơn thuần là tạo ra mã nguồn đẹp mắt, mà còn cải thiện năng suất làm việc của nhóm và chất lượng mã nguồn lâu dài. Câu nói của Kent Beck, "Mã sạch hiệu quả", là một minh chứng rõ ràng cho triết lý cốt lõi này.

Khả năng bảo trì và năng suất bổ trợ lẫn nhau. Mã dễ thay đổi giúp bảo trì dễ dàng hơn, và những thay đổi nhanh chóng cũng giúp tăng năng suất. Tái cấu trúc là điều cần thiết để đạt được cấu trúc này, và mã kiểm thử là điều kiện tiên quyết.

Bài giảng này sẽ hướng dẫn bạn quy trình tái cấu trúc và viết các bài kiểm tra nhiều lần khi bạn thêm tính năng hoặc cấu trúc lại mã của mình.

Những hoạt động này được chúng tôi gọi là chiến lược Clean Spring và chúng sẽ giúp bạn suy nghĩ theo cách tạo ra mã có khả năng chống chịu với sự thay đổi.

(Bạn có thể xem câu chuyện chi tiết về Clean Spring trong video thuyết trình Infocon 2024. 👉 )

Bộ sách Mùa xuân sạch của Toby, đầu tiên

Mô hình miền và
Kiến trúc lục giác

Quá trình phát triển Clean Spring bắt đầu bằng việc hiểu sâu sắc vấn đề (miền) mà dịch vụ đang cố gắng giải quyết. Sự hiểu biết này sau đó được phản ánh trong mã nguồn, và các chiến lược cốt lõi để thiết kế cho sự phát triển ổn định ngay cả khi chức năng mở rộng là mô hình miền và kiến trúc lục giác.

Khóa học này sẽ khám phá ứng dụng thực tế của mô hình miền và kiến trúc lục giác, tận dụng các công nghệ Spring, web và JPA mới nhất . Chúng tôi cũng sẽ giải quyết các thách thức quan trọng trong giai đoạn đầu, chẳng hạn như cấu trúc dự án, phân tách mô-đun, phương pháp cộng tác và chiến lược kiểm thử. Thông qua quá trình này, bạn sẽ trải nghiệm quá trình tái cấu trúc và phát triển mô hình miền .

<Mô hình miền và kiến trúc lục giác> bao gồm hai bài giảng, Phần 1 và Phần 2.

Phần 1. Tập trung vào các hàm thành viên, chúng ta sẽ xây dựng mô hình miền và khung kiến trúc, thực hành thiết kế logic cốt lõi, cấu trúc và kiểm tra phát triển dựa trên mã. *Khóa học này

Phần 2. Thiết kế lại mô hình để giải quyết các yêu cầu phức tạp, áp dụng thiết kế chuyên sâu, nhiều kỹ thuật tái cấu trúc khác nhau và các công cụ hỗ trợ thử nghiệm cần thiết cho mục đích sử dụng thực tế.

Mô hình miền và kiến trúc lục giác Phần 1.

Nội dung học tập

Chiến lược phát triển tập trung vào mô hình miền

Để phản ánh chính xác các khái niệm và mối quan hệ trong một miền, cần có một mô hình miền trừu tượng. Thiết kế hướng miền (DDD) là một phương pháp giải quyết hiệu quả các vấn đề phức tạp bằng cách hợp tác với các chuyên gia trong lĩnh vực và nhóm phát triển để thiết lập và phát triển mô hình.

Trong khóa học này, chúng ta sẽ áp dụng các nguyên tắc và mô hình cốt lõi của DDD vào phát triển dịch vụ thực tế, ngay cả trong các lĩnh vực ít phức tạp hơn. Chúng ta cũng sẽ học cách tích hợp liền mạch các mô hình miền vào mã và phát triển chúng thông qua tích hợp liên tục.

Cách viết tài liệu mô hình miền cho giao tiếp

Để phát triển theo mô hình miền có hiệu quả, tất cả thành viên nhóm phát triển phải có khả năng tạo và truyền đạt các mô hình với các chuyên gia trong lĩnh vực đó.

Để đạt được điều này, điều quan trọng là phải sử dụng nhất quán một từ vựng duy nhất hoặc một ngôn ngữ phổ biến trong mọi hình thức giao tiếp, bao gồm tài liệu, mã và cuộc họp.

Trong bài giảng này, chúng tôi sẽ giới thiệu cách ghi lại mô hình ngôn ngữ và miền chung này trong một dự án dưới dạng tài liệu Markdown và chúng tôi cũng sẽ khám phá cách mô hình phát triển khi mã thay đổi.

Sự thật và quan niệm sai lầm về kiến trúc lục giác

Kiến trúc lục giác thường bị hiểu lầm, nhưng các nhà phát triển tuân theo các nguyên tắc cốt lõi của Spring có thể đã gặt hái được một số giá trị của nó.

Trong bài giảng này, bạn sẽ khám phá các khái niệm cốt lõi của kiến trúc lục giác, hệ thống phân cấp của nó, cách cấu trúc giao diện và tìm hiểu cách tận dụng hiệu quả các lợi ích mà nó mang lại.

Bằng cách tuân theo các nguyên tắc đơn giản, bạn có thể tập trung vào logic miền của mình và đặc biệt, bạn sẽ thực hành và áp dụng cách cấu trúc các bài kiểm tra độc lập với môi trường.

Áp dụng các quy tắc phụ thuộc giữa các lớp

Việc áp dụng kiến trúc lục giác và mô hình miền kết hợp tạo nên một cấu trúc có tính gắn kết cao và dễ bảo trì. Tuy nhiên, để tận dụng tối đa cấu trúc này, bạn phải tuân thủ các quy tắc phụ thuộc của kiến trúc phân cấp.

Bài giảng này đi sâu vào các khía cạnh thường bị bỏ qua của thiết kế phân cấp, tập trung vào cách sắp xếp các chức năng và cấu trúc mã theo trách nhiệm của từng lớp.

Thiết kế kết cấu mô-đun sử dụng cốt liệu

Tổng hợp, được giới thiệu trong thiết kế theo miền, giúp duy trì tính nhất quán của các thay đổi bằng cách thiết kế đơn vị thay đổi dữ liệu.

Chúng ta sẽ khám phá cách phát hiện và xử lý các bất biến phải được đáp ứng trong một tập hợp, cách sử dụng các gốc tập hợp và cách sử dụng mẫu kho lưu trữ trong các dự án Spring Data hỗ trợ nó, đồng thời áp dụng mẫu tập hợp.

Chúng tôi cũng giải thích cách sử dụng kiến trúc tổng hợp và kiến trúc lục giác cùng nhau để xây dựng các mô-đun chi tiết.

Tạo các đối tượng miền sạch với các thực thể JPA

Chúng tôi sẽ xem xét các tính năng và mục đích của công nghệ JPA và giới thiệu cách sử dụng các thực thể JPA như một công nghệ để tạo các đối tượng miền hiệu quả.

Chúng tôi cũng trình bày một phương pháp tiêu chuẩn để giải quyết vấn đề chú thích JPA quá mức xen lẫn với logic miền, bằng cách sử dụng công nghệ AI.

Chúng tôi cũng thảo luận về trường hợp đặc biệt khi các thực thể JPA được sử dụng riêng biệt với miền.

Kiểm thử kiến trúc, xác minh mã và chiến lược kiểm thử

Chúng tôi tạo mã kiểm thử để xác minh các chức năng được cung cấp cho bên ngoài trong mã ứng dụng đã viết là chính xác. Chúng tôi cũng áp dụng các phương pháp xác minh mã sử dụng các công cụ phân tích tĩnh, vốn khó xác minh trực tiếp thông qua các bài kiểm thử nhưng có khả năng gây ra sự cố trong môi trường sản xuất. Chúng tôi cũng tìm hiểu cách cải thiện tính ổn định và nhất quán của mã.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Người muốn biết cách phát triển thực tế với Spring dùng Web và DB.

  • Những ai mong muốn phát triển hệ thống có khả năng bảo trì vượt trội và năng suất cao thông qua việc áp dụng nguyên tắc Clean Code.

  • Junior Developer muốn trở thành Developer cấp trung trở lên dẫn dắt phát triển dịch vụ.

  • Senior developer muốn dẫn dắt các lập trình viên mới và junior thành thạo kiến trúc, kỹ thuật phát triển mới nhất và khởi nghiệp với nhiều kỳ vọng.

Cần biết trước khi bắt đầu?

  • Ngôn ngữ Java

  • Hiểu nguyên lý cơ bản của Spring

  • Kinh nghiệm phát triển ứng dụng Spring sử dụng Web API và JPA

Xin chào
Đây là

13,645

Học viên

748

Đánh giá

343

Trả lời

5.0

Xếp hạng

7

Các khóa học

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

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

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

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

 

 

Chương trình giảng dạy

Tất cả

43 bài giảng ∙ (14giờ 31phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

150 đánh giá

5.0

150 đánh giá

  • zin님의 프로필 이미지
    zin

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    29% đã tham gia

    初めてトビーさんと一緒に開発をした時、その時間を他の同僚開発者の方々も一緒に経験できたらと思いました。そこで、<トビーのクリーン・スプリング>というロードマップのアイデアを差し上げました。 そのロードマップの最初の講義が始まって、ワクワクしています! この講義でビジネスを共に悩み、開発に適用し、学び、実務で使ってみる…それぞれのやり方で楽しく受講していただけたら嬉しいです。 私も一生懸命受講して、まだ足りない部分を少しずつ補っていこうと思います。 ご一緒しませんか?🥰

    • tobyilee
      Giảng viên

      今回の講義は短い時間でしたが、Zinさんと一緒に開発し勉強した記憶を思い出しながら準備しました。その時作った簡単な例と目的を持ったアーキテクチャ構造とドメインロジックを扱う方法、テストコードをしっかり作成しリファクタリングしたものが、講義として再構成されました。現場で一緒に開発した時も、またその後に講義を企画し準備し公開する全ての瞬間に大変助けてくださり感謝いたします。 お忙しいとは思いますが、講義を再度ご確認いただき、今回はどのような感想だったか、ぜひお聞かせください。お待ちしております。 ありがとうございます。

  • choicore님의 프로필 이미지
    choicore

    Đánh giá 2

    Đánh giá trung bình 5.0

    Đã chỉnh sửa

    5

    100% đã tham gia

    講座がリリースされたというニュースを聞いて、週末に観ようと決心し、先ほど完講しました。 韓国のスプリング大将の業務スタイルとノウハウを間接的に体験できる貴重な時間でした。 難易度は初級に分類されていますが、難易度を別にしても、他の開発者の業務スタイルと思考方式は、どこでも簡単に聞けるものではないと思います。 モデルを設計しながら、持つべき役割、役割のために必要とする状態など、段階的にコードを変えていく過程と、時折人間味(誤字、漏れ)を見せてくださいますが、テストコードで識別できる、本当に数え切れないほど日常で発生しうる部分が、テストコードの価値をさらに示していると感じました。 Fixture, Mock(Stub)などの活用、検証すべき対象、行為、目的の識別など、単位、統合などの区別や、テストに関するノウハウがたくさんあります! junit-platform.properties 最高 MockMvcTester 最高 特に「ヘキサゴナルアーキテクチャの真実と誤解」セクションが印象深かったです。漠然としか知らなかったので、エリック・エヴァンスやアリスター・コバーンなどの創始者がどのように説いたのか、語っていた本質的な部分を的確に指摘してくださり、難しく感じていた部分をうまく整理してくださったようです。 この講座は次の方々に役立つと思います 設計を主導しなければならないシニア開発者の方々 ヘキサゴナルアーキテクチャプロジェクトを勉強し経験したが、深い理解が不足していると感じる方々 ドメインモデルパターン、トランザクションスクリプトパターン、ヘキサゴナルアーキテクチャについてきちんと学びたい方 スプリング大将がどのように開発しているか知りたい方 クリーンスプリング、スプリングとの統合で多くの利点を得た構成方式について学ぶことができました。ありがとうございます。 スプリングなしでは開発しません。スプリングはPOJOだ!!!

    • tobyilee
      Giảng viên

      いつも詳細な受講レビューを残してくださるチェヒョンさんですね。パターンと原則だけでなく、現時点のスプリングの最新技術も折に触れてお伝えするよう努めましたが、それを的確に捉えていただき、ありがとうございます。引き続き、優れた開発者としてご活躍されることを期待しております。ありがとうございます。

  • arawn님의 프로필 이미지
    arawn

    Đánh giá 1

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    LinkedInに残していた完走感想をInflearnにも移しておきます。 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 -- 이일민さんの講義は今回も期待を裏切りませんでした。特有の思慮深くKindな説明はもちろん、ライブコーディングを通じて思考の流れを落ち着いて解きほぐしていく方式が特に良かったです。今どんな考えをしているのか、どんな意図でコードを書いているのかを逐一指摘しながら進行する姿は感嘆を呼び起こすほどでした。講義について行くうちに、まるで講師本人になって思考過程をそのまま体験するような没入感を感じることができ、これを通じてJavaとSpringでアプリケーションを開発する際にドメインモデルパターンとヘキサゴナルアーキテクチャをどのように適用できるかを自然に理解するようになります。 技術的な深さも優れていましたが、今回の講義で特に印象深かった点は、専門家として「技術に対する態度」と「学習方法」を身をもって示すという点でした。 第一に、技術学習に対する正しいアプローチ方式を明確に提示します。ヘキサゴナルアーキテクチャを説明する際は、これを最初に提案したアリスター・コックバーンの原文と核心主張を基盤に内容を展開します。これはあまりにも当然な方式のように見えますが、実際に多くの人が1次資料ではない2次、3次に加工されたコンテンツを通じて技術に接しています。加工された資料は理解を助けるのに有用ですが、原著者の意図が希釈されたり歪曲される危険も存在します。技術の本質を理解するには、可能なら原典資料にアクセスしなければならないという点を改めて振り返らせました。 第二に、自分だけの論理を備えた思考方式の重要性を実感できました。例えば「Entity vs DTO」授業では、プレゼンテーション層でエンティティを使用することがなぜ問題にならないのかについて、自分の見解を一つ一つ論理的に証明して見せてくださいました。開発者なら何らかの技術的決定を下した時、その理由を外部権威に依存せず自分の論理で説明できなければなりません。これは当然ですが実際に実践するのは容易ではない部分ですが、이일민さんはその当然なことをどのように実現できるかを直接示します。 この講義は単純に技術を教えるだけに留まらず、開発者として備えるべき思考方式と態度まで一緒に伝える価値ある経験でした。真剣に開発に向き合おうとする方々に積極的にお勧めします。

    • tobyilee
      Giảng viên

      講義を通じてお伝えしたかったことをよくまとめていただきましたね。ありがとうございます。

  • maskunflower23707님의 프로필 이미지
    maskunflower23707

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    79% đã tham gia

    混沌と無秩序に満ちた場所で、トビーさんが光あれと言ったところ、光が現れて秩序が正された。 私が多くの悩みを抱えていたドメインモデルパターンとヘキサゴナルアーキテクチャについての正論を見ている気分です。お勧めします。

    • tobyilee
      Giảng viên

      いえ、私にはそこまで優れた能力があるわけではありません。 ただ、熱心に勉強し、確認してきたことを、少し混乱されている方や、技術の価値をうまく得られていない方々を見た時に、残念に思ったことを思い出しながら、一生懸命説明しようと努力しました。それでも、私にも間違いがあるかもしれません。 多くの方々がご意見をくださっているので、私もさらに学び、準備して、今後の講義で引き続きお伝えしていきます。

  • zecongbi님의 프로필 이미지
    zecongbi

    Đánh giá 5

    Đánh giá trung bình 5.0

    5

    30% đã tham gia

    まだ講義を半分しか聞いていませんが、実務で誤解していた点を改めて認識する良い機会となりました。 今後も引き続き受講し、多くの知識を学んでいきたいと思います。 良い講義をありがとうございます。

    • tobyilee
      Giảng viên

      役に立つ内容がたくさんあったことを期待しております。良い評価を残してくださり、ありがとうございます。

2.541.007 ₫

Khóa học khác của tobyilee

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!