Bỏ qua đến nội dung chính
Clinford Jordano Valencia
Tất cả dự án
Nền tảngWebDi động

Nền tảng telemetry frontend thời gian thực

SDK frontend có kiểu dữ liệu và pipeline sự kiện giúp các luồng người dùng nhiều bước có khả năng quan sát theo thời gian thực, rút thời gian phát hiện sự cố từ vài ngày xuống vài phút.

Công nghệ
TypeScript · BFF · Event streaming · Columnar storage · Dashboards

Vấn đề

Một số người dùng lặng lẽ bỏ dở giữa một luồng dài nhiều bước. Khi tích hợp với bên thứ ba hỏng, không ai thấy: chẩn đoán đồng nghĩa với việc đọc thủ công những log máy chủ rời rạc và mất vài ngày. Mỗi ngày như vậy là những người dùng thật không thể hoàn tất.

Cách tiếp cận

  • Một SDK nhỏ, có kiểu dữ liệu. Một tracker TypeScript thu thập cùng một loại dữ liệu hành động của người dùng trên mọi màn hình và nền tảng, nên một sự kiện có cùng ý nghĩa ở mọi nơi.
  • Giới hạn tần suất kèm van an toàn. SDK gom sự kiện theo lô và gửi khi bộ đếm giờ ngắn hoặc giới hạn kích thước đến trước. Một request cho mỗi lần nhấp sẽ làm cạn các luồng mạng của trình duyệt; giữ sự kiện lâu hơn thì có nguy cơ mất khi đóng tab, nên khi trang bị đóng sẽ dùng navigator.sendBeacon.
  • BFF biết kiểm tra. Các lô sự kiện đến Backend for Frontend, nơi kiểm tra schema theo định nghĩa TypeScript, kiểm tra tính hợp lý của dấu thời gian, loại bỏ trường bất ngờ và dữ liệu cá nhân, rồi gắn metadata phiên. So sánh phán quyết của backend với những gì giao diện hiển thị đã làm lộ ra các chỗ lệch trạng thái giữa hai bên.
  • Pipeline streaming vào kho lưu trữ dạng cột. Streaming hấp thụ các đợt tăng lưu lượng, còn kho dạng cột trả lời các phép tổng hợp trên tập sự kiện rất lớn, độ đa dạng cao trong vài mili giây, trong khi kho dạng hàng chạy rất chậm.
  • Xử lý lỗi một cách lặng lẽ. Nếu pipeline ngừng hoạt động, SDK giữ một bộ đệm nhỏ ở máy và một circuit breaker thụ động tạm dừng việc gửi. Nó không ping máy chủ để kiểm tra tình trạng; nó chờ phản hồi thành công tiếp theo.

Kết quả

Thời gian phát hiện sự cố giảm từ vài ngày xuống dưới 5 phút. Khi một bước hỏng đồng nghĩa với nhiều lượt thất bại, đó là khác biệt giữa một dòng ghi chú trong postmortem và một bản sửa ngay trong buổi sáng.