Cross-Part Practice · Biên tập 19/09/2026

Practice Execution Playbook

Mục tiêu của thực hành không phải “chạy được lệnh”, mà là biến kiến thức thành bằng chứng: bạn dự đoán điều gì, hệ thống thực sự làm gì, bạn quan sát bằng công cụ nào và từ đó giải thích được cơ chế.

Nắm nhanh trước khi học · Vòng học chuẩn: Dự đoán → Thực thi → Quan sát → Giải thích → Cố tình làm hỏng → Khôi phục. Nếu chỉ copy command rồi thấy PASS, bạn mới kiểm tra được tutorial chứ chưa kiểm tra được hiểu biết.

1. Trước khi chạy: viết điều bạn dự đoán

Trước mỗi lab, ghi 2–5 dòng: điều gì sẽ xảy ra, output hoặc trạng thái nào bạn mong đợi, và vì sao. Bước này buộc bạn dùng mental model trước khi nhìn kết quả.

2. Thực thi: làm cho lần chạy có thể tái hiện

Một lần chạy đáng tin phải ghi rõ môi trường. Tối thiểu giữ version, command, input/config và file thay đổi. Với bài phụ thuộc timing hoặc concurrency, chạy nhiều lần và ghi điều kiện tải.

# Ví dụ evidence tối thiểu
java -version
./mvnw -version
./mvnw test

# Hoặc với hạ tầng
kubectl version
kubectl get pods -A
kubectl describe pod <name>

3. Quan sát: đừng chỉ nhìn dòng cuối

Nhóm bàiBằng chứng nên giữCâu hỏi phải trả lời
Java/JVMjavap, JFR, thread dump, heap/class histogram, stdout/stderrĐiều source code gợi ý có khớp bytecode/runtime evidence không?
Springstartup log, bean/proxy type, Actuator, transaction log, test resultLời gọi có đi qua container/proxy boundary không?
PostgreSQL/RedisEXPLAIN (ANALYZE, BUFFERS), locks/waits, transaction timeline, persistence/restart resultCorrectness và performance đang bị chi phối bởi cơ chế nào?
API/Networkcurl -v, headers, timing, DNS/TLS evidence, trace/correlation idLỗi nằm ở name resolution, connection, TLS, HTTP hay application?
RabbitMQ/Kafkapublish/consume log, ack/offset, redelivery, DLQ, lagMessage có thể duplicate/mất/đảo thứ tự trong phạm vi nào?
Docker/Kubernetesimage digest, manifest, events, describe/logs, rollout status, resource usageDesired state khác observed state ở bước nào?
Observabilitydashboard query, log filter, trace id, profile snapshotSignal nào xác nhận hoặc bác bỏ giả thuyết?

4. Cố tình làm hỏng

Lab tốt luôn có failure case. Tắt dependency, đổi timeout, tạo duplicate request, dùng input sai, làm consumer crash giữa chừng hoặc thay resource limit. Sau đó quan sát hệ thống thất bại theo cách nào và có khôi phục được không.

Nguyên tắc: chỉ phá trong môi trường lab/local/QA được phép. Không chạy fault injection tùy ý lên hệ thống dùng chung hoặc production.

5. Viết kết luận bằng ngôn ngữ phỏng vấn

Sau lab, viết hai phiên bản:

Ví dụ khung trả lời: “Cơ chế X giải quyết Y bằng cách Z. Trong lab tôi cố tình tạo lỗi A và quan sát B bằng công cụ C. Điều đó cho thấy giới hạn/trade-off D; trong production tôi sẽ theo dõi E và có phương án recovery F.”

6. Evidence Pack tối thiểu

7. Cách dùng với curriculum này

Mỗi Part có trang Thực hành và nhiều Part có Execution Labs. Dùng playbook này như quy tắc chung, sau đó thực hiện lab chuyên ngành trong Part. Khi ôn phỏng vấn, ưu tiên những lab bạn có thể tự kể lại từ dự đoán đến failure/recovery thay vì cố ghi nhớ toàn bộ command.

Nguồn chuẩn để đối chiếu cách làm evidence

JUnit User Guide · test execution và reporting.

Kubernetes · Debug Applications · workflow quan sát và chẩn đoán workload.

Google SRE Book · troubleshooting, incident response, monitoring và reliability practice.

Git Documentation · giữ thay đổi/evidence có thể review và tái hiện.