# Thiết kế hệ thống

- [Batch và stream là gì? Hiểu nhanh qua một mô phỏng](https://learn.chabulab.com/vi/system-design/batch-va-stream-la-gi.md): Batch gom dữ liệu rồi xử lý một lần, stream xử lý ngay khi dữ liệu đến. Tự chạy mô phỏng để thấy cái giá của mỗi cách, kèm bảng so sánh và ví dụ thực tế.
- [Nên chọn batch hay stream cho bài toán của bạn?](https://learn.chabulab.com/vi/system-design/chon-batch-hay-stream.md): Chọn một bài toán thực tế để xem nên dùng batch, stream hay kết hợp cả hai và vì sao. Kèm quy tắc chọn nhanh và hai kiến trúc Lambda, Kappa.
- [Công nghệ xử lý dữ liệu: chọn gì theo ngôn ngữ và cloud](https://learn.chabulab.com/vi/system-design/cong-nghe-xu-ly-du-lieu.md): Spark, Flink, Kafka, Airflow và các dịch vụ trên Cloudflare, AWS, Google Cloud, Azure làm gì. Chọn theo ba lớp: tiêu chuẩn ngành, cloud, ngôn ngữ.
- [Cửa sổ thời gian, event time và dữ liệu đến trễ trong stream](https://learn.chabulab.com/vi/system-design/cua-so-thoi-gian-va-du-lieu-den-tre.md): Dòng dữ liệu vô hạn không thể cộng tổng một lần. Xem demo cửa sổ cố định, trượt và phiên, rồi hiểu event time, watermark và cách tránh xử lý trùng.
- [Dựng pipeline xử lý dữ liệu rẻ bằng TypeScript trên Cloudflare, AWS](https://learn.chabulab.com/vi/system-design/dung-nhanh-re-xu-ly-du-lieu-bang-typescript.md): Nhận đơn, xử lý theo lô nhỏ và tổng hợp mỗi đêm chỉ trong một Worker. Kèm bảng giá theo cấp, mẫu cho AWS và prompt để giao việc này cho AI.
- [Dựng pipeline batch bằng Spark và stream bằng Kafka, Flink](https://learn.chabulab.com/vi/system-design/dung-pipeline-spark-flink.md): Các bước dựng một pipeline batch với PySpark, Airflow và một pipeline stream với Kafka, Flink SQL, kèm code mẫu, cách chạy lại an toàn và lộ trình học tiếp.
- [Rate limiting là gì? Cửa sổ cố định, cửa sổ trượt và xô token](https://learn.chabulab.com/vi/system-design/gioi-han-toc-do-rate-limiting.md): Ba cách từ chối request khi khách gửi quá nhiều. Chạy cả ba trên cùng một luồng request, xem cách nào để lọt cú dồn, rồi trả mã 429 cho đúng.
