Blog
Lập trình

Inside Atlassian's Forge Billing Architecture for Distributed Usage Tracking at Scale

3 phut doc0 luot xem

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

Ngưỡng tương quan tối thiểu:30%
Tất cả (0%)Tương quan mạnh (70%+)

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 ---