Module 01 · Completed

Scope & Course Architecture

Khóa scope, baseline phiên bản, cấu trúc giáo trình, terminology, repository và Definition of Done.


1. Mục tiêu và đối tượng học

Giáo trình dành cho Java backend developer đã nắm Java syntax, OOP, collections, exception, Maven/Gradle và REST cơ bản. Người học không cần biết Reactive trước.

Đích đến: hiểu bản chất concurrency → async composition → non-blocking I/O → event loop → Reactive Streams → Reactor → WebFlux → Vert.x; sau đó triển khai hai capstone cùng domain và benchmark công bằng.

Không phải mục tiêu

  • Không biến tài liệu thành API reference.
  • Không khẳng định Reactive luôn nhanh hơn.
  • Không dạy WebFlux/Vert.x như hai phiên bản nối tiếp nhau.

2. Baseline phiên bản

Thành phầnBaselineLý do
JavaJava 25 LTSỔn định cho giáo trình dài hạn; có Virtual Threads chính thức và API concurrency hiện đại.
Spring Framework7.0.x stableNhánh stable hiện hành; WebFlux là reactive web stack chính thức.
Spring Boot4.1.x stableBaseline runtime cho capstone WebFlux; version cụ thể được khóa ở project BOM.
Reactor Core3.8.x stableReactive foundation dùng bởi WebFlux.
Vert.x5.1.x stableDùng API Vert.x 5 hiện hành, ưu tiên VerticleBase và Future-based API.
Reactive Streams1.0.4JVM specification/TCK hiện hành.

Nguyên tắc: giáo trình ghi “family baseline” ở phần lý thuyết, còn source code project khóa patch version trong build file để reproducible.

3. Kiến trúc giáo trình

Java Concurrency
      ↓
CompletableFuture
      ↓
Java NIO / Event Loop
      ↓
Reactive Streams
      ↓
Project Reactor
      ↓
Spring WebFlux
      ↓
Vert.x Core / Web / Data
      ↓
Production Reactive Systems
      ↓
2 Capstone Projects
      ↓
Benchmark + Trade-off Analysis

Mỗi abstraction chỉ được giới thiệu sau khi người học đã thấy vấn đề mà abstraction đó giải quyết.

4. Chapter template chuẩn

  1. Mục tiêu học.
  2. Vấn đề thực tế.
  3. Lý thuyết Thuần Việt.
  4. Mental model.
  5. Sơ đồ.
  6. Minimal example.
  7. Ví dụ sai.
  8. Giải thích nguyên nhân.
  9. Production considerations.
  10. Lab.
  11. Bài tập.
  12. Debug exercise.
  13. Interview questions.
  14. Checklist + recap.
Writing unit: một subtask nên tạo ra 3–8 trang hoàn chỉnh, không chia quá vụn.

5. Cấu trúc repository mục tiêu

reactive-java-course/
├── index.html
├── styles.css
├── reactive-java-webflux-vertx-course-brief.md
├── epic-a-course-architecture.html
├── epic-b-official-source-map.html
├── epic-c-java-concurrency.html
├── epic-d-completable-future.html
├── epic-e-nio-event-loop.html
├── parts/
├── examples/
│   ├── concurrency/
│   ├── completable-future/
│   ├── nio/
│   ├── reactor/
│   ├── webflux/
│   └── vertx/
├── labs/
├── capstone-webflux/
├── capstone-vertx/
└── benchmark/

6. Quy ước thuật ngữ

TermCách dùng
ConcurrencyDùng “đồng thời (concurrency)” khi xuất hiện đầu; sau đó ưu tiên term tiếng Anh nếu dịch gây nhập nhằng.
Parallelism“song song (parallelism)” — luôn phân biệt với concurrency.
Blocking / Non-blockingGiữ nguyên term, giải thích bằng hành vi thread/I/O.
Event LoopGiữ nguyên tên; không dịch thành “vòng lặp sự kiện” trong code/diagram nếu làm khó đọc.
BackpressureGiữ nguyên term, giải thích là cơ chế consumer điều tiết tốc độ producer.
Future / Publisher / SubscriberGiữ nguyên tên API/contract.

7. Definition of Done

  • ☑ Theory hoàn chỉnh và đúng version.
  • ☑ Có mental model và diagram khi phù hợp.
  • ☑ Sample code compile hoặc được đánh dấu pseudo-code.
  • ☑ Có anti-pattern nếu topic dễ sai.
  • ☑ Có lab/exercise + answer key.
  • ☑ Có official source.
  • ☑ Technical review + Vietnamese editorial review.
  • ☑ Không trộn async/reactive/non-blocking/parallelism thành một khái niệm.

8. Milestones

M1 Foundation

Concurrency → CompletableFuture → NIO/Event Loop → Reactive Streams.

M2 Reactor

Mono/Flux, operators, scheduler, backpressure, test.

M3 WebFlux

Reactive backend production-style.

M4 Vert.x

Verticle, Context, Future, Event Bus, Web/Data.

M5 Capstone

Hai implementation cùng spec.

M6 Benchmark

Reproducible metrics + trade-off report.