강의

멘토링

로드맵

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) 167 đánh giá

1,944 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,852

Học viên

776

Đánh giá

349

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ả

167 đánh giá

5.0

167 đánh giá

  • Zin님의 프로필 이미지
    Zin

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    29% đã tham gia

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

    • 토비
      Giảng viên

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

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

    Đá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 다!!!

    • 토비
      Giảng viên

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

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

    Đánh giá 1

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    링크드인에 남겼던 완강 소감을 인프런에도 옮겨둡니다. 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" 수업에서는 프레젠테이션 계층에서 엔티티를 사용하는 것이 왜 문제가 되지 않는지에 대해 자신의 견해를 하나하나 논리적으로 증명해보여 주셨습니다. 개발자라면 어떤 기술적 결정을 내렸을 때, 그 이유를 외부 권위에 의존하지 않고 스스로의 논리로 설명할 수 있어야 합니다. 이는 당연하지만 실제로 실천하기는 쉽지 않은 부분인데, 이일민님은 그 당연한 것을 어떻게 구현할 수 있는지 직접 보여줍니다. 이 강의는 단순히 기술을 가르치는 데 그치지 않고, 개발자로서 갖춰야 할 사고방식과 태도까지 함께 전달하는 값진 경험이었습니다. 진지하게 개발을 대하고자 하는 분들께 적극 추천드립니다.

    • 토비
      Giảng viên

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

  • MASKUN님의 프로필 이미지
    MASKUN

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    79% đã tham gia

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

    • 토비
      Giảng viên

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

  • zecongbi님의 프로필 이미지
    zecongbi

    Đánh giá 5

    Đánh giá trung bình 5.0

    5

    30% đã tham gia

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

    • 토비
      Giảng viên

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

Ưu đãi có thời hạn

90.750 ₫

25%

2.540.622 ₫

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!