Đánh giá mức sẵn sàng làm Business Analyst
Chấm từng chiều kỹ năng và cho ra hồ sơ — biết mình đứng ở đâu trước.
Làm bài này
Product Management
Real-time là lựa chọn có chi phí, không phải mặc định — và mất kết nối là trạng thái bắt buộc phải spec.
Đăng nhập để đánh dấu kỹ năng và theo dõi tiến độ.
Làm bài Đánh giá Nền tảng Kỹ thuật cho PM/BA — 3 người đã làm. Một lần làm chấm điểm cho tất cả kỹ năng trong nhóm Technical Basics, không chỉ kỹ năng này.
Làm bài đánh giáReal-time (giá đang đổi, trạng thái live) cần một kết nối luôn mở cho mỗi người dùng — tốn kém, nên là lựa chọn chứ không phải mặc định.
Phân biệt feature nào thật sự cần real-time vs refresh định kỳ; spec trạng thái mất kết nối: người dùng có biết không, dữ liệu có tự đồng bộ lại không.
Real-time nghĩa là màn hình tự đổi mà người dùng không phải làm gì cả. Để làm được điều đó, cần một kết nối mở sẵn giữa máy chủ và từng người dùng — cơ chế phổ biến nhất tên là WebSocket. Kết nối mở từ lúc người dùng vào màn hình và giữ nguyên, nên máy chủ có thể đẩy tin xuống bất cứ lúc nào.
Cách thông thường thì ngược lại: trình duyệt hỏi, máy chủ trả lời, kết nối đóng. Muốn dữ liệu mới thì phải hỏi lại — hoặc do người dùng kéo màn hình để làm mới, hoặc do app tự hỏi theo chu kỳ.
Hệ quả quan trọng nhất với BA/PO: mỗi người đang mở màn hình là một kết nối máy chủ phải giữ. 10.000 người xem cùng lúc là 10.000 kết nối, kể cả khi cả tiếng không có gì thay đổi. Đó là chi phí hạ tầng thật, và là lý do real-time phải được chọn có lý do chứ không phải bật mặc định cho mọi màn hình.
| Khái niệm | Nghĩa là gì | Dấu hiệu bạn đã hiểu |
|---|---|---|
| WebSocket | Kết nối hai chiều mở liên tục giữa app và máy chủ. | Bạn biết chi phí của nó tăng theo số người đang mở màn hình. |
| Server push | Máy chủ chủ động gửi xuống, app không phải hỏi. | Bạn không còn viết "app tự gọi API mỗi giây" trong spec. |
| Làm mới định kỳ | App hỏi lại theo chu kỳ cố định (15s, 30s, 5 phút). | Bạn biết chu kỳ chính là độ trễ tối đa người dùng thấy. |
| Reconnect | Kết nối đứt thì app tự mở lại sau vài giây. | Bạn hỏi thêm: "nối lại rồi có lấy bù phần bị lỡ không?" |
| Đồng bộ lại (resync) | Tải lại toàn bộ dữ liệu sau khi mất kết nối. | Bạn spec riêng cho bước này, không coi là hiển nhiên. |
| Chỉ báo kết nối | Dấu hiệu cho người dùng biết dữ liệu còn sống hay đã đứng. | Màn hình của bạn không im lặng hiện số cũ như số mới. |
Tình huống: bạn mở hai app giao hàng, cả hai đều có màn hình theo dõi đơn. Bạn muốn biết màn hình nào đang chạy real-time.
Quan sát thật, không cần hỏi dev:
Bài kiểm tra 60 giây bạn tự làm được: mở màn hình, để yên, tuyệt đối không chạm vào. Nếu sau một phút nội dung tự đổi thì màn hình có cơ chế tự cập nhật; nếu không đổi cho tới khi bạn kéo làm mới thì không có. Sau đó hỏi dev đúng một câu để biết là loại nào: "màn này đang đẩy real-time hay tự hỏi lại theo chu kỳ?"
Học được: "real-time" không phải một từ khen, nó là một hành vi quan sát được. Trước khi viết nó vào spec, hãy nói được màn hình hiện tại đang thuộc loại nào — vì rất nhiều yêu cầu "làm real-time đi" thực ra chỉ cần đổi từ loại B sang tự làm mới.
Tình huống: chủ cửa hàng yêu cầu màn hình quản lý đơn phải báo ngay khi có đơn mới. Bạn phải chọn giữa real-time và tự làm mới mỗi 30 giây, và giải thích được lựa chọn đó.
| Tiêu chí | Real-time (kết nối mở) | Tự làm mới mỗi 30 giây |
|---|---|---|
| Người dùng thấy sau | Dưới 1 giây | Trung bình 15 giây, tối đa 30 giây |
| Tải lên máy chủ | 1 kết nối giữ mở cho mỗi người đang mở màn hình | 2 lượt hỏi mỗi phút cho mỗi người |
| Việc phải làm thêm | Xử lý mất kết nối, tự nối lại, đồng bộ bù | Gần như không có |
| Khi mạng chập chờn | Phải có chỉ báo và cơ chế nối lại | Lần hỏi kế tiếp tự khỏi |
Câu hỏi tách được vấn đề: "Chậm 30 giây thì cửa hàng mất gì?" Một shop 20 đơn mỗi ngày thì không mất gì — chuông báo cộng làm mới 30 giây là quá đủ. Một bếp quán ăn giờ cao điểm thì 30 giây làm lệch cả dây chuyền, và real-time xứng đáng với chi phí của nó.
Các dòng viết vào ticket khi chọn phương án 30 giây:
Học được: real-time không phải phiên bản "tốt hơn" của làm mới định kỳ; nó là một lựa chọn đắt hơn để đổi lấy vài chục giây. Việc của BA là quy chữ "ngay" thành một con số giây mà nghiệp vụ chịu được, rồi mới chọn cơ chế.
Tình huống: màn hình tồn kho thời gian thực cho nhân viên kho, chạy trên điện thoại, dùng ngay trong kho — nơi sóng chập chờn. Nhân viên đi vào khu vực không có sóng 4 phút rồi quay ra.
Cái bẫy: kết nối đứt lặng lẽ. Màn hình không báo lỗi, không quay vòng, không có gì khác thường — nó vẫn hiện số tồn kho của 4 phút trước, trông y hệt dữ liệu đang sống. Nhân viên đọc "còn 12 cái" và nhận đơn, trong khi thực tế đã hết từ ba phút trước. Đây là loại lỗi tệ nhất trong nhóm này: không ai biết là đang sai, kể cả người dùng lẫn hệ thống.
Ba câu hỏi bắt buộc phải trả lời trong spec:
Một dòng nữa mà chỉ BA nghĩ ra được: "Trong lúc mất kết nối, nút 'Nhận đơn' bị khoá kèm dòng giải thích, vì quyết định này dựa trên số tồn kho có thể đã cũ." Dev sẽ không tự viết dòng này — nó là một quyết định nghiệp vụ về việc chấp nhận rủi ro nào.
Học được: phần khó của real-time không nằm ở lúc nó chạy mà ở lúc nó ngừng chạy. Một màn hình real-time không có trạng thái mất kết nối còn tệ hơn một màn hình phải kéo để làm mới — vì màn hình kéo-làm-mới không bao giờ nói dối người dùng rằng số đang sống.
Với mỗi màn hình có dữ liệu thay đổi theo thời gian, ticket của bạn phải trả lời được bốn câu:
Chấm từng chiều kỹ năng và cho ra hồ sơ — biết mình đứng ở đâu trước.
Làm bài nàyHọc kỹ năng này ở đâu?
Có 2 khóa dạy đúng phần này, miễn phí và bằng tiếng Việt.
Thảo luận & tài liệu thêm 0
Chia sẻ kinh nghiệm, đặt câu hỏi, hoặc đính kèm tài liệu/YouTube giúp người khác học kỹ năng này.