Chuyển đến nội dung
Clinford Jordano Valencia
Tất cả dự án
Nền tảngWebDi động

Signal, nền tảng telemetry thời gian thực

SDK frontend có kiểu dữ liệu và đường ống sự kiện giúp các phễu KYC toàn cầu của Binance được theo dõi theo thời gian thực, rút ngắn việc chẩn đoán sự cố từ vài ngày xuống vài phút.

Vai trò
Senior Frontend Engineer
Thời gian
2025–nay
Công nghệ
TypeScript · Mini Program · BFF · Kafka · Flink · ClickHouse · Grafana

Vấn đề

Hàng triệu người ở hơn 100 quốc gia thực hiện xác minh danh tính, và một số âm thầm bỏ dở. Khi một tích hợp của nhà cung cấp bị hỏng, không ai nhận ra: chúng tôi đọc thủ công những log máy chủ rời rạc, và mỗi lần chẩn đoán mất từ một đến ba ngày. Mỗi ngày như thế là những người dùng thật không thể hoàn tất đăng ký.

Cách tiếp cận

  • Một SDK nhỏ, có kiểu dữ liệu. Một trình theo dõi TypeScript thu thập cùng một dữ liệu hành vi người dùng trên mọi màn hình, trên web, di động và Mini Program, nên sự kiện ở đâu cũng mang cùng một ý nghĩa.
  • Điều tiết có van an toàn. SDK xếp sự kiện vào hàng đợi và gửi đi mỗi 3 giây hoặc khi đủ 10 sự kiện, tùy điều nào đến trước. Gửi một yêu cầu 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 quá lâu lại có nguy cơ mất chúng khi đóng tab. Khi rời trang, SDK dùng navigator.sendBeacon.
  • Một BFF biết kiểm tra. Các lô sự kiện đi vào 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 lạ và dữ liệu cá nhân (PII), rồi gắn metadata phiên cùng kết luận của backend (đạt, bị từ chối, chờ duyệt). So sánh kết luận đó với những gì giao diện hiển thị đã làm lộ ra các chỗ trạng thái giữa giao diện và backend không khớp.
  • Kafka, Flink, ClickHouse, Grafana. Kafka hấp thụ các đợt tăng lưu lượng toàn cầu, Flink xử lý sự kiện theo thời gian thực, ClickHouse lưu trữ (lưu trữ dạng cột trả lời các phép tổng hợp trên hàng tỷ sự kiện có độ phân tán cao trong vài mili giây, trong khi lưu trữ dạng hàng thì rất chậm) và Grafana hiển thị các phễu.
  • Xử lý lỗi một cách lặng lẽ. Nếu đường ống ngừng hoạt động, SDK giữ tối đa 100 sự kiện trong localStorage và một bộ ngắt mạch thụ động tạm dừng việc gửi. Nó không gọi máy chủ để kiểm tra tình trạng mà 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ừ 24–72 giờ xuống dưới 5 phút. Với một phễu mà chỉ một bước của nhà cung cấp bị hỏng cũng đồng nghĩa hàng nghìn lượt đăng ký 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 buổi sáng hôm đó.