Inside Atlassian's Forge Billing Architecture for Distributed Usage Tracking at Scale
KẾT LUẬN
Atlassian đã xây dựng nền tảng Forge Billing để giải quyết bài toán theo dõi và tính cước usage-based pricing ở quy mô lớn cho hệ sinh thái serverless của mình. Kiến trúc sử dụng pipeline phân tán gồm nhiều tầng: services phát sinh event → Streamhub (Kafka-based) → UTS (Usage Tracking Service) để validate, normalize, enrich, deduplicate → Plato data lake (cold tier + hot tier StarRocks) → hệ thống billing/Commerce. Hệ thống xử lý ~300M events/ngày (dự kiến 1B events/năm) với cơ chế idempotent key, last-write-wins cho gauge metrics, event-time windowing qua Flink để đảm bảo không tính trùng, không thất thoát, và có thể truy vết ngược (auditability) từ hóa đơn về đến raw events gốc — đáp ứng yêu cầu khắt khe về tài chính và minh bạch cho developer.
LUẬN ĐIỂM CHÍNH
- [UTS (Usage Tracking Service) là trung tâm thần kinh của toàn hệ thống: nhận events từ Streamhub, validate theo schema chuẩn, enrich context (app ID, installation), deduplicate qua idempotency key, và đảm bảo sự kiện gắn đúng entitlement/subscription context trước khi chuyển xuống billing
- Pipeline dữ liệu hai tầng: cold tier (append-only, immutable) lưu toàn bộ raw events phục vụ audit và backfill; hot tier (StarRocks) lưu dữ liệu đã aggregate và được tối ưu query, phục vụ dashboard và API cho developer
- Chiến lược nhất quán phân tán: counter metrics dùng idempotency key + windowing để sum an toàn; gauge metrics (storage GB-hours) dùng last-write-wins trong window rồi tính time-weighted aggregation, đảm bảo idempotent, deterministic, và explainable
- Mô hình Developer Space: mỗi Developer Space map 1:1 với billing account, mỗi app là một Commerce entitlement, tất cả charges gộp vào một invoice duy nhất — giúp developer có một hóa đơn tổng hợp với breakdown theo từng app]
LUẬN ĐIỂM PHỤ
- [Forge chuyển từ mô hình extension đơn giản sang usage-based pricing, đòi hỏi tracking chi tiết đến từng function invocation, storage, và telemetry
- StreamHub hoạt động như managed event bus: services gửi event qua HTTP/REST, StreamHub validate JSON schema rồi persist vào Kafka, decouple hoàn toàn producer-consumer]
LUẬN CỨ & VÍ DỤ
- [Hệ thống hiện xử lý ~300 triệu usage events/ngày, dự kiến vượt 600 triệu trong 6 tháng và 1 tỷ events/năm — chứng minh khả năng scale ngang của kiến trúc pipeline
- Cơ chế deduplication: dùng usageUniqueId làm idempotency key, nếu cùng một logical event được gửi lại (do retry/replay), UTS nhận diện qua unique ID và discard, đảm bảo không double-count → áp dụng cho counter metrics như function invocations
- Storage billing: UTS không hỗ trợ gauge metric trực tiếp nên chuyển về counter tương đương bằng cách lấy mẫu bytes stored định kỳ, áp dụng last-write-wins trong cùng partition+window, rồi tính GB-hours = time-weighted evolution của giá trị đó trong giờ]
Nguồn: InfoQ | Phân tích bởi AI
Ban thay bai viet nay the nao?
Bình luận (0)
Bài viết liên quan
Gợi ý dựa trên điểm tương quan phân cấp và danh mục chung
Không có bài viết nào đạt ngưỡng tương quan này. Hãy thử kéo thanh trượt sang trái.
--- Het ---