Hệ thống & kiến trúc
Kiến trúc frontend bền vững
Nhìn ứng dụng như một hệ thống: state machine, chiến lược xử lý lỗi, đồng bộ offline-first và feature flag — những quyết định giữ codebase khoẻ khi nó lớn dần.
5 phần35 phút đọcCập nhật 17 thg 1, 2026
Các phần
Phần 1
Tư duy hệ thống, đừng chỉ nghĩ theo màn hìnhỨng dụng frontend dễ vỡ khi ta thiết kế từng trang một. Một cẩm nang ngắn để vẽ state, luồng dữ liệu và quyền sở hữu trước khi vẽ UI.
2 phút
Phần 2
State machine cho UI: loại bỏ những trạng thái không thể xảy raVì sao isLoading, isError và data cùng tồn tại là mầm mống của bug, cách mô hình hoá UI bằng trạng thái và sự kiện, một state machine có type bằng useReducer cho luồng submit form, và khi nào nên dùng thư viện statechart.
7 phút
Phần 3
Chiến lược xử lý lỗi ở frontend: từ error boundary đến retry và báo cáo lỗiPhân loại lỗi trước khi xử lý, hiểu error boundary bắt được gì và không bắt được gì, retry đúng cách với backoff và jitter, tách thông báo cho người dùng khỏi log cho developer, và báo cáo lỗi mà không làm lộ dữ liệu cá nhân.
7 phút
Phần 4
Offline-first và optimistic UI: thiết kế đồng bộ không làm mất dữ liệuCập nhật lạc quan kèm rollback, outbox lưu trong IndexedDB, idempotency key, retry khi có mạng lại, các chiến lược giải quyết xung đột, hiển thị trạng thái đồng bộ và cách test kịch bản offline.
11 phút
Phần 5
Feature flag ở frontend: phân loại, đánh giá, rollout và dọn dẹpFeature flag giúp tách deploy khỏi release, nhưng dùng sai thì thành nợ kỹ thuật và giao diện nhấp nháy. Bài này đi qua bốn loại flag, đánh giá flag ở server hay client, định nghĩa flag có kiểu bằng TypeScript, rollout dần, A/B test và quy trình dọn flag.
8 phút