
Mục lục bài viết 9 phần
Webhook receiver trả 200 không chứng minh nghiệp vụ đã xử lý đúng; timeout có thể khiến producer retry và tạo giao dịch trùng. Bài này đo từ lúc event được phát sinh đến khi side effect được xác nhận, bao gồm signature, queue, retry và idempotency.
Bài viết giúp bạn
- Webhook cần chứng minh điều gì?
- Topology và correlation
- Biến số phải kiểm soát
Webhook cần chứng minh điều gì?
#Chốt semantics: at-most-once, at-least-once hay guarantee riêng; điều kiện producer coi delivery thành công; retry schedule; retention; ordering; và trách nhiệm dedup. Nhiều hệ thống thực tế dùng at-least-once nên receiver phải chịu được duplicate.
Success phải gắn với business outcome, không chỉ HTTP status. Nếu receiver ghi database sau khi trả 2xx, hoặc xử lý xong nhưng response bị mất, hai phía có thể bất đồng về trạng thái.
Topology và correlation
#Topology gồm event producer, durable queue nếu có, delivery worker, network path/gateway, receiver, idempotency store và downstream database. Gắn event ID bất biến, delivery attempt ID riêng và correlation ID xuyên suốt.
Thu timestamp tại event creation, enqueue, send, receive, acknowledge và business commit. Đồng bộ thời gian hoặc ghi uncertainty để phân biệt queue delay, network latency và processing time.

Biến số phải kiểm soát
#Khóa timeout, retry count/backoff/jitter, concurrency, batch, queue retention, HTTP connection reuse, proxy timeout và response code mapping. Ghi signature algorithm, canonical payload, timestamp tolerance và key rotation overlap.
Traffic profile cần steady, burst và hot-tenant; payload size/type khác nhau; receiver có xử lý nhanh/chậm. Fault injection phải tách DNS, TCP/TLS, HTTP 429/5xx, timeout sau commit và process crash.
KPI và bằng chứng
#Đo p50/p95/p99 và worst case; phân biệt delivery attempt với unique event. Báo false reject do signature/clock và side effect trùng, không chỉ số HTTP 2xx/5xx.
- KPI: Delivery success · Định nghĩa: Event đạt business commit · Bằng chứng: Event ledger + DB
- KPI: End-to-end delay · Định nghĩa: Creation đến commit · Bằng chứng: Correlated timestamp
- KPI: Duplicate rate · Định nghĩa: Event ID commit hơn một lần · Bằng chứng: Idempotency audit
- KPI: Retry amplification · Định nghĩa: Attempts/event · Bằng chứng: Worker log
- KPI: Queue age · Định nghĩa: Tuổi event chưa hoàn tất · Bằng chứng: Queue metric
- KPI: Recovery time · Định nghĩa: Backlog về baseline · Bằng chứng: Timeline
Ma trận lỗi và quyết định
#- Kịch bản: Receiver chậm · Fault: Delay dưới/trên timeout · Kết quả mong đợi: Retry có kiểm soát
- Kịch bản: Commit rồi mất response · Fault: Drop response · Kết quả mong đợi: Không side effect trùng
- Kịch bản: HTTP 429 · Fault: Rate limit · Kết quả mong đợi: Tôn trọng Retry-After/chính sách
- Kịch bản: HTTP 5xx · Fault: Lỗi tạm · Kết quả mong đợi: Backoff+jitter đúng
- Kịch bản: Payload/signature sai · Fault: Tamper/old key · Kết quả mong đợi: Reject và log rõ
- Kịch bản: Queue backlog · Fault: Burst kéo dài · Kết quả mong đợi: Không mất event, phục hồi đo được
- Kịch bản: Receiver restart · Fault: Crash/redeploy · Kết quả mong đợi: Resume không reorder ngoài cam kết
Test plan theo từng pha
#Pha baseline xác minh một event–một commit. Pha load tăng event rate và payload; pha burst đo backlog. Pha resilience tiêm từng lỗi và xác minh retry ledger. Kịch bản quan trọng nhất là receiver đã commit nhưng producer không nhận response.
Pha recovery khôi phục receiver, đo drain rate, oldest-event age và downstream load. Kiểm tra dead-letter/replay bằng dữ liệu an toàn; replay không được tạo side effect lần hai.

Checklist nghiệm thu
#- Chốt delivery semantics, timeout và retry policy.
- Tách event ID, attempt ID và correlation ID.
- Kiểm tra commit-then-timeout và process crash.
- Đo unique success, duplicate, queue age và recovery.
- Kiểm tra signature, replay window và key rotation.
- Xác minh DLQ/replay không tạo side effect trùng.
- Lưu raw log, version và traffic profile.
Giới hạn kết luận
#Kết quả phụ thuộc producer, queue, receiver và downstream transaction model. HTTP 2xx chỉ phản ánh response tại một boundary. Không tuyên bố exactly-once nếu hệ thống chỉ đạt hiệu ứng tương đương nhờ idempotency.
Khái niệm cần nhớ
#- At-least-once: Event có thể được gửi nhiều lần.
- Idempotency: Lặp cùng yêu cầu không đổi kết quả cuối.
- DLQ: Hàng đợi cho event không xử lý được.
- Replay window: Khoảng thời gian chấp nhận thông điệp đã ký.
- Retry amplification: Một event tạo nhiều attempt.
Khái niệm cần nhớ
- DUT / SUT
- Thiết bị hoặc toàn bộ hệ thống đang là đối tượng của bài kiểm thử.
- Steady state
- Giai đoạn tải đã ổn định và đủ điều kiện để lấy số liệu đại diện.
- Pass / fail
- Kết luận dựa trên ngưỡng đã thống nhất, luôn đi cùng topology, cấu hình và điều kiện đo.
TÀI LIỆU ĐỐI CHIẾUTài liệu tham khảo3 nguồn +
Nội dung được biên soạn độc lập, theo hướng vendor-neutral và đối chiếu các tài liệu gốc dưới đây. Tính năng sản phẩm cần được kiểm tra lại theo phiên bản đang sử dụng.
NetVali ưu tiên nguồn tiêu chuẩn và tài liệu chính thức; phân biệt khuyến nghị triển khai với yêu cầu của tiêu chuẩn; không công bố thông số sản phẩm chưa gắn với phiên bản và điều kiện đo.
