Bắt đầu với DDD: Tạo dự án thực tế với Spring Boot

Bạn đã bao giờ bắt đầu học DDD nhưng lại cảm thấy mông lung không biết phải bắt đầu dự án thực tế như thế nào chưa? Trong khóa học này, chúng ta sẽ cùng nhau xây dựng từng bước một, từ "môi trường phát triển đến cấu trúc dự án để áp dụng DDD (Domain Driven Design)". Dựa trên Spring Boot, Java 21, Gradle và PostgreSQL, chúng ta sẽ "trực tiếp thiết lập môi trường phát triển thực tế để có thể bắt đầu thiết kế DDD", đồng thời cùng nhau tìm hiểu toàn bộ quy trình về cách bắt đầu và thiết kế một dự án DDD. Đây không chỉ là những lời giải thích lý thuyết đơn thuần, mà là quá trình "nắm bắt điểm khởi đầu của thiết kế DDD thông qua việc xây dựng một dự án thực tế". Dành cho những ai muốn học DDD nhưng còn đang bối rối không biết bắt đầu từ đâu, đây sẽ là một "môi trường dự án hoạt động thực tế".

4 học viên đang tham gia khóa học này

Độ khó Cơ bản

Thời gian 2 tháng

Java
Java
REST API
REST API
Spring Boot
Spring Boot
MSA
MSA
backend
backend
Java
Java
REST API
REST API
Spring Boot
Spring Boot
MSA
MSA
backend
backend

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

  • Bạn có thể tự mình xây dựng môi trường phát triển dựa trên Spring Boot để có thể bắt đầu thiết kế DDD.

  • Bạn có thể hiểu được cấu trúc dự án cơ bản và luồng thiết kế để bắt đầu một dự án DDD.

  • Bạn có thể tự mình tạo ra một nền tảng dự án hoạt động thực tế để học tập về DDD.

Giới thiệu khóa học

Khóa học này tập trung vào dự án Java backend dựa trên Spring Boot,
bắt đầu từ thiết kế REST API và dần dần mở rộng sang quy trình cấu trúc DDD và MSA.

Và cùng với các khái niệm cốt lõi của DDD (Domain Driven Design),
chúng ta sẽ hiểu toàn bộ quy trình thiết kế domain dựa trên cấu trúc Clean Architecture / Hexagonal Architecture.


Tại sao cần DDD?

Trong cấu trúc Monolithic truyền thống, các vấn đề sau đây thường phát sinh:

  • Logic kinh doanh và mã kỹ thuật bị trộn lẫn với nhau

  • Phạm vi ảnh hưởng khi thay đổi trở nên lớn hơn

  • Quy tắc domain ngày càng trở nên mờ nhạt

DDD đề xuất phương pháp thiết kế lấy domain làm trung tâm
để giải quyết những vấn đề này.



Hiểu cấu trúc tổng thể (Cốt lõi)


1. Cấu trúc Clean Architecture

  • Entities (Cốt lõi của domain)

  • Use Case (Logic nghiệp vụ)

  • Interface Adapter (Controller, Presenter, v.v.)

  • Framework (DB, Web, v.v.)

Quy tắc cốt lõi:

👉 Sự phụ thuộc luôn hướng từ bên ngoài vào bên trong

Nói cách khác,
DB hay hệ thống bên ngoài không cần biết về domain nhưng
domain không được phụ thuộc vào công nghệ bên ngoài.


2. Hexagonal Architecture (Ports & Adapters)

Cấu trúc cụ thể hơn như sau:

  • Application Core

    • Use Case

    • Thực thể (Entity)

  • Input Port / Output Port

    • Giao diện kết nối với bên ngoài

  • Adapter

    • Web Adapter (Controller)

    • Persistence Adapter (DB)

    • Adapter hệ thống bên ngoài

Khái niệm cốt lõi:

👉 Logic nghiệp vụ chỉ kết nối với bên ngoài thông qua các cổng (port)


Tổng hợp các thành phần cốt lõi

Entity

  • Đối tượng cốt lõi của domain

  • Bao gồm các quy tắc kinh doanh

  • Hoàn toàn tách biệt với công nghệ bên ngoài

Use Case

  • Thực hiện logic dịch vụ thực tế

  • Thực hiện chức năng bằng cách kết hợp các Entity

Port

  • Giao diện kết nối với bên ngoài

  • Ranh giới mà Application phụ thuộc vào

Adapter

  • Mã công nghệ thực tế triển khai Port

  • Phụ trách kết nối DB, API và hệ thống bên ngoài


Khái niệm Bounded Context

Ngay cả khi dùng cùng một thuật ngữ, ý nghĩa vẫn có thể thay đổi tùy theo ngữ cảnh.

Ví dụ:

  • Đơn hàng (Order) = Quan điểm tạo đơn hàng

  • Đơn hàng (Order) = Quan điểm xử lý thanh toán

Vì vậy
👉 việc tách biệt các mô hình theo từng ngữ cảnh sẽ giúp giảm bớt độ phức tạp


Tóm tắt (Nội dung cốt lõi của bài học này)

Điều cốt lõi mà bạn nhất định phải nắm vững trong bài học này là như sau.

  • Miền giá trị (Domain) luôn phải nằm ở vị trí trung tâm

  • Logic kinh doanh phải được tách biệt khỏi mã kỹ thuật

  • Các hệ thống bên ngoài chỉ được kết nối thông qua Adapter

  • Lý do chia cấu trúc là vì “khả năng bảo trì và tính mở rộng”


Hướng dẫn bước tiếp theo

Bây giờ, trong bài học tiếp theo
👉 dựa trên cấu trúc Monolithic hiện tại
👉 chúng ta sẽ thực hiện quá trình tái cấu trúc (refactoring) sang cấu trúc DDD thực tế.

Điểm mấu chốt là kết nối luồng áp dụng vào mã nguồn
trong khi đã hiểu rõ các khái niệm.

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

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

  • Nhà phát triển muốn học DDD nhưng chưa biết phải bắt đầu dự án như thế nào.

  • Nhà phát triển backend muốn lần đầu tiên thử tạo dự án DDD dựa trên Spring Boot

  • Nhà phát triển muốn học cấu trúc dự án DDD có thể áp dụng vào thực tế và cách bắt đầu.

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

  • Hiểu cú pháp cơ bản của Java

  • Kinh nghiệm sử dụng Spring Boot cơ bản

Xin chào
Đây là truthplumage1363

Lập trình viên 15 năm kinh nghiệm · Lập trình viên đã tạo ra cấu trúc thu nhập 10 triệu won mỗi tháng

Tôi không chỉ đơn thuần dạy lập trình.
Tôi cung cấp các tiêu chí để bạn có thể đánh giá liệu “phát triển phần mềm có phải là con đường dành cho mình hay không”.

Tôi cùng bạn thiết kế chiến lược sự nghiệp thực tế dành cho những người không chuyên, người đang tìm việc và những ai đang cân nhắc chuyển đổi nghề nghiệp.

Thêm

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

Tất cả

16 bài giảng ∙ (2giờ 25phú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á

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

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!

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

20 ₫

48%

1.044.612 ₫