Clean Spring của Toby - Mô hình Domain Model và Kiến trúc Hexagonal Phần 1

Đây là bài giảng đầu tiên trong chuỗi bài giảng Clean Spring, nơi bạn có thể trải nghiệm quá trình một nhóm phát triển startup giả tưởng phát triển theo từng bước dựa trên các nguyên tắc Clean Code và Spring để tạo ra sản phẩm nhanh chóng, ổn định, linh hoạt và dễ bảo trì, theo cách tương tự như quy trình làm việc thực tế. Bạn có thể học hỏi các kỹ năng và chiến lược phát triển cần thiết trong giai đoạn đầu tập trung vào Domain bằng cách sử dụng Domain Model Pattern và kiến trúc Hexagonal.

(5.0) 267 đánh giá

2,280 học viên

Độ khó Cơ bản

Thời gian Không giới hạn

Java
Java
Spring
Spring
Spring Boot
Spring Boot
JPA
JPA
hexagonal-architecture
hexagonal-architecture
Java
Java
Spring
Spring
Spring Boot
Spring Boot
JPA
JPA
hexagonal-architecture
hexagonal-architecture

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

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

5.0

5.0

공부

100% đã tham gia

Nếu bạn là người muốn viết code không chỉ đơn thuần hoạt động tốt về mặt chức năng, mà còn dễ bảo trì và có cấu trúc gọn gàng, thì tôi nghĩ khóa học này sẽ có ích rất nhiều. Ngay cả những developer có kinh nghiệm phát triển với Spring thì cũng thường bối rối về việc thực tế phải áp dụng thiết kế tập trung vào domain như thế nào, và khóa học này hướng dẫn rất tốt để có thể giải quyết từng vấn đề băn khoăn đó. Đặc biệt, cách giải thích kết hợp lý thuyết và thực hành về domain model là gì, tại sao nó quan trọng và làm thế nào để áp dụng vào cấu trúc code thực tế đã rất ấn tượng. Ban đầu có thể cảm thấy hơi khó hiểu, nhưng với khả năng truyền đạt điềm tĩnh và thân thiện của thầy Toby, tôi đã có thể theo dõi đến cuối và tiếp thu được các khái niệm. Hơn nữa, vì có các ví dụ áp dụng ngay vào thực tế và quá trình refactoring thực tế, tôi nghĩ đây là khóa học vừa có tính nhập vai vừa có tính thực dụng trong học tập. Nếu bạn là developer đã từng nghĩ "giờ mình cũng muốn thử thiết kế clean", thì thông qua khóa học này bạn sẽ có thể xác định được hướng đi cụ thể hơn. Tôi chân thành khuyến khích những ai muốn có góc nhìn về ứng dụng tập trung vào domain và business thay vì chỉ dừng lại ở việc cài đặt chức năng.

5.0

mon0mon

100% đã tham gia

Với tư cách là một lập trình viên junior, tôi chỉ có kiến thức rất cơ bản về kiến trúc hexagonal khi áp dụng nó vào phát triển, và sau đó tôi đã biết đến khóa học này. Thông qua việc tham gia khóa học, tôi có thể làm rõ ràng những khái niệm mà trước đây tôi chưa hiểu đúng hoặc đã hiểu sai. Đặc biệt, việc giảng viên giải thích sâu sắc và tỉ mỉ những điểm mà lập trình viên junior dễ bị nhầm lẫn hoặc những nội dung thường bị bỏ qua một cách vô thức đã giúp ích rất nhiều. Trong quá trình phát triển, có nhiều trường hợp chúng ta chỉ đi theo xu hướng như "nghe nói dạo này làm thế này", "nghe nói cái đó tốt", nhưng trong khóa học này, việc giảng viên chỉ ra tại sao phải làm như vậy, vượt qua những xu hướng đó, và dựa trên tiêu chuẩn nào để thiết kế như vậy đã gây ấn tượng sâu sắc cho tôi. Việc giải thích cơ sở của các khái niệm dựa trên các tài liệu chính thức như tiêu chuẩn RFC, và việc cùng lúc cho biết cách áp dụng chúng một cách hiệu quả vào Spring là điểm mà tôi đặc biệt ghi nhớ. Ngoài ra, khi các lỗi hoặc tình huống ngoại lệ không mong muốn xảy ra trong suốt khóa học, tôi đã học được rất nhiều điều khi quan sát quá trình giải quyết chúng. Tôi nghĩ rằng quá trình gỡ lỗi (debugging) bao gồm việc diễn giải thông báo lỗi và phân tích tình hình hiện tại để suy luận nguyên nhân là một phần quan trọng không thể thiếu trong phát triển. Cá nhân tôi, đây là một trải nghiệm quý giá như thể tôi đang lập trình cặp đôi (pair programming) cùng với Toby, và tôi cũng khuyên các lập trình viên khác nhất định nên trải nghiệm một lần. 😊

5.0

beom2day

98% đã tham gia

Xin chào. Tôi có sách Spring của Toby, nhưng đây là lần đầu tôi nghe giảng. Tôi thấy rất hay ở chỗ thầy chỉ dẫn tỉ mỉ những phần cần chú ý và quan tâm ở cấp độ code. Tất nhiên những nội dung khác cũng rất hữu ích, nhưng những điều cơ bản như tại sao lại xuống dòng theo cách này, cách phân chia theo đơn vị ý nghĩa, v.v... những thứ mà có thể người ta nghĩ "có cần phải giải thích cả những cái này không?" thì thầy cũng giải thích, điều đó rất tuyệt. Thực ra tôi khá quan tâm đến những điều này. Vì vậy, ở điểm đó, việc thầy giải thích mà không cần tôi phải hỏi riêng thì rất tốt. Và tôi cũng đọc những câu hỏi mà các học viên đăng trên cộng đồng. Mỗi câu trả lời đều chứa đựng những giải thích đầy đủ nên rất hữu ích. Cảm ơn ạ ^^ Tôi đang học Phần 4, sau khi hoàn thành khóa học, tôi sẽ quay lại để viết đánh giá đầy đủ. Cảm ơn ạ ^^ -------------------------Đánh giá sau khi hoàn thành khóa học Trước khi tham gia khóa học này, kiến thức nền tảng của tôi về Clean Architecture, khái niệm Domain, Test Code, Object-Oriented Code, Refactoring, v.v. còn rời rạc. Sau khi xem bài giảng về phương pháp phát triển DDD của Hexagonal Architecture, tôi cảm thấy những kiến thức rời rạc đó đang được tập hợp lại. Cuối cùng... tôi một lần nữa nhận ra rằng những kiến thức nền tảng mà tôi có đều nhằm mục đích viết Test Code thật tốt. Việc có thể nhìn thấy chi tiết quá trình phát triển từ thiết kế ban đầu, Unit Test cho đến thiết kế kiến trúc có vẻ rất hữu ích. Cứ như thể tôi đang trực tiếp quan sát quá trình phát triển ở bên cạnh vậy. Tôi đã học được rất nhiều kiến thức mới, và tôi sẽ cố gắng tiếp thu hết chúng trước khi phần 2 ra mắt. Bất kỳ thắc mắc nào phát sinh trong quá trình ôn tập, tôi sẽ đặt câu hỏi để biến chúng thành của riêng mình. Cảm ơn. Tôi mong chờ phần 2!!!

Bạn sẽ nhận được điều này sau khi học.

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

  • Các mẫu và thực hành đa dạng của Thiết kế hướng tên miền (DDD)

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

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

  • Cách sử dụng AI để biến thực thể JPA thành mô hình miền (domain model) sạch sẽ

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

  • Cấu trúc mô-đun sử dụng Aggregate

Trở thành một đội với Toby để hoàn thiện
dịch vụ Spring.

<Toby's Clean Spring> là khóa học giúp bạn cùng phát triển dịch vụ giáo dục trực tuyến giả định mang tên ‘Splearn’, qua đó trải nghiệm toàn bộ quy trình từ lập kế hoạch, thiết kế, triển khai đến refactoring như trong thực tế.

Các bạn sẽ trở thành một đội cùng với Toby để cùng nhau hoàn thành một dịch vụ. Từ khâu lập kế hoạch đến triển khai và tái cấu trúc (refactoring), ở mỗi giai đoạn, bạn sẽ cùng Toby suy nghĩ và đưa ra quyết định từ góc nhìn thực tế về việc nên cân nhắc điều gì và nên đưa ra lựa chọn nào. Thông qua quá trình này, bạn sẽ rèn luyện được khả năng thấu hiểu ngữ cảnh về việc một công nghệ nào đó "cần thiết khi nào và tại sao", cũng như "tại sao cấu trúc này lại được thiết kế như vậy".

Lộ trình <Toby's Clean Spring>
Đây là chuỗi bài giảng giúp bạn nắm vững các nguyên tắc phát triển Spring và Clean Code. Nội dung bao gồm quá trình phát triển của ứng dụng Spring từ mô hình hóa domain đến MSA và khả năng quan sát (observability) thông qua 7 khóa học. (Xem lộ trình>>)

336073_1

Lựa chọn cho mã nguồn bền vững
Clean Spring

Clean Spring là chiến lược thực tiễn áp dụng các nguyên tắc của 'Clean Code' vào việc phát triển Spring. Mục tiêu không chỉ đơn thuần là tạo ra mã nguồn dễ nhìn, mà là cùng nhau nâng cao năng suất của nhóm và chất lượng mã nguồn trong dài hạn. Câu nói của Kent Beck "Mã sạch hoạt động được (Clean Code That Works)" đã thể hiện rõ triết lý cốt lõi đó.

Khả năng bảo trì và năng suất là tiền đề của nhau. Mã nguồn dễ thay đổi giúp việc bảo trì trở nên dễ dàng, và chỉ khi có thể thay đổi nhanh chóng thì năng suất mới tăng lên. Để tạo ra cấu trúc này, việc tái cấu trúc (refactoring) là thiết yếu, và tiền đề của nó chính là mã kiểm thử (test code).

Trong khóa học này, tôi sẽ cho các bạn thấy quá trình lặp đi lặp lại của việc trực tiếp tái cấu trúc (refactoring) và viết mã kiểm thử mỗi khi thêm tính năng mới hoặc sắp xếp lại cấu trúc.

Những thực hành này chính là chiến lược Clean Spring, và thông qua đó, bạn sẽ nuôi dưỡng được sức mạnh tư duy để tạo ra mã nguồn mạnh mẽ trước những thay đổi.

(Bạn có thể xem thêm chi tiết về Clean Spring trong video thuyết trình tại Infcon 2024.👉 )

Chuỗi bài viết Clean Spring của Toby, phần đầu tiên

Mô hình Domain và
Kiến trúc Hexagonal

Bắt đầu phát triển Clean Spring là việc thấu hiểu sâu sắc vấn đề (domain) mà dịch vụ đang cố gắng giải quyết. Và chiến lược cốt lõi để phản ánh điều này vào mã nguồn, đồng thời thiết kế sao cho hệ thống có thể phát triển ổn định ngay cả khi mở rộng tính năng, chính là Domain Model Pattern và kiến trúc lục giác (hexagonal-architecture).

Trong khóa học này, chúng ta sẽ áp dụng thực tế mô hình miền (domain model) và kiến trúc lục giác (hexagonal architecture) dựa trên các công nghệ Spring, Web và JPA mới nhất, đồng thời cùng nhau giải quyết các vấn đề cốt lõi trong giai đoạn đầu của dự án thực tế như thiết lập cấu trúc dự án, phân chia module, phương thức hợp tác và chiến lược kiểm thử. Trong quá trình này, bạn có thể trải nghiệm luồng phát triển và tái cấu trúc mô hình miền.

<Mô hình Domain và Kiến trúc Hexagonal> bao gồm hai phần bài giảng: part1 và part2.

Part1.Tập trung vào tính năng thành viên, xây dựng khung sườn cho mô hình miền và kiến trúc, đồng thời thực hành thiết kế logic cốt lõi, cấu trúc hóa và phương pháp phát triển dựa trên mã kiểm thử. *Bài giảng này

Part2. Xử lý các yêu cầu phức tạp và thiết kế lại mô hình, đồng thời áp dụng các kỹ thuật thiết kế chuyên sâu, các phương pháp tái cấu trúc đa dạng và các công cụ hỗ trợ kiểm thử cần thiết trong thực tế.

Mô hình Domain và Kiến trúc Hexagonal phần 1.

Nội dung học tập

Chiến lược phát triển lấy mô hình miền làm trung tâm

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

Trong khóa học này, ngay cả khi không phải là một domain phức tạp, chúng ta vẫn sẽ áp dụng các nguyên tắc và mô hình cốt lõi của DDD vào việc phát triển dịch vụ thực tế. Ngoài ra, chúng ta cũng sẽ cùng thực hành cách lồng ghép domain model vào mã nguồn một cách tự nhiên và phát triển nó thông qua việc tích hợp liên tục.

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

Để việc phát triển lấy mô hình miền làm trung tâm đạt hiệu quả, tất cả các thành viên trong nhóm phát triển phải có khả năng cùng các chuyên gia miền xây dựng mô hình và giao tiếp với nhau.

Để đạt được điều này, việc sử dụng nhất quán một hệ thống từ vựng duy nhất, hay còn gọi là Ngôn ngữ chung (Ubiquitous Language), trong mọi hoạt động giao tiếp như tài liệu, mã nguồn và các cuộc họp là rất quan trọng.

Trong bài giảng, tôi sẽ giới thiệu cách ghi lại ngôn ngữ phổ quát và mô hình miền này vào dự án dưới dạng tài liệu Markdown, đồng thời cùng xem xét cách mô hình phát triển song hành với những thay đổi trong mã nguồn.

Sự thật và những hiểu lầm về kiến trúc Hexagonal

Kiến trúc Hexagonal thường bị hiểu lầm, nhưng nếu bạn là một nhà phát triển tuân thủ các nguyên tắc cơ bản của Spring, bạn có thể đã và đang tận dụng giá trị của nó ở một mức độ nào đó.

Trong bài giảng, chúng ta sẽ tìm hiểu về các khái niệm cốt lõi, cấu trúc tầng và cách thiết lập interface của kiến trúc Hexagonal, từ đó học cách khai thác hiệu quả những lợi ích mà kiến trúc này mang lại.

Chỉ cần tuân thủ những nguyên tắc đơn giản, bạn có thể tập trung vào logic domain, và đặc biệt chúng ta sẽ thực hành cách xây dựng các bài kiểm tra (test) độc lập với môi trường.

Áp dụng quy tắc quan hệ phụ thuộc giữa các tầng

Khi áp dụng kiến trúc Hexagonal cùng với mô hình Domain Model, bạn có thể tạo ra một cấu trúc có tính gắn kết cao và khả năng bảo trì tuyệt vời. Tuy nhiên, để tận dụng tối đa giá trị của cấu trúc này, bạn phải tuân thủ nghiêm ngặt các quy tắc về quan hệ phụ thuộc trong kiến trúc phân tầng.

Trong bài giảng, chúng tôi sẽ tập trung sâu vào cách sắp xếp các chức năng theo trách nhiệm của từng tầng và cách cấu trúc mã nguồn, đồng thời đi sâu vào những khía cạnh thường bị bỏ lỡ trong thiết kế cấu trúc phân tầng.

Thiết kế cấu trúc mô-đun sử dụng Aggregate

Aggregate được giới thiệu trong Thiết kế hướng tên miền (Domain-Driven Design) giúp duy trì tính nhất quán của sự thay đổi bằng cách thiết kế đơn vị thay đổi dữ liệu.

Chúng ta sẽ tìm hiểu cách phát hiện và xử lý các quy tắc bất biến (invariant) cần được đáp ứng trong một Aggregate, cách sử dụng Aggregate Root như thế nào, và cách sử dụng Repository Pattern của dự án Spring Data để hỗ trợ điều đó, từ đó áp dụng mô hình Aggregate.

Nó cũng giải thích cách cấu trúc các mô-đun chi tiết bằng cách sử dụng kết hợp Aggregate và kiến trúc Hexagonal.

Viết các đối tượng domain gọn gàng bằng JPA Entity

Chúng tôi sẽ xem xét các đặc điểm và mục đích của công nghệ JPA, đồng thời giới thiệu cách sử dụng thực thể JPA như một kỹ thuật để tạo ra các đối tượng domain một cách hiệu quả.

Tôi cũng sẽ hướng dẫn phương pháp tiếp cận tiêu chuẩn để giải quyết vấn đề các annotation JPA quá mức bị trộn lẫn với logic domain. Trong quá trình này, chúng ta cũng sẽ thử vận dụng công nghệ AI.

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

Kiểm thử kiến trúc, kiểm chứng mã nguồn và chiến lược kiểm thử

Chúng tôi tạo mã kiểm thử để xác nhận xem các chức năng mà mã ứng dụng đã viết cung cấp cho bên ngoài có được soạn thảo chính xác hay không. Đồng thời, chúng tôi cũng áp dụng phương pháp kiểm chứng mã nguồn bằng các công cụ phân tích tĩnh đối với những vấn đề khó kiểm tra trực tiếp bằng kiểm thử nhưng có thể gây lỗi trong môi trường vận hành, từ đó học cách nâng cao tính ổn định và nhất quán của mã nguồn.

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

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

  • Những ai muốn biết quá trình phát triển thực tế diễn ra như thế nào khi sử dụng công nghệ Spring kết hợp với Web và DB.

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

  • Nhà phát triển cấp dưới (Junior) muốn phát triển thành nhà phát triển cấp trung (Mid-level) trở lên, dẫn dắt việc phát triển dịch vụ.

  • Những lập trình viên senior muốn dẫn dắt những lập trình viên mới vào nghề hoặc cấp junior, những người bắt đầu công việc với sự kỳ vọng lớn lao và mong muốn học hỏi các kiến trúc cũng như kỹ thuật phát triển mới nhất.

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

  • Ngôn ngữ Java

  • Thấu hiểu các 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à tobyilee

15,896

Học viên

1,044

Đánh giá

421

Trả lời

5.0

Xếp hạng

8

Các khóa học

Tôi là một nhà phát triển phần mềm đang sống tại Úc. Tôi đã có 30 năm kinh nghiệm phát triển các hệ thống và dịch vụ trong nhiều lĩnh vực khác nhau.

Tôi yêu thích Spring Framework cùng các công nghệ liên quan và chủ yếu sử dụng các ngôn ngữ dựa trên JVM.

Tôi đã thành lập và hoạt động trong Nhóm người dùng Spring Hàn Quốc (KSUG), đồng thời cũng là tác giả của cuốn sách mang tên Toby's Spring.

Tôi thích trò chuyện về nhiều chủ đề khác nhau liên quan đến phát triển phần mềm.

Tôi đã thành lập và hoạt động trong Cộng đồng người dùng Spring Hàn Quốc (KSUG), đồng thời cũng là tác giả của cuốn sách mang tên "Toby's Spring". Tôi thích trò chuyện về nhiều chủ đề đa dạng liên quan đến phát triển phần mềm.

Tôi đã thành lập và hoạt động trong Cộng đồng người dùng Spring Hàn Quốc (KSUG), đồng thời cũng là tác giả của cuốn sách "Toby's Spring". Tôi thích trò chuyện về nhiều chủ đề đa dạng liên quan đến phát triển phần mềm.

Thêm

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ả

267 đánh giá

5.0

267 đánh giá

  • maskunflower23707님의 프로필 이미지
    maskunflower23707

    Đánh giá 4

    Đánh giá trung bình 5.0

    5

    79% đã tham gia

    Tại nơi đầy hỗn loạn và vô trật tự, Toby-nim đã phán 'Hãy có ánh sáng', và ánh sáng đã xuất hiện, thiết lập lại trật tự. Tôi có cảm giác như đang đọc được một lý thuyết chuẩn mực về Domain Model Pattern và Hexagonal Architecture, những điều tôi đã trăn trở rất nhiều. Xin giới thiệu.

    • tobyilee
      Giảng viên

      Ối.. Tôi không phải là người có khả năng phi thường như vậy đâu. Chỉ là, tôi nhớ những điều đáng tiếc khi thấy một số người gặp chút bối rối hoặc không khai thác được giá trị của công nghệ, nên tôi đã cố gắng hết sức để giải thích dựa trên những gì mình đã học và xác nhận. Mặc dù vậy, tôi cũng có thể có những chỗ sai sót. Vì nhiều người đang đóng góp ý kiến, tôi sẽ học hỏi và chuẩn bị thêm để tiếp tục chia sẻ trong các bài giảng tiếp theo.

  • arawn님의 프로필 이미지
    arawn

    Đánh giá 1

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    Tôi chuyển cảm nhận hoàn thành khóa học đã để lại trên LinkedIn sang 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 -- Bài giảng của 이일민님lần này cũng không làm tôi thất vọng. Không chỉ có phong cách giải thích sâu sắc và tử tế đặc trưng của anh ấy, mà cách triển khai dòng suy nghĩ một cách bình tĩnh thông qua live coding đặc biệt tuyệt vời. Cách anh ấy chỉ ra từng điểm một về việc đang nghĩ gì, với ý định gì khi viết code thật đáng kinh ngạc. Khi theo dõi bài giảng, tôi có thể cảm nhận được sự đắm chìm như thể trở thành chính giảng viên và trải nghiệm trực tiếp quá trình tư duy, qua đó tự nhiên hiểu được cách áp dụng Domain Model Pattern và Hexagonal Architecture khi phát triển ứng dụng với Java và Spring. Độ sâu kỹ thuật rất xuất sắc, nhưng điều đặc biệt ấn tượng trong bài giảng này là việc thể hiện 'thái độ đối với công nghệ' và 'phương pháp học tập' như một chuyên gia. Thứ nhất, đưa ra cách tiếp cận đúng đắn về việc học công nghệ một cách rõ ràng. Khi giải thích về Hexagonal Architecture, anh ấy triển khai nội dung dựa trên bài viết gốc và quan điểm cốt lõi của Alistair Cockburn - người đầu tiên đề xuất kiến trúc này. Điều này có vẻ quá đương nhiên, nhưng thực tế nhiều người tiếp cận công nghệ thông qua nội dung đã được gia công lần 2, lần 3 thay vì tài liệu gốc. Tài liệu đã gia công có thể hữu ích trong việc hỗ trợ hiểu biết, nhưng cũng tồn tại nguy cơ ý định của tác giả gốc bị pha loãng hoặc bóp méo. Điều này giúp tôi nhắc nhở lại rằng để hiểu bản chất của công nghệ, cần tiếp cận tài liệu nguồn gốc càng nhiều càng tốt. Thứ hai, tôi có thể cảm nhận được tầm quan trọng của tư duy có logic riêng. Ví dụ trong bài "Entity vs DTO", anh ấy đã chứng minh từng cái một cách logic về quan điểm của mình về việc tại sao sử dụng entity ở presentation layer không phải là vấn đề. Khi một developer đưa ra quyết định kỹ thuật nào đó, họ phải có thể giải thích lý do bằng logic của chính mình chứ không phụ thuộc vào thẩm quyền bên ngoài. Đây là điều đương nhiên nhưng thực tế không dễ thực hiện, và 이일민님 đã trực tiếp cho thấy cách thực hiện điều đương nhiên đó. Bài giảng này không chỉ dừng lại ở việc dạy công nghệ đơn thuần, mà còn truyền đạt cả tư duy và thái độ cần có của một developer, thật sự là một trải nghiệm quý giá. Tôi rất khuyến khích cho những ai muốn nghiêm túc trong việc phát triển phần mềm.

    • tobyilee
      Giảng viên

      Bạn đã tóm tắt rất tốt những gì tôi muốn truyền tải qua bài giảng. Cảm ơn bạn.

  • zin님의 프로필 이미지
    zin

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    29% đã tham gia

    Khi lần đầu làm phát triển cùng Toby님, tôi đã mong các đồng nghiệp phát triển khác cũng được trải nghiệm những khoảng thời gian đó. Vì vậy, tôi đã đưa ra ý tưởng về lộ trình mang tên <토비의 클린 스프링>. Buổi học đầu tiên của lộ trình đó đã bắt đầu, tôi cảm thấy hồi hộp! Với buổi học này, tôi mong mọi người sẽ cùng nhau suy nghĩ về business, áp dụng vào phát triển, học hỏi, thử áp dụng vào thực tế.. và học một cách thú vị theo cách riêng của mình. Tôi cũng sẽ chăm chỉ học và dần dần lấp đầy những phần còn thiếu sót. Ai muốn tham gia cùng không~?🥰

    • tobyilee
      Giảng viên

      Khóa học lần này tuy ngắn ngủi nhưng tôi đã chuẩn bị nó trong lúc hồi tưởng lại những kỷ niệm cùng Zin phát triển và học tập. Những ví dụ đơn giản mà chúng tôi đã tạo ra lúc đó, cấu trúc kiến trúc có mục đích, cách xử lý logic miền, việc viết và refactor code test tốt, tất cả đã được tái tạo thành bài giảng. Cảm ơn bạn vì đã giúp đỡ rất nhiều trong suốt quá trình phát triển cùng nhau tại hiện trường, và cả sau đó khi lên kế hoạch, chuẩn bị và công bố bài giảng. Dù bận rộn, xin hãy xem lại bài giảng và nhất định để lại cảm nhận của bạn về lần này. Tôi sẽ chờ đợi. Cảm ơn bạn.

  • choicore님의 프로필 이미지
    choicore

    Đánh giá 2

    Đánh giá trung bình 5.0

    Đã chỉnh sửa

    5

    100% đã tham gia

    Nghe tin khóa học đã ra mắt, tôi quyết tâm sẽ xem vào cuối tuần và vừa hoàn thành nó. Đây là một khoảng thời gian quý giá để có thể trải nghiệm gián tiếp phong cách làm việc và bí quyết của bậc thầy Spring Hàn Quốc. Mặc dù độ khó được phân loại là sơ cấp, nhưng tôi nghĩ rằng phong cách làm việc và tư duy của các nhà phát triển khác không phải là điều dễ dàng tìm thấy ở bất cứ đâu, bất kể độ khó. Khi thiết kế model, quá trình thay đổi code dần dần, bao gồm các vai trò cần có, trạng thái cần thiết cho vai trò, v.v., và đôi khi họ cũng thể hiện sự "con người" (lỗi chính tả, thiếu sót) mà có thể được xác định bằng test code. Tôi cảm thấy rằng những phần có thể xảy ra vô số lần trong cuộc sống hàng ngày thực sự cho thấy giá trị của test code nhiều hơn. Có rất nhiều bí quyết về testing như việc sử dụng Fixture, Mock (Stub), v.v., việc xác định đối tượng, hành vi, mục đích cần kiểm tra, hay sự phân biệt giữa unit, integration, v.v.! junit-platform.properties thật tuyệt vời MockMvcTester thật tuyệt vời Đặc biệt, phần "Sự thật và những hiểu lầm về kiến trúc Hexagonal" rất ấn tượng. Vì tôi chỉ biết lỏm bỏm, nên việc họ chỉ ra rõ ràng cách mà những người sáng lập như Eric Evans và Alistair Cockburn đã diễn giải và những phần cốt lõi họ đã nói dường như đã giúp sắp xếp lại những phần tôi cảm thấy khó khăn. Khóa học này có thể hữu ích cho những người sau: Các nhà phát triển cấp cao cần dẫn dắt thiết kế Những người đã học và có kinh nghiệm với dự án kiến trúc Hexagonal nhưng cảm thấy thiếu hiểu biết sâu sắc Những người muốn tìm hiểu đúng cách về Domain Model Pattern, Transaction Script Pattern, Hexagonal Architecture Những người muốn biết bậc thầy Spring phát triển như thế nào Tôi đã học được về Clean Spring và cách cấu hình đã đạt được nhiều lợi ích nhờ tích hợp với Spring. Xin cảm ơn. Không có Spring thì không phát triển. Spring là POJO!!!

    • tobyilee
      Giảng viên

      À, là Jaehyung đây rồi, người luôn để lại những đánh giá khóa học chi tiết. Tôi đã cố gắng lồng ghép giới thiệu không chỉ các mẫu và nguyên tắc mà còn cả các công nghệ Spring mới nhất tại thời điểm hiện tại, và cảm ơn bạn đã nắm bắt được điều đó rất tốt. Tôi mong bạn sẽ tiếp tục phát triển thành một nhà phát triển giỏi. Cảm ơn bạn.

  • sooragenius6352님의 프로필 이미지
    sooragenius6352

    Đánh giá 3

    Đánh giá trung bình 5.0

    5

    98% đã tham gia

    Tôi đã mua khóa học và muốn xem ngay lập tức để viết đánh giá, nhưng thời gian trôi qua và giờ tôi mới có thể để lại phản hồi. Nước mắt.. 😢 Một lần nữa tôi có thể cảm nhận được rằng câu nói 'khóa học của thầy Toby luôn đáng tin cậy' không phải là nói suông!!! Gần đây, nhiều developer ngày càng quan tâm đến kiến trúc hexagonal và có rất nhiều cuộc thảo luận xung quanh chủ đề này. Tuy nhiên, cũng có không ít hiểu lầm về khái niệm này. Nhưng trong khóa học này, để giải tỏa những hiểu lầm đó, thầy đã từng bước chỉ ra từ định nghĩa kiến trúc, và giải thích một cách logic tại sao cần có cấu trúc như vậy, điều này thực sự ấn tượng. Đặc biệt, không chỉ dừng lại ở lý thuyết mà còn giải thích kèm với các ví dụ thực tế nên tôi hiểu rõ hơn rất nhiều. Ngoài ra, nhiều người thắc mắc và đôi khi bối rối về việc các annotation JPA như @Entity, @Column xâm nhập vào domain model. Trong khóa học này, thầy đã chia sẻ những suy nghĩ sâu sắc về vấn đề đó và đưa ra hướng giải quyết thực tế, điều này thực sự tuyệt vời. Cách tiếp cận trực diện những băn khoăn thường gặp trong thực tế, từng bước phân tích và giải thích về trade-off phù hợp thực sự ấn tượng! Tuyệt vời nhất. Và khi phát triển, độ phức tạp ngày càng tăng, và thường thì chúng ta sẽ mất dấu flow của chính hệ thống mình tạo ra. Nhưng trong khóa học, thầy đã hệ thống hóa cách xử lý độ phức tạp đó, tầm quan trọng của việc sắp xếp độ phức tạp, và cách tiếp cận phát triển dựa trên nền tảng đó thực sự ấn tượng. Những phần này chứa đựng nội dung thực tế khó thấy ở các khóa học khác. Tôi cảm thấy như được làm cùng team với thầy Toby trong một dự án thực tế, mức độ몰입 rất cao. Và điều tuyệt vời nhất là, thay vì vội vàng đưa ra đáp án, thầy cùng suy nghĩ và từng bước cải thiện. Cách này rất giống với môi trường phát triển thực tế, nên không chỉ đơn thuần tiếp nhận kiến thức mà còn có thể tự nhiên nắm bắt được quan điểm nhìn nhận vấn đề trong thực tế. Thực sự là trải nghiệm thú vị khi nghe khóa học. Khi xem khóa học, những ngày phát triển trong quá khứ lướt qua và tạo ra dopamine, khiến tôi nhớ thời đó. Thực sự mong chờ khóa học tiếp theo! Thực sự quá quá quá quá thú vị! Cảm ơn thầy rất nhiều vì đã cho ra mắt khóa học quý báu như thế này!

    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!

    2.531.858 ₫